Android工程依赖:android中打包含有Activity以及资源文件的jar包在工程中调用
在开发java工程时,一个大的项目可能分为多个模块,为了实现模块间的解耦和独立,提高模块的复用性,通常将该项目按模块分为多个java工程进行开发,最后通过jar包等工程依赖的方式实现系统集成,提高模块的解耦和复用。
现在开发android项目,通过实践开发的总结,发现这种方式特别有必要。比如,开发一个android端视频应用,肯定有播放和下载模块,之前放在一个工程里,不断添加新的功能,产品里的每一个研发都不断改动和添加功能,最后维护越来越难,bug越来越多,并相互推诿。这种方式能避免这种情况,此为第一优点。
其二,下载模块是很多app都会用到的模块,独立出来,并不断完善和优化,可以变成一个通用组件,给不同的app使用,这就是提高了模块和代码的解耦,提高了复用性,提高了工作效率。现在很多公司都是这样做的。
比如,下拉刷新,android没有提供下拉刷新,很多项目为了实现android的下拉刷新,为集成开源的下拉刷新android项目。
那么,如果实现这种设计和需求呢?即已经有一个 Android工程 A 。 现在的工程 B 中 需要集成A工程作为一个模块?
首先想到 B工程中能否直接 包含 A的apk文件, 发现不可行。然后又想着将其中一个项目(含有res资源)打包成jar包,另一个项目来引用。但是多次尝试总是发现找不到资源。
这是因为android的特殊性,android不仅有java文件还有res文件,需要研究如何将资源以及activity文件打包成jar文件供其他项目调用,最终多方尝试,找到如下两种方案。方案二是从android的官方文档中找到的完美解决方案。方案二更优,方案一要求两个工程包名最好一样,而方案二不需要包名一致。
方法一:
1将A工程 的src文件夹下面所有的内容 导出 jar包。2保留 res下的 图片,xml 等资源文件, 还有 AndroidManifest.xml 的内容。
3将A工程的jar包 导入到B工程中, res中的文件放到相应的文件夹下面。 AndroidManifest里面的Activity复制到B的对应文件。
这个时候存在两个工程 包名 不相同的情况, 容易出错, 最好两个工程保持一致。
这样完成了 B 工程 对 A工程的集成。