Project中新建module是默認(rèn)為lib的李皇,現(xiàn)在要獨(dú)立運(yùn)行成App,就需要做一些更改允懂。
要點(diǎn)
-
gradle中配置
1.1 頂部應(yīng)用類型為app
apply plugin: 'com.android.application
1.2 設(shè)置包名剥啤,即applicationId
defaultConfig { applicationId "com.xxx.xxx.net" ... }
-
androidMenifest中配置
2.1 配置application標(biāo)簽。包括icon减余、theme等
<application android:name=".App" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:roundIcon="@drawable/ic_launcher" android:supportsRtl="true" android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning"> ... </application>
2.2 配置程序入口综苔,添加intent-filter
<activity android:name=".TestActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
做到上面幾點(diǎn),就可以作為App運(yùn)行了位岔。
但是
我們既然組件化了如筛,當(dāng)然要做到可以隨時(shí)切換是否獨(dú)立運(yùn)行。
這樣抒抬,設(shè)置一個(gè)開關(guān)來控制杨刨,然后再來配置一下AndroidMenifest文件,就行了擦剑。
使用開關(guān)來配置Module是否獨(dú)立運(yùn)行
-
首先是設(shè)置是否組件化的開關(guān)妖胀,這個(gè)開關(guān)一般我們發(fā)在單獨(dú)的gradle配置文件或gradle.properties文件中
-
在confi.gradle中是這樣的。當(dāng)然你得在project的build.gradle中添加對(duì)config的引用惠勒。
project的build.gradle添加
apply from: "config.gradle"
然后在config.gradle中添加
ext { /** Net模塊是否作為App存在*/ isNetApp = false }
-
在gradle.properties中設(shè)置赚抡,是這樣的
#控制運(yùn)行哪個(gè)模塊(1:運(yùn)行app模塊 2:運(yùn)行net模塊) runModule=2
-
然后就是引用剛剛設(shè)置的變量
if (rootProject.ext.isNetApp) { apply plugin: 'com.android.application' } else { apply plugin: 'com.android.library' }
或者
if (Integer.valueOf(runModule) == 1) { apply plugin: 'com.android.application' } else { apply plugin: 'com.android.library' }
應(yīng)該都明白怎么用了。
-
-
開關(guān)設(shè)置好了纠屋,在要做切換的地方根據(jù)開關(guān)涂臣,來設(shè)置钧椰。主要在module的build.gradle中流炕。
if (rootProject.ext.isNetApp) { apply plugin: 'com.android.application' } else { apply plugin: 'com.android.library' } ... android { ... defaultConfig { if (rootProject.ext.isNetApp) { //組件模式下設(shè)置applicationId applicationId "com.xxx.xxx.net" } ... } // 配置不同模式下的AndroidManifest文件地址 sourceSets { main { if (rootProject.ext.isNetApp) { manifest.srcFile 'src/main/AndroidManifest.xml' } else { // 這里再在對(duì)應(yīng)的文件夾下新建AndroidMenifest文件,并配置好activity等參數(shù)即可 manifest.srcFile 'src/main/module/AndroidManifest.xml' } jniLibs.srcDirs = ['libs'] } } }
AndroidMenifest的設(shè)置如下圖
OK栅受,完成族铆。這樣我們就可以在config.gradle中切換模塊是否單獨(dú)運(yùn)行岩四。
實(shí)際效果如下