在变体中更改resValue

Jas*_*ker 5 android gradle android-build android-studio android-productflavors

我有两种产品口味和三种构建类型.

buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        signingConfig signingConfigs.release
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
    qa {
        applicationIdSuffix ".qa"
        signingConfig signingConfigs.release
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

productFlavors {
    old {
        applicationId "com.companyname.old"
        buildConfigField "String", "contentProvider", '"com.companyname.android.mobile.contentprovider"'
        resValue "string", "content_provider_authority", '"com.companyname.android.mobile.contentprovider"'

    }
    new {
        applicationId "com.companyname.new"
        buildConfigField "String", "contentProvider", '"' + applicationId + '.contentprovider"'
        resValue "string", "content_provider_authority", '"' + applicationId + '.contentprovider"'
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以根据产品风格改变content_provider_authority的resValue,但是对于变体?我希望所有产品版本的构建都使用应用程序ID +".contentprovider"但是对于我们的产品风味旧,如果调试或发布如上所示使用硬编码字符串,但增强它以便为qa构建使用不同的硬编码字符串类型.

Pab*_*rra 6

由于Selvin的评论,此代码对我有用

productFlavors {
        red {
            ext {
                googleMapsKey = [debug: "AIza4115643435", release: "AIzaXXXXXXXXXX"]
            }
        }

        blue {
            ext {
                googleMapsKey = [debug: "AIza6363474341", release: "AIzaXXXXXXXXXX"]
            }
        }

        applicationVariants.all { variant ->
            def flavor = variant.productFlavors[0]
            variant.resValue  "string", "google_maps_key", "\"${flavor.ext.googleMapsKey[variant.buildType.name]}\""
        }
    }
Run Code Online (Sandbox Code Playgroud)