插件化与组件化
参考文献:https://blog.csdn.net/mhhyoucom/article/details/79000072
在组件化过程中,会遇上各种问题:
1、在module自己运行时正常,可以变为library融入到主程序时,会遇上各种不兼容的情况
(1)butter-knife在library中,R无法引用
升级到8.8.1版本,然后将library里的R变为R2,然后将view.getId()的switch-case改为if-else才能用。
解决方法:https://www.jianshu.com/p/c5fd14619aea
https://www.jianshu.com/p/a101cec2c960
(2)同一个模块里,会出现不同第三方的应用库冲突,特别的是v4/v7/androidx
依赖冲突Program type already present
需要找出来哪些库冲突,在编译时会提示哪些库冲突,然后双击shift查找该库有哪些第三方库调用,可以看到冲突了。
参考文献:
https://blog.csdn.net/Calvin_zhou/article/details/80880501
当然除了文中提到的解决方法,也可以通过降低或提高某个第三方库的版本,避免库冲突。
2、rxjava问题
不同的第三方库可能都使用了rxjava,但是使用的rxjava版本不一样。
More than one file was found with OS independent path 'META-INF/rxjava.properties
解决方法:
https://blog.csdn.net/lovelixue/article/details/81486651
3、AndroidX问题
第三方库作为组件,可能没法和AndroidX兼容,比如大疆SDK。
可以将android.enableJetifier = false
android.enableJetifier=true 表示将依赖包也迁移到androidx 。如果取值为false,表示不迁移依赖包到androidx,但在使用依赖包中的内容时可能会出现问题,当然了,如果你的项目中没有使用任何三方依赖,那么,此项可以设置为false
网友评论