博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android组件化]Kotlin的路由跳转
阅读量:6120 次
发布时间:2019-06-21

本文共 1862 字,大约阅读时间需要 6 分钟。

大家好,我系苍王。

以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。

很久没法表文章了,是因为近来实在太忙了。

作为程序员,每天十点,半夜一两点下班,感觉身体真的吃不消。我们的团队是伟大的,16天开发一个新的app,8天开发,8天测试,然后上线。或者这是很好的人生经历。但是大脑得不到任何休息,没有了陪伴另家人的时间,没有可以对自己输入,或者输出的事情,也会开始怀疑人生了。

我很喜欢程序员这份职业,是因为它能够创造出有趣的东西。我想做一些有趣的东西,我希望搭建自己想要的东西。但是在公司工作,是无法实现这些的。所以我开始写作,开始写一些自己喜欢的内容,在这个时候也得到很多同学的关注,给予各种的鼓励。我并不是什么大神,我只是想写我自己写我喜欢的内容,去多点理解这个世界的构造。

感慨的话,说到这里。

今天要说的是之前Kotlin编写中遇到的问题,当时发现Kotlin无法使用ARouter。

最新的路由跳转已经放在了我欢迎star一波。

一 问题原因

编译是成功的,但是其跳转的时候发现提示找不到任何的route matched。

那应该是无法生成任何的route match文件。

我们看一下什么情况下会提示出这样的信息,这里当然也是需要深入一下源码的。

这是首页广告页跳转代码

首页跳转代码

其build的方法最主要是建造出一个Postcard的对象,然后通过navigation来完成跳转

而_ARouter文件才是实际处理跳转的文件

我们看到这里有个NoRouteFoundException的异常抛出,其抛出的错误显示和我们的toast是一样的。可以锁定其toast的弹出位置正式这里。

在LogisticsCenter文件中有两处有可能抛出问题的地方。

那么这里其实找到了原因是每个跳转的Module,都会通过apt来生成几个代码ARouter的文件。

如果我们标注了Module的一些Group标示,ARouter的自定义的apt会做一些编译时运行。

我们可以看到正常情况下,每个Module都会生成一个ARouter$$Group$$+"groupName"文件,通过继承IRouteGroup来完成回调。

我们可以看到LogisticsCenter的init方法中,注册每个IRouteGroup映射到LogisticsCenter中。

而只有响应的的Group文件生成并且注册后才能跳转成功,这里的问题很明显是并根本没有生成Group文件。

二 解决方案

我们看看配置我们的生成命名等方式官方提供的apt编译时注解都是java生成方式,但是kotlin有他独有的kapt框架来做apt相关的操作。

我们需要做的是将apt配置为kapt那么能正常完成编译。

java中使用ARouter的配置方式,需要配置moduleName

然后annotationProcressor来配置arouter的注解(Android Gradle 插件 2.2 版本的发布,Android Gradle 插件提供了名为annotationProcessor的功能来完全代替android-apt)

而使用kapt的配置,我们先将声明plugin,这里顺序千万别错了。

而使用kapt的配置,我们将moduleName声明(以前apt声明配置参数的时候就是这样处理的)

还需要修改引用的annotationProcressor换为kapt。

这样之后,只要本来代码配置正常,那么路由跳转也绝对是无问题了,每个module都需要如此配置。

1.这里暂时发现的问题是Android studio 2.3.2的版本,databinding会有坑,群里的同学实践过。(debug版本 他去找release里面的databinding-info文件)

我使用的2.3.1没有任何问题。

****2017.6.12*********

这个bug 2.3.1的Android studio还是遇到了

解决的方案很简单

建立一个空的_generated.txt文件,就能顺利编译通过。

2.AutoWired字段需要使用@JvmField才能正常使用

最后这里给大家推荐一个kapt配置dagger butterknife等的地址,给大家参考。

然后彩蛋来了,是kapt的源码地址

希望总在你坚持中降临。

下一节将会更精彩,敬请期待!!!

群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!

转载地址:http://gsmka.baihongyu.com/

你可能感兴趣的文章
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>
Ext Js简单事件处理和对象作用域
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
12.通过微信小程序端访问企查查(采集工商信息)
查看>>
WinXp 开机登录密码
查看>>
POJ 1001 Exponentiation
查看>>
HDU 4377 Sub Sequence[串构造]
查看>>
云时代架构阅读笔记之四
查看>>
WEB请求处理一:浏览器请求发起处理
查看>>
Lua学习笔记(8): 元表
查看>>
PHP经典算法题
查看>>
LeetCode 404 Sum of Left Leaves
查看>>
醋泡大蒜有什么功效
查看>>
hdu 5115(2014北京—dp)
查看>>
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>