由于构建风味问题,无法添加动态特征模块

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

我想在现有应用中实现一个新的动态功能模块,但由于产品风味问题而不得不放弃。

示例代码可在此处找到。 https://github.com/henningBunk/dynamic_feature_problem

我有三个模块:

  1. 应用程式。应用程序的主要模块。它有两种产品口味:

storeamazongooglepay_statusfreepro

产生四种组合:amazonFreeamazonProgoogleFreegooglePro

取决于lib并将dynamic_feature列为动态特征。

  1. LIB。库模块appdynamic_feature取决于此模块。 lib仅具有pay_status风味。所以当我建立例如。作为googleFree风格的应用程序,lib将构建它的free风格。

  2. dynamic_feature。新功能应为动态功能。此模块不应具有任何风味。这取决于应用程序和库。

三个gradle文件,简化为产品的风味和可靠性,如下所示:

应用模块build.gradle:

apply plugin: 'com.android.application'

android {
    dynamicFeatures = [":faq"]

    flavorDimensions "store", "pay_status"

    productFlavors {
        google { dimension "store" }
        amazon { dimension "store" }

        free { dimension "pay_status" }
        pro { dimension "pay_status" }
    }
}
dependencies {
    implementation project(':lib')
}

库模块build.gradle:

apply plugin: 'com.android.library'

android {
    flavorDimensions "pay_status"

    productFlavors {
        free { dimension "pay_status" }
        pro { dimension "pay_status" }
    }
}

dependencies {
}

动态功能模块build.gradle:

apply plugin: 'com.android.dynamic-feature'

android {}

dependencies {
    implementation project(':app')
    implementation project(':lib')
}

这导致错误:

ERROR: Unable to resolve dependency for ':dynamic_feature@debug/compileClasspath': Could not resolve project :app.
Show Details
Affected Modules: dynamic_feature

所以我读到模块dynamic_feature可能需要缺少尺寸标注策略。添加

missingDimensionStrategy "store", "google"
missingDimensionStrategy "pay_status", "free"

将dynamic_feature build.gradle转换为android.defaultConfig。这样,我可以建立一些风味,但不是全部:

enter image description here

android gradle dependencies dynamic-feature
1个回答
0
投票

我已经找到了解决方案,但并不令人满意。所有构建风格必须在动态功能模块中实现,以便可以实际构建所有构建风格。

missingDimensionStrategy不起作用。

此处有更多信息:https://proandroiddev.com/advanced-android-flavors-part-4-a-new-version-fc2ad80c01bb

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