Eclipse中Android公共库的正确建立及调用方法

Eclipse中Android公共库的正确建立及调用方法

引言

之前一直头痛于没有办法在多个程序中共享资源,用作公共类库的方法也是使用的导出jar再导入的办法,现在终于初步搞明白了,可算解脱了~,分享出来。

建立公共库

首先建立公共库的Android项目,名为MyCoreLib:

完成后在左侧包浏览器里右键点选我们新建的这个项目,选择Properties项:

左侧选择Android分类,右侧勾选Is Library选项:

完成后在包资源管理器中删除默认生成的资源,以避免以后被引用时冲突:

打开AndroidManifest.xml,删除下图中红色部分代码:

添加测试用资源

至此初始的空库就建立完成了,现在我们来添加一个资源以供其他程序使用,我在这里仅添加了一个名为libName的字符串资源:

建立测试项目并引入公共库

现在新建一个名为LibTest的项目来尝试调用公共库:

还是右键点选项目,选择Properties:

还是左边选择Android分类,右边点击Add按钮选择以添加MyCoreLib类库到项目:

完成后即添加到项目中来了:

此时还能看到gen目录下也已经有MyCoreLib的包名及其资源ID了:

但此时你会发现字符串资源里莫名其妙多出两个之前已经删除的资源,这其实是因为此时已将引用的资源与程序默认包里的资源混编在一起了,你可以看到上面默认包里的资源ID和下面这里也是一模一样的。

换言之,你可以以使用本地资源的方式直接调用引用来的资源。

测试调用公共库的资源

比如在AndroidManifest.xml里这样修改:

在java代码中也同样是使用调用默认资源的方式直接调用即可,当然也可以显示加入公共库的包名以调用;但加入显示包名的方法在XML文件中行不通,多次尝试都提示找不到资源,也就是说在XML中只能以调用默认包资源的方式调用公共库资源。

编译并运行效果:

可以看到之前我们在公共库中设置的资源内容被正确显示出来了。

结语

这种调用方式不只是使资源调用成为可能,公共代码在编辑起来也比jar方式方便许多,非常实用。

之前网上寻找此方法许久都没获知,此时突然想起参考Scoreloop的引用方法,总算将其搞明白了。

时间: 2024-10-07 09:22:19

Eclipse中Android公共库的正确建立及调用方法的相关文章

Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公

最新内容建议直接访问原文: Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类) 总结的一些android公共库,包含缓存(图片缓存.预取缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及工具类(下载管理.静默安装.shell工具类等等). 具体使用可见总结的一些android公共库.Demo APK地址见TrineaAndroidDemo,主要包括: 一. 缓存类 主要特

android-关于eclipse中Android项目导入jar包的问题

问题描述 关于eclipse中Android项目导入jar包的问题 本人刚刚开始自学Android robotium自动化测试. 学习写一个计算器测试的例子, 可是新建完Android Test Project(已导入源代码), 在工程下创建了libs文件夹,可是右键Build Path这一项中没有"add to build path"这一项 另外有人告诉了我右键工程也可以直接添加jar包,我想知道右键直接在工程中添加跟新建文件夹添加有何区别? 求大神指教!!! 解决方案 eclips

eclipse中Android模拟器常见的问题解决方法汇总

[eclipse中Android模拟器,DDMS看不到设备] 在eclipse中启动模拟器AVD后,刚启动的时候,在控制台会看到相关的设备,在DDMS中也会有设备列表,只不过是offline的,但等到完全启动开的时候,DDMS中什么也没有,而且用adb命令adb devices查看设备,也没有任何设备. 一般情况下,重启电脑就可解决.我要说的是不重启电脑的方法:1. 打开cmd命令行,切换到adb命令目录,如果你已经加入了环境变量,切换目录就省了. 2. 输入命令:adb kill-server

android 程序运行-eclipse中android模拟器运行项目,需手动才能看到结果

问题描述 eclipse中android模拟器运行项目,需手动才能看到结果 如题!!!!!!!!!!!!!!!!!!!!!!! eclipse中android模拟器运行源程序,run as 之后,只是安装apk文件,仍需手动点击才能看到结果,为何? run as 之后console一直处于如下状态 [2014-03-06 17:27:44 - investly_android_phone] Installing investly_android_phone.apk... [2014-03-06

c#中,静态函数可以实现正确的递归调用吗?

问题描述 c#中,静态函数可以实现正确的递归调用吗? 菜鸟问题.实际是二个问题:首先,我试了一下,静态函数可以进行自身调用,但其参数无变化,未达到递归目的:所以第二个问题就成为:静态函数无法突现递归作用.各位老师,我的理解对吗?

ThinkPHP中Widget扩展的两种写法及调用方法详解

本文实例讲述了ThinkPHP中Widget扩展的两种写法及调用方法.分享给大家供大家参考,具体如下: Widget扩展一般用于页面组件的扩展,在页面根据需要输出不同的内容,下面介绍一下ThinkPHP中Widget的两种写法及调用 写法一: ArticlWidget.class.php文件: class ArticleWidget extends Widget { /** * * @param array $data * @return type * 调用方法:{:W('ArticleList

Eclipse中如何添加库?大侠请进

问题描述 我把一个随书光盘里的项目用Eclipse打开,运行时提示缺少本书类库,("本书类库"应该是一个库的名字,我觉得)我在随书光盘里找到了"本书类库文件夹",里面有bin(空的)src(空的)lib(有jar文件)还有个.classpath文件和.project文件.我曾尝试着在窗口->首选项->构建路径中添加用户库,并命名为"本书类库"然后在项目明上右键->构建路径->在库选项中添加"本书类库",

请教在Eclipse中运行JUnit Test不正确的问题

问题描述 各位好,我试图在Eclipse中运行一个JUnitTest,但是总是运行不起来.我的工程是从svn上检出的,同样的工程和同样的代码在别人的电脑上就可以运行,而我只是每次都得到如下显示,没有任何实质性的结果:2010-12-121:17:41org.springframework.context.support.AbstractApplicationContextprepareRefresh信息:Refreshingorg.springframework.context.support.

在eclipse中实现的秒表,秒表线程不调用sleep时有错误。

问题描述 try{Thread.sleep(1);}catch(InterruptedExceptione){e.printStackTrace();} 当不添加上述代码时,线程没有进入run函数中,也就是不会更新秒表的各个数据,但是调试过程中可以看到countState已经变化了.求大神解答,或者赐教怎么在eclipse中对线程进行调试的方法.秒表实现如下://为什么不加睡眠的时候有错误呢?//try{//Thread.sleep(100);//}catch(InterruptedExcept