1.新建一個Android App項(xiàng)目
2.右鍵項(xiàng)目,New-Module-Android Library-輸入Library Name-finish即可,這里假設(shè)我們創(chuàng)建的libraryName是user
若要將第二步中創(chuàng)建的module依賴俩由,則有兩種方式
(1)使用androidstudio來配置
右鍵項(xiàng)目斑胜,open module setting曹体,選擇Modules/app-Dependences-點(diǎn)擊左下角+號咱扣,彈框中選擇第2步的mudule-Ok,這時候有可能報錯奔脐,因?yàn)橛行〢S不會在build.gradle生成代碼時自動換行,自己去對應(yīng)build.gradle敲個回車就好了
(2)自己引入
找到app的Module吁讨,在最后面加上下面這句即可
implementation project(':user')
多模塊配置完成髓迎。。建丧。排龄。
這時候你可以看到在module項(xiàng)目的build.gradle文件最上面是
apply plugin: 'com.android.library'
說明這是一個library,不能運(yùn)行的
你也可以看到app的build.gradle中第一行是
apply plugin: 'com.android.application'
這是可以運(yùn)行的翎朱,意味著當(dāng)你把module項(xiàng)目的build.gradle項(xiàng)目中第一行的library改成application即可開始運(yùn)行這時候就需要注意AndroidManifest.xml文件了
library的AndroidManifest.xml文件內(nèi)是不需要主題的橄维,也不需要有默認(rèn)啟動的Activity,只需要定義:
<activity android:name="activity路徑"></activity>
如何動態(tài)地改變一個項(xiàng)目是application還是library拴曲?
在項(xiàng)目目錄列表中有一個grade.properties文件争舞,在里面定義:
isUserModule = true
然后在第2步創(chuàng)建的library的build.gradle文件開頭可以這樣寫:
if (isUserModule.toBoolean()) {
apply plugin: 'com.android.library'
}else {
apply plugin: 'com.android.application'
}
同時可以在app的build.gradle中,之前添加implementation project(':user')的地方代碼修改為:
if(isUserModule.toBoolean()) {
implementation project(':user')
}
小拓展:
如何在debug模式和release模式下加載不同的AndroidManifest.xml文件澈灼?
這個問題的應(yīng)用場景是什么呢兑障,是因?yàn)樵谶@兩個模式下,user項(xiàng)目是區(qū)分是一個library還是一個application的蕉汪,這時候AndroidManifest.xml文件需要做改動流译,但是又不想每一次發(fā)布都去修改一邊,所以修改成動態(tài)的加載不同的AndroidManifest.xml
首先確定在debug模式下者疤,user項(xiàng)目需要運(yùn)行的福澡,在release模式下user是作為一個類庫被app項(xiàng)目依賴的,所以在user的build.gradle文件中添加:
sourceSets {
main {
if (isUserModule.toBoolean()) {
manifest.srcFile 'src/main/release/AndroidManifest.xml'
} else {
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
}
}
}