ARouter的使用初體驗(yàn)及多模塊調(diào)用失敗問(wèn)題解決

ARouter是阿里團(tuán)隊(duì)開(kāi)源的一款提供路由功能的中間件合愈,項(xiàng)目地址:https://github.com/alibaba/ARouter待侵。
路由功能對(duì)android組件化開(kāi)發(fā)的模塊解耦有重要意義兵志,通過(guò)本文我們可以先了解ARouter的使用方法以及使用中的常見(jiàn)問(wèn)題椎镣。

使用方法

一艺晴、在提供路由功能的模塊的build.gradle文件中冗美,添加下述信息

android {
    defaultConfig {
    ...
    javaCompileOptions {
        annotationProcessorOptions {
        arguments = [ moduleName : project.getName() ]
        }
    }
    }
}

dependencies {
    // 替換成最新版本, 需要注意的是api
    // 要與compiler匹配使用魔种,均使用最新版可以保證兼容
    compile 'com.alibaba:arouter-api:x.x.x'
    annotationProcessor 'com.alibaba:arouter-compiler:x.x.x'
    ...
}

當(dāng)前的最新版本在github首頁(yè)展示,如下圖

image.png

二粉洼、在提供路由功能的模塊中节预,在支持路由的頁(yè)面上添加注解(必選)。這里的路徑需要注意的是至少需要有兩級(jí)漆改,/xx/xx

@Route(path = "/test/activity")
public class YourActivity extend Activity {
    ...
}

三心铃、宿主App中,初始化ARouter

if (isDebug()) {           // 這兩行必須寫(xiě)在init之前挫剑,否則這些配置在init過(guò)程中將無(wú)效
    ARouter.openLog();     // 打印日志
    ARouter.openDebug();   // 開(kāi)啟調(diào)試模式(如果在InstantRun模式下運(yùn)行去扣,必須開(kāi)啟調(diào)試模式!線上版本需要關(guān)閉,否則有安全風(fēng)險(xiǎn))
}
ARouter.init(mApplication); // 盡可能早樊破,推薦在Application中初始化

四愉棱、發(fā)起路由操作

// 1. 應(yīng)用內(nèi)簡(jiǎn)單的跳轉(zhuǎn)(通過(guò)URL跳轉(zhuǎn)在'進(jìn)階用法'中)
ARouter.getInstance().build("/test/activity").navigation();

// 2. 跳轉(zhuǎn)并攜帶參數(shù)
ARouter.getInstance().build("/test/1")
            .withLong("key1", 666L)
            .withString("key3", "888")
            .withObject("key4", new Test("Jack", "Rose"))
            .navigation();

使用問(wèn)題

There's no router matched!

在組件化開(kāi)發(fā)過(guò)程中,我在宿主App模塊引用模塊C中的Activity哲戚,一直不能成功奔滑,界面及日志提示"W/ARouter::: ARouter::There is no route match the path [/xxx/xxx], in group [xxx][ ]"
最終定位原因是需要在宿主App的build.gradle中,把需要路由的模塊(上例中的模塊C)引入進(jìn)來(lái)

//builde.gradle文件
compile project(":moudlec")
compile project(":moudled")

在組件化開(kāi)發(fā)中顺少,各模塊建議不要有依賴關(guān)系朋其。宿主App在打包編譯時(shí)可依賴各組件,組件之間可以使用ARouter進(jìn)行界面跳轉(zhuǎn)脆炎。上例中模塊c和d之間無(wú)依賴關(guān)系梅猿,但是再宿主app中可以進(jìn)行跳轉(zhuǎn)。

ARouter::Extract the default group failed

根據(jù)github的使用文檔秒裕,路由路徑至少需要有兩級(jí):/xx/xx袱蚓。
使用路由啟動(dòng)Activity時(shí),犯了一個(gè)錯(cuò)誤几蜻,路徑名稱忘記寫(xiě)首字符/喇潘,導(dǎo)致出現(xiàn)了如下報(bào)錯(cuò)体斩,引以為戒。

09-06 15:13:45.408 2550-2550/com.example.chenbin.helloas E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           Process: com.example.chenbin.helloas, PID: 2550
                                                                           com.alibaba.android.arouter.exception.HandlerException: ARouter::Extract the default group failed, the path must be start with '/' and contain more than 2 '/'!
                                                                               at com.alibaba.android.arouter.launcher._ARouter.extractGroup(_ARouter.java:228)
                                                                               at com.alibaba.android.arouter.launcher._ARouter.build(_ARouter.java:189)
                                                                               at com.alibaba.android.arouter.launcher.ARouter.build(ARouter.java:140)
                                                                               at com.example.chenbin.helloas.MainActivity$1.onClick(MainActivity.java:37)
                                                                               at android.view.View.performClick(View.java:5207)
                                                                               at android.view.View$PerformClick.run(View.java:21177)
                                                                               at android.os.Handler.handleCallback(Handler.java:739)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:148)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5438)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颖低,一起剝皮案震驚了整個(gè)濱河市絮吵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忱屑,老刑警劉巖源武,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異想幻,居然都是意外死亡粱栖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)脏毯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)闹究,“玉大人,你說(shuō)我怎么就攤上這事食店≡伲” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵吉嫩,是天一觀的道長(zhǎng)价认。 經(jīng)常有香客問(wèn)我,道長(zhǎng)自娩,這世上最難降的妖魔是什么用踩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮忙迁,結(jié)果婚禮上脐彩,老公的妹妹穿的比我還像新娘。我一直安慰自己姊扔,他們只是感情好惠奸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著恰梢,像睡著了一般佛南。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嵌言,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天嗅回,我揣著相機(jī)與錄音,去河邊找鬼呀页。 笑死妈拌,一個(gè)胖子當(dāng)著我的面吹牛拥坛,可吹牛的內(nèi)容都是我干的蓬蝶。 我是一名探鬼主播尘分,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼丸氛!你這毒婦竟也來(lái)了培愁?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缓窜,失蹤者是張志新(化名)和其女友劉穎定续,沒(méi)想到半個(gè)月后后控,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體御雕,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年冤留,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恩掷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倡鲸。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖黄娘,靈堂內(nèi)的尸體忽然破棺而出峭状,到底是詐尸還是另有隱情,我是刑警寧澤逼争,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布优床,位于F島的核電站,受9級(jí)特大地震影響誓焦,放射性物質(zhì)發(fā)生泄漏胆敞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一杂伟、第九天 我趴在偏房一處隱蔽的房頂上張望竿秆。 院中可真熱鬧,春花似錦稿壁、人聲如沸幽钢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匪燕。三九已至,卻和暖如春喧笔,著一層夾襖步出監(jiān)牢的瞬間帽驯,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工书闸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尼变,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嫌术,于是被迫代替她去往敵國(guó)和親哀澈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容