1综液、組件化需要一個(gè)控制文件管理各個(gè)項(xiàng)目的配置包括sdk版本铛漓、依賴包等等
該文件應(yīng)該位于project的根目錄下
2愕贡、project要使用控制文件潦嘶,必須要build.gradle中將控制文件引入
3、各個(gè)模塊的build.gradle引入1步創(chuàng)建的控制文件
4伦忠、動(dòng)態(tài)切換app與library模式
根據(jù)控制文件中的參數(shù)(該示例為isModule)可動(dòng)態(tài)切換模式
5省核、分離AndroidMainfest文件
debug中的AndroidMainfest文件為常規(guī)配置,包含啟動(dòng)圖標(biāo)昆码、文件等等
模塊根目錄下的AndroidMainfest文件气忠,不包含啟動(dòng)圖標(biāo)等等,只有基礎(chǔ)四大組件聲明
6未桥、模塊間資源命名沖突
當(dāng)組件為library時(shí)笔刹,組件間如果資源名相同會(huì)出現(xiàn)沖突,我們只需要保證資源文件不存在同名即可冬耿,并且盡量保證模塊前綴統(tǒng)一舌菜。
7、組件化與butterknife
在使用組件化與butterknife時(shí)亦镶,會(huì)提示元素值必須是常量表達(dá)式日月,因?yàn)樵谥鱝pp中,這些id都是常量缤骨,但是在組件中爱咬,這些id就不是常量了。
官方的解釋是從ADT14開始Library中的R文件才從靜態(tài)常量變?yōu)榉浅A?因?yàn)槿绻诙鄠€(gè)Library中可能出現(xiàn)id沖突的問題.在ADT14以前則采用的是將所有的資源文件和相關(guān)的代碼重新隨著主項(xiàng)目一起編譯,導(dǎo)致編譯速度過慢.因此,從ADT14開始就變成了非常量的id了绊起。
1精拟、項(xiàng)目根目錄下添加如下代碼:
2、子目錄添加如下代碼:
3虱歪、子目錄記得添加依賴:
4蜂绎、然后在組件中使用butterknife的時(shí)候?qū)替換成R2即可。
---------------------------------------------over-----------------------------------------------
最近在使用kotlin寫項(xiàng)目時(shí)發(fā)現(xiàn)幾個(gè)坑記錄一下:
1笋鄙、運(yùn)行app報(bào)錯(cuò) There is no route match the path in group
根據(jù)網(wǎng)上的說法都驗(yàn)證了一遍师枣,路徑、引入文件都沒有問題萧落。
最后發(fā)現(xiàn)是使用kotlin時(shí)引入語法有些不同
//java項(xiàng)目中
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
//kotlin項(xiàng)目中践美,使用以下方法
//kotlin特殊
apply plugin: 'kotlin-kapt'
kapt{
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
2洗贰、InstantRun support error, com.android.tools.fd.runtime.Paths
compile 'com.alibaba:arouter-api:x.x.x'
//這里需要改成kapt
kapt 'com.alibaba:arouter-compiler:x.x.x'
...
}