文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处:http://blog.csdn.net/flowingflying/
上一次我们学习了通过共享UserID实现深度的代码和资源共享,实际上lib库,同样也可实现类似的功能。
什么是lib项目
lib项目和一般的项目一样是java代码和资源的集合,最终并不生产*.apk文件,而是作为其他项目的一部分,编译到其他项目的*.apk中。
一个lib项目有自己的包名,可以使用其他的JAR文件。目前一个lib项目并不能成为一个JAR文件,但在未来版本可能会支持。 一个lib库不能参考另一个lib库,但这也可能未来版本中支持。Eclipse ADT将lib的java源文件编译到一个JAR文件,然后在编译到应用项目中,并不是直接将原文件拿过来重新编译。
从SDK工具v15.0开始,lib项目中的资源ID不是final了。lib项目和主项目都可以通过各自的R.java来访问lib项目的资源。如果主项目和lib项目的资源ID重复,则主项目的优先。如果你要区分两个项目的资源ID,可以加上不同的前缀,例如lib_。
主项目可以使用任意数目的lib项目,可以设置各lib项目的优先级。lib中的组件(例如activity)需要在主项目的manifest文件中定义。我们并不一定要在lib的manifest中定义组件,但这样做会有更好的可读性。
小例子
小例子很简单,我们创造一个库,名字叫TestLib,实现一个简单的activity,名字为TestLibActivity。我们再建立一个App,名字叫TestUseLib,主Activity中点击菜单,则调起lib中的TestLibActivity。
Lib的实现
和普通的App相似,只是在创建的时候,指定为lib,如下图所示:
如果我们将project选择为library,我们将不能在模拟器上运行。为了检查代码是否正确,我们通常一开始作为普通的project,即App来创建,在检查一些正确后,在将项目的属性该为库。在Eclipse中,点击项目名按右键,然后选择Propertiest,进入对话框,将项目的属性修改为Library,如图所示:
这个TestLibActivity的代码实现很简单,就不在此列出,可以到我的资源下载。
相关小例子源代码可在Pro Android学习:了解package的小例子中下载。
相关链接: 我的Android开发相关文章