需求,公司有三个项目ABC,登录接口统一,现将三个app整合到一个app中
思路 :将A项目做主项目,然后将bc作为moudle引用。
import moudle 选择B,然后将build.gradle:B中的第一行代码 applyplugin:'com.android.application'改成applyplugin:'com.android.library'
然后将compileSdkVersion 、minSdkVersion、 targetSdkVersion改成一致,sync一下,没出错
然后尝试在A中调用B的界面,随便写个按钮,写跳转。发现并不能找到该类。百度一拨,发现只是引用了,忘了添加依赖,在build.gradle:A中添加 implementation project(':B'),继续写跳转,可以引用了,运行报错Manifest merger failed with multiple errors, see logs。嗯抠脚英语直译一下,配置文件因为多个错误合并失败,查看日志。那就查看A中的manifest文件
第一个错误,A中和B中同时使用了 @icon,建议巴拉巴拉,就按他的建议来,直接点击蓝线,第一个错误没了
第二个错误,定义了两个Application,建议巴拉巴拉,还按他的建议来
再次编译运行,继续报错
应该是第三方依赖失败。第一个是啥,不认识,第二个不就是黄油刀吗,那就先看第二个,去git竟然一眼看到了我想要的东西
抠脚英语继续翻译。在library中使用黄油刀,添加plugin到你的buildscript,然后添加。。。现在看看是不是R2替换了R。
按操作添加这两块代码。两个项目中的黄油刀版本分别是8.8.1和8.5.1,先统一改成8.8.1。再次sync,继续报错
stackOverflow查,降低版本号,统一改成8.4.0,sync通过,B中并未出现R2,依旧爆红,先不管,运行看,继续报错
竟然需要手动改成R2!!!全部替换后运行报错第一个 程序包org.apache.http不存在,build.gradle:B android下添加useLibrary'org.apache.http.legacy'。
最终又错了,将黄油刀改成了10.1.0,然后随之而来是的省级到androdX,替换support。这些都搞完后,又遇到 错误: 程序包com.google.gson不存在,我百度了半天没解决了,后来直接放弃了,改用了 fastjson,好在A项目封装的好,调用次数比较少
再次运行项目,启动B的某个界面,打开后闪退,报错是context上下文没找到,最终解决方案,A的Application集成B的application就行了,如果是多moudle的话,需要抽出来个baseMoudle,每个moudle去依赖他。完毕