相关疑难解决方法(0)

如何使用flavorDimensions为每个风味组合设置不同的applicationId?

我有和旧的Android应用程序,我正在尝试迁移到android gradle构建系统.该应用程序目前内置于多项目设置中,并作为四个不同的应用程序发布(包括两个不同的数据集和两个数据集的免费/付费版本).我已经设法通过使用flavorDimensions(以前称为flavorGroups)来摆脱多项目设置,但我无法弄清楚如何为每种风味组合设置不同的applicationId.

由于应用程序版本已经发布,我需要保留与当前版本相同的应用程序.由于我的原始包命名是如何完成的,我不能简单地使用flavor-buildtype与"packageNameSuffix"的组合(如果它是一个未发布的应用程序,那将是一个很好的选择).

/sf/answers/1466944741/正在回答如何使用不同的源文件夹进行风味组合,而不是如何(如果可能的话)为构建文件中的每个组合设置特定配置.

Gradle构建文件片段:

flavorDimensions "price", "dataset"

productFlavors {
    free { flavorDimension "price" }
    paid { flavorDimension "price" }
    dataset1 { flavorDimension "dataset" }
    dataset2 { flavorDimension "dataset" }
}
Run Code Online (Sandbox Code Playgroud)

我想在我的gradle构建文件中有类似下面的内容(请注意我的命名是如何unlogic的,这就是为什么我不能使用packageNameSuffix):

freeDataset1 { applicationId "com.beansys.freeappdataset1" }
freeDataset2 { applicationId "com.beansys.freedataset2" }
paidDataset1 { applicationId "com.beansys.dataset1paid" }
paidDataset2 { applicationId "com.beansys.mypaiddataset2" }
Run Code Online (Sandbox Code Playgroud)

android gradle android-build android-gradle-plugin

22
推荐指数
2
解决办法
6260
查看次数

Gradle Android插件 - 添加自定义风味属性?

有没有办法在android插件中为gradle添加自定义属性到productFlavor或buildType?我想在buildVariants的配置中有这样的额外灵活性,以便在为buildVariants指定任务时可以检查我的自定义属性.

productFlavors {
    flavorGroups "drm", "storeType"
    googlePlay {
        flavorGroup "storeType"
        buildConfig "public static final String TARGET_STORE = \"google\";"
    }
    samsungApps {
        flavorGroup "storeType"
        buildConfig "public static final String TARGET_STORE = \"samsung\";"
    }

    platformDrm {
        flavorGroup "drm"
    }

    widevineAppDrm {
        flavorGroup "drm"
        minSdkVersion 9
        useWidevineAppDrmLib true
    }
Run Code Online (Sandbox Code Playgroud)

}

所以在这里你可以看到我添加了自定义属性"useWidevineAppDrmLib"来构建风味.在buildVariant.mergedFlavor中看到相同的属性会很高兴,这样我就可以检查该属性值并构建其他任务,例如在属性设置为true时打包附加的.so文件:

android.applicationVariants.each { variant -> if(variant.mergedFlavor.useWidevineAppDrmLib ) { ... // add copy .so task } }

也许有一种方法可以做到这一点,但我还没有发现...检查子串(味道名称)的构建变体名称对我有用,但它看起来很脏.

理想情况下,我想为buildType和productFlavor提供不同类型的自定义属性的映射.

android gradle

19
推荐指数
2
解决办法
7059
查看次数