在公司开发中遇到这样需求,将一个独立的应用嵌入其他应用当中;
相关方法有两种:
第一种是将被嵌入的应用打包成 jar 包,但是这样的局限性是无法将被嵌入的应用所使用的资源性文件一起打包;
第二种是将被嵌入的应用打包成 aar 包,这也是 Android Studio 的一种新特性,可以将应用所使用的资源性文件一起打包;
如果Project 中 Module 是一个应用,则在 Module 的 build.gradle 文件中定义属性为:apply plugin: 'com.android.application';而如果 Mudule 是一个被引用的依赖 lib 库的话,则在 Module 的 build.gradle 文件中定义属性为: apply plugin: 'com.android.library;所以当我们将应用 Module 打包出 aar 文件的时候,需要修改类型属性。正常情况下,直接重新编译 Module 后可以在 目录下看到所要的 aar 打包文件。
也有可能在重新编译项目应用的时候,会出现找不到某些资源文件的错误;这可能是因为被嵌入项目引用了某些开源库,所以在引用的时候需要将这些配置也手动添加进来。
还遇到了如下图的错误:
同时在引用成功后,查看项目目录结构也确实可以查到该类,如下图:
按正常情况不应该出现这种错误的;后面经过查询和验证,其实出现这种错误的原因是 KdsCombinationDeailActivity 类当中我还引用了其他自定义的 lib 依赖库;而在引用的时候只是引用了打包成功后的 aar 包,而没有手动添加被嵌入项目所依赖的 lib 库(打包 aar 文件的时候这些依赖库需要自己手动添加);如下图
在引用打包成功后的 aar 的同时也需要手动添加依赖库文件 shareLib 和 shareMainLib(直接将 shareLib 和 shareMainLib 依赖库的 aar 包直接拷贝过去也可以);这样就OK了。