[Android组件化]Kotlin的路由跳转

你们好,我系苍王。
html

如下是我这个系列的相关文章,有兴趣能够参考一下,能够给个喜欢或者关注个人文章。java

[Android]如何作一个崩溃率少于千分之三噶应用app--章节列表android


好久无法表文章了,是由于近来实在太忙了。git

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

我很喜欢程序员这份职业,是由于它可以创造出有趣的东西。我想作一些有趣的东西,我但愿搭建本身想要的东西。可是在公司工做,是没法实现这些的。因此我开始写做,开始写一些本身喜欢的内容,在这个时候也获得不少同窗的关注,给予各类的鼓励。我并非什么大神,我只是想写我本身写我喜欢的内容,去多点理解这个世界的构造。github

感慨的话,说到这里。app


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

最新的路由跳转已经放在了我Gank组件化实例(https://github.com/cangwang/Gank/tree/kotlin)欢迎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的源码地址


kapt源码地址(https://github.com/JetBrains/kotlin/tree/master/plugins/kapt3/src/org/jetbrains/kotlin/kapt3)


但愿总在你坚持中降临。

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

群号是316556016,也能够扫码进群。我在这里期待大家的加入!!!

相关文章
相关标签/搜索