研究主流的组件化后,优化了下自己搭建的组件化架构,项目实现以kotlin+mmvm+协程+组件化+composingBuild,看网上很多用buildSrc的方式依赖库,其实也没啥改变,某个依赖改版本整个都要同步,用composingBuild方式就是将版本依赖的配置全部放置到另一个module中,它以插件库的代码形式与项目根文件夹同级。
想说下注意事项: 1.用composingBuild的依赖初始搭建时经常依赖不成功,配置脚本写错等,实在是经常爆红。。。那么其实也别担心,来回就是那几板斧。
-
a.注意脚本文件的配置settings.gradle,这里需要配置module,因为组件太多的使用其实不应该和功能库module同级,我就把它套了层文件夹coreLib,每次创建新的module都需要修改此文件; -
b.修改同级项目根的build.gradle,这里统一配置组件化是集成模式library还是组件化单独运行com.android.application,我的As版本是3.6.3,会有apply plugin: 'kotlin-android-extensions’升级的4自行替换高版本; -
c.当出现依赖找不到,先看库有没正常依赖写好,然后不行关闭As,到项目的文件夹中将缓存生成的文件手动删除,包括 /build,/.gradle,/.idea,*iml,包括versions库也要删除; -
d.依赖库下载问题是头疼的,因为公司外网都在被墙的基础上又限制了一拨,普通的等待下载依赖库基本失败,在项目根gradle.properties文件内设置代理的端口,我是用免费代理软件https://s3.amazonaws.com/psiphon/web/mjr4-p23r-puwl/zh/index.html;在设置–本地代理端口–随机写固定的端口就行,文件gradle.properties要应用此端口的/Http/https 64991 ; SOCKS 64990; 2.组件化中都会有组件引用Application的问题,我研究下网上的做法都是反射获取,可问题app壳组件在非集成模式是没法获取module组件的代码类引用,所以非集成模式下会爆红,但是集成下就正常此时我们就一般在versions库设置isDebug=false,如果同步后爆红请退出As重启就行。(同步按图标大象,sync project with gradle files) 3.这里没有用databing,牛油刀,这两个我确实不想用在xml文件下写代码读码时非常难受,至于jetpack其实liferecycle,viewmodel,livedata,room,workmanager,paging,navigation用过都差不多,可是老项目也没太多必要。至于数据存储结构响应界面变化,一般做法都是数据库room管理用Repository处理每张数据表的操作函数,然后viewModel又对应复写Repository的数据管理并关联livedata响应界面,我觉得架构很清晰,大家可以玩下,我这里只用mmkv封装了下保存参数。 项目代码:https://github.com/1006245347/component_android 记录下~
|