本文主要是介绍Android组件化问题指南(ARouter),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写在开头
此文主要记录老项目在组件化拆分过程中所遇到问题及相关解决方法的记录,记录下来方便以后查看。
PS:http://note.youdao.com/noteshare?id=25a3eca5158af5f31ec5ebf49099aadb (有道分享,持续记录)
1.library中使用butterknife问题
R2文件的使用
https://www.jianshu.com/p/c6e3f67e391e (此博客解决,木有问题)
2.withSerializable 传递对象没有值问题,为null
我写了个单独的博客记录(分析了下源码)
https://blog.csdn.net/say_from_wen/article/details/82423425
3.双jar包问题
组件化拆分过程中,可能会多个mouble引入同一个jar包,但是要记住,一个项目相同的jar包只能有一个。可能在你拆分的时候没问题,grade会有一定的缓存。当你偶然ReBuild整个项目的时候就会有这个错了。(类似这种:Multiple dex files define Lcom/ta/utdid2/device/UTDevice)
4.多个mouble中不能有相同的layout名字,资源名字等
类似这种,java.lang.NoSuchFieldError: No static field rl_order_list of type I in class Lcom/pa/payment/R$id异常(其他有的不报错但是看上去也会很乱)
可以在资源文件或者属性前加前缀解决,通过resourcePrefix属性进行类型检查。
5.ARouter 多个mouble中声明provider问题。
每个mouble的Group 和 provider路径不能相同,要不路由路径会注册失败从而找不到。报错:android. ARouter使用 theres no route matched! “找不到”!ARouter::No postcard!
6.主mouble依赖两个mouble,两个mouble的通信问题
最终决定把路径PathUrl写在同一个地方,可以在公共库中,减少维护成本,不用每个mouble中都有一份相同的PathUrl。
7.关于Arouter跳转
如果您通过在url路径后面加“?key = value”的方式传递参数的话,必须以Uri的方式来进行router的跳转。否则会报错路由找不到的问题。
8.provider接口参数存在泛型
获取对象的方式就需要改变一下了。
ARouter.getInstance().navigation(CityProvider.class);得到的CityProvider对象会一直是空。所以必须采用mCityProvider = (CityProvider) ARouter.getInstance().build(CityProvider.PROVIDER_PATH).navigation();的方式来强转为你想要的对象。
9.path不能太长
跳转的paht最好别太长,否则在某些机型会出现path找不到问题。(有待验证,不过在简短了path后确实可以找到了)
10.Activity在跳转问题的简要说明
Activity必须位于当前Group对象的Mouble中才可以实现跳转,否则会报错路径找不到。
这篇关于Android组件化问题指南(ARouter)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!