如何覆盖风味中依赖于应用程序ID的gradle变量

时间:2018-08-22 08:21:07

标签: android gradle android-productflavors android-flavors

我有同一个应用程序的多个版本,每个版本使用不同的应用程序ID。我还拥有多个依赖于应用程序ID的提供程序(以允许在一次设备上并行安装所有口味)。

我已经在gradle文件中为这些提供者定义了权限,如下所示:

defaultConfig {
    applicationId "xxxxxxxxx"
    ...

    // Create a string resource for the app ID so it can be referenced from XML files
    resValue("string", "applicationId", "\"${applicationId}\"")

    // Create a property for the FileProvider authority.
    def fileProviderAuthorityValue = applicationId + ".Files"
    // Create a placeholder property to use in the manifest.
    manifestPlaceholders.put("fileProviderAuthority", fileProviderAuthorityValue)
    // Add a new field for the authority to the BuildConfig class.
    buildConfigField("String", "FILE_PROVIDER_AUTHORITY", "\"${fileProviderAuthorityValue}\"")
    ...
}

productFlavors {
    flavorA {
        applicationId "yyyyyyyyy"
        ....
    }
}

问题在于,风味构建不会使用新的应用程序ID覆盖resValue或fileProviderAuthorityValue,而是使用defaultConfig中的ID。

我只希望定义一次,而只是更改应用程序ID,以便可以相应地更新变量。

我如何实现这一目标,而无需复制风味本身的整个代码(顺便说一句)?

0 个答案:

没有答案