你們好,我係蒼王。
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,也能夠掃碼進羣。我在這裏期待大家的加入!!!