在 Android 中创建动态交付模块,并在安装时有条件包含

问题描述 投票:0回答:1

我正在开发一个 Android 项目,我需要创建一个动态交付模块。但是,在模块创建过程中,我会看到以下选项:

  • 安装时不要包含模块(仅限按需)

  • 在安装时包含模块

  • 仅在安装时包含具有指定功能的设备的模块

我的要求如下:如果在创建发布版本(AAB或APK)期间满足某个条件,我希望该模块(我们称之为模块A)存在于基础APK中,即包含该模块在安装时。如果条件为 false,则模块 A 应该是动态模块,即,在安装时不包含该模块(仅限按需)。

有没有什么方法可以根据构建过程中的特定条件在安装时实现模块的有条件包含?

我的条件是,如果我们正在构建一个apk(然后包含所有模块A,这是动态模块),否则如果我们正在构建aab文件,那么不要做任何事情,因为模块A已经是动态的

android module android-module dynamic-delivery
1个回答
0
投票

所以我最终按照以下方式做到了

动态模块gradle文件的变化

plugins {
    if (true) { // we are building aab
        id("com.android.dynamic-feature")
    } else { // we are building apk
        id("com.android.library")
    }
    id("org.jetbrains.kotlin.android")
}

dependencies {
    if (true) { // we are building aab
        implementation(project(":app"))
    }

    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.9.0")
    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
}

应用程序 gradle 文件中的更改

android 标签内

if (true) { //we are building aab
    dynamicFeatures = [':dynamicModule']
}

内部依赖标签

if (true) { //we are building apk
        implementation project(':dynamicModule')
    }

更改我们在主代码中使用模块的位置

binding?.textView?.setOnClickListener {
            if (true) { // we had build aab
                checkForModule()
            } else { // we had build apk
                accessTheContentsOfModule()
            }
        }

条件可以是任何你想要的东西,房产或快车道,或者正如我所说的任何你想要的东西

© www.soinside.com 2019 - 2024. All rights reserved.