【Android】lib依赖
通常一个大型项目由多个项目集成。那么android项目在集成时如何处理项目之间的依赖关系呢?
一个android项目通常由代码和资源文件组成。如果把代码和资源文件打成Jar包供其他工程使用,则Jar包中的资源文件将无法被打包到最终的APK文件中,致使程序无法正常运行。
Android为我们提供了另一种方案。
假设有一个base工程和A工程,A工程依赖base工程。
1.将base工程做成library工程。
在project.properties文件中加上
android.library=true
或者使用图形界面配置,右击工程——》Properties——》Android——》勾选Is Library
2.clear一下工程。
此时会发现,在bin目录下生成了一个Jar文件,该Jar文件包含编译后的class文件(不包含R文件)。再仔细观察Gen目录下的R文件,所有的常量都变成了变量(去掉了final关键字)。这是因为资源文件的ID在最终打包进APK文件时才会确定。所以,当一个工程被做成library工程时,只要switch case语句引用了R类,都必须改成if...else...语句(case后面只能跟常量)。
3.给A工程添加依赖
右击工程——》Properties——》Android——》Add
将base工程添加进来即可。
4.将base工程AndroidManifest.xml文件中的相关配置(Activity、Service等等)复制到A工程AndroidManifest.xml文件中。
至此,将base工程集成进A工程基本完成,base工程中的资源文件会自动打包到APK文件中。但是由于base工程中的资源文件与A工程中的资源文件会被打包到同一目录下,所以两个工程中的资源文件不能重名,否则base工程中的资源文件无法打包到APK中。
还可以参考android-support-v7-appcompat项目,再建一个工程base-lib,将步骤2中生成的Jar包拷贝到base-lib工程的libs目录下,再将base中所有的资源文件拷贝到base-lib中,然后只需要把base-lib添加到A工程就行了,就像添加base工程一样。这种方式很适合对外发布Android API。
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- 一款霸榜 GitHub 的开源 Linux 资源监视器!
- Android2.2中的APK安装参数installLocation
- 18 .Android中创建与几种解析xml的方法
- Android托管c++的log