Application作为应用程序启动:apply plugin: ‘com.android.application’
Library作为库工程被引用:apply plugin: ‘com.android.library’
怎么动态切换库为application和library呢?步骤如下:
一、gradle.properties中添加:
二、Module的build.gradle中添加:(我的是UserCenter)
if (isUserModule.toBoolean()) {
apply plugin: 'com.android.library'
} else {
apply plugin: 'com.android.application'
}
加了后:
三、使用两套Manifest用于application和library的切换
把工程切换到project目录下,在UserCenter的main文件夹下新建两个文件夹debug和relese,在debug和relese中添加清单文件,

1、 debug中的清单文件添加启动代码:(application时使用)
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ui.RegisterActivity">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</application>
2、relese文件夹下的清单文件不添加启动代码:(library时使用)
<application
android:theme="@style/AppTheme"
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
>
<activity android:name=".ui.RegisterActivity">
</application>
3、在UserCenter的build.gradle中的android目录中添加两套Manifest切换的代码:
sourceSets {
main {
if (isUserModule.toBoolean()) {
manifest.srcFile 'src/main/release/AndroidManifest.xml'
// release模式下排除debug文件中所有的java文件
java {
exclude 'debug/**'
}
} else {
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
}
}
}
四、在我们的主模块(如:App的build.gradle)中dependencies目录下添加:
if (isUserModule.toBoolean()){
api project(path: ':UserCenter')
}
配置完成后我们通过通过修改isUserModule的值并sync后Android stuido就可以帮助我们动态编译当前模块的状态(Application或者Library)

网友评论