如何为相同的产品风味拥有多个 ApplicationId?
Posted
技术标签:
【中文标题】如何为相同的产品风味拥有多个 ApplicationId?【英文标题】:How to have multiple ApplicationIds for the same product flavor? 【发布时间】:2019-08-06 21:54:41 【问题描述】:我们有一个白标应用程序,为不同的客户提供多种口味。一个新客户出现了,他们希望能够通过他们自己的开发者帐户发布应用程序。但是,在发布之前,我们需要通过内部测试轨道对应用进行测试,并验证 prod 环境是否正常工作(例如计费)。
当我们开始开发时,我们创建了一个新的产品风格,“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"
【问题讨论】:
您有任何错误或问题吗? 没有错误,对不起,我想我没有很好地解释这个。我无法想出一种方法来更改产品风味“prod4”的 applicationId,同时仍使用 /prod4 文件夹中的相同风味源代码。可以选择创建另一种风格,但这意味着我需要将 /prod4 中的所有代码复制到新风格的文件夹中,我们称之为 /prod4release 【参考方案1】:此问题可以通过执行以下操作来解决:
sourceSets
prod4Ext.java.srcDirs += 'src/prod4/java'
prod4Ext.res.srcDirs += 'src/prod4/res'
这将为新创建的风味 prod4Ext 提供 prod4 风味的源代码和布局。
【讨论】:
这个解决方案不会影响其他口味吗? 这只会影响风味“prod4Ext”。以上是关于如何为相同的产品风味拥有多个 ApplicationId?的主要内容,如果未能解决你的问题,请参考以下文章