美文网首页
动态配置模块库为Application和Library

动态配置模块库为Application和Library

作者: 好kan故事 | 来源:发表于2021-05-16 13:18 被阅读0次

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)

相关文章

网友评论

      本文标题:动态配置模块库为Application和Library

      本文链接:https://www.haomeiwen.com/subject/pazljltx.html