现在android项目的架构很多,如mvc,mvp,mvvm,还有各种不同的结构,比如单一模块编程、模块化、组件化、插件化,我现在就来说说我在使用kotlin搭建组件化的过程中遇到的几个坑:
(1)使用arouter集成组件化模块的时候,配置都对了,但是始终跳转不了界面,报错误是ARouter there's no route matched,这个,我在网上也找了很多的资料,都是说我的path没写对,或者说配置的时候没配置正确,我检查了一遍遍,我发现我的配置确实是对的,没有错,但是为啥我的项目还是报这个错误呢?我不死心的找资料,终于得救了,在一篇csdn里面发现,开发时arouter必须要将打开debug,但是我再次检查了一番,我的debug是打开了的呀,还是这个错误,无奈,我继续向下看,看到了:ARouter加载Dex中的映射文件会有一定耗时,所以ARouter会缓存映射文件,直到新版本升级(版本号或者versionCode变化),而如果是开发版本(ARouter.openDebug()), ARouter 每次启动都会重新加载映射文件,开发阶段一定要打开 Debug 功能,然后后面贴了一段代码
我对比我的,我发现我的init是放到第一句的,我将init放到最后一句试了试,竟然通了,这样的bug谁能想到的啊,正常来说不都应该谁先init再做其他操作的吗?只能说,在下服了。
(2)在模块化当中,免不了添加新的模块,为了节约资源我有的模块是新建的java-library,我在模块里面仍然是用的kotlin写的代码,但是出现了这么一个问题,我构建项目的时候给我说无法引用资源包,我在写的时候不报错,编译的时候报这错误,什么鬼,我胡汉三不服,明明包也能导出来,但是就是编译时无法引用,这时候我本着解决问题的态度去做了一件伟大的事情(百度),百度很给力,很快就告诉我没有添加
apply plugin: 'kotlin-android'
这个插件,我就很开心啊,终于知道原因了,原来是我这个模块儿里面没有kotlin的插件,我往build.gradle里面一复制,一build,我擦,直接不通过,报我没有添加android的插件,又什么鬼,我这个模块只要kotlin和java的东西呀,你给我闹什么android,来来回回好几次,我生气了,我把上吗那个android去掉,改成了
apply plugin: 'kotlin'
然后一编译,成功了,运行,也成功。
这这这。。。
好吧,你赢了,我服了,我也明白了,哎,还是我的阅历不够,能力不足啊
好了,现在就先写这么多吧,嘻嘻