同一商品口味如何具有多个ApplicationId?

时间:2019-03-15 18:51:01

标签: android gradle android-gradle android-productflavors package-name

我们有一个白标应用程序,为不同客户提供了几种口味。一个新客户来了,它希望能够通过自己的开发者帐户发布应用程序。但是,在发布之前,我们需要通过内部测试轨道对应用进行测试,并验证产品环境是否正常(例如计费)。

当我们开始开发时,我们创建了一个新的产品样式“ com.business.android.product”。现在我们即将发布,我们需要一个不同的包名称“ com.example.android.thing”。我的问题是,我们如何才能为相同的风味使用两个软件包名称(即在/ product源文件夹中使用相同的代码)?

以下是我们的风格和构建类型设置的示例

productFlavors {
    prod1 {
        applicationId "com.business.android"
        buildConfigField 'boolean', 'REPORT_CRASHES', "true"
    }
    prod2 {
        applicationId "com.business.android.product2"
        buildConfigField 'boolean', 'REPORT_CRASHES', "true"
    }
    prod3 {
        applicationId "com.business.android.product3"
        buildConfigField 'boolean', 'REPORT_CRASHES', "true"
        def flavor = "spg"
    }
    prod4 {
        applicationId "com.company.android.product4"
        buildConfigField 'boolean', 'REPORT_CRASHES', "true"
    }

    /* Need a way to have all the code in /prod4 flavor source folder but with
     * a very different applicationId - ex. somebusiness.android.product4
     *
     */
}

buildTypes {
    debug {
        debuggable true
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.KEY
        def buildType = "debug"
        def targetEnvironment = "production"
        buildConfigField "boolean", "PRODUCTION_ENV", "true"
    }

    debugTst {
        minifyEnabled false
        debuggable true
        signingConfig signingConfigs.KEY
        def buildType = "debug"
        buildConfigField "boolean", "PRODUCTION_ENV", "false"
    }

    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.KEY
        def buildType = "release"
        buildConfigField "boolean", "PRODUCTION_ENV", "true"
    }

    releaseTst {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.KEY
        def buildType = "release"
        buildConfigField "boolean", "PRODUCTION_ENV", "false"
    }
}

1 个答案:

答案 0 :(得分:0)

可以通过执行以下操作解决此问题:

sourceSets {
    prod4Ext.java.srcDirs += 'src/prod4/java'
    prod4Ext.res.srcDirs += 'src/prod4/res'
}

这将为新创建的风味prod4Ext提供prod4风味的源代码和布局。