7

我有两种产品风格和三种构建类型。

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"'
    }
}

有没有一种方法可以改变 content_provider_authority 的 resValue ,而不是基于产品风味,而是基于变体?我希望新产品风格的所有构建都使用应用程序 id +“.contentprovider”,但对于我们的旧产品风格,如果调试或发布,则使用硬编码字符串,如上所示,但增强它以使用不同的硬编码字符串进行 qa 构建类型。

4

2 回答 2

6
于 2019-01-22T12:15:36.357 回答
0

请注意,您的 build.gradle 产品风味定义name上不能有相同的字符串,否则构建会抱怨资源。main/res/values/strings.xmlresValueduplicate

TL; 博士;

假设您想app_name为不同的产品风格更改字符串资源。您可以在您的app/build.gradle.

flavorDimensions "default"

productFlavors{

    production {
        dimension "roadmap"
        applicationId "com.yourbundleid"
        versionCode 1
        versionName "0.1.0"
        resValue "string", "app_name", 'YourAwesomeApp'
    }

    beta {
        dimension "roadmap"
        applicationIdSuffix ".beta"
        versionNameSuffix "-beta"
        versionCode 1
        versionName "0.1.0"
        resValue "string", "app_name", 'YourAwesomeApp BETA'
    }

    dev {
        dimension "roadmap"
        applicationIdSuffix ".dev"
        versionNameSuffix "-dev"
        versionCode 1
        versionName "0.1.0"
        resValue "string", "app_name", 'YourAwesomeApp DEV'
    }
}

于 2020-03-02T00:08:45.753 回答