Ser*_*m's 47 android gradle android-build android-gradle-plugin
是否可以使用Gradle更改Android应用程序的包名称?
我需要编译同一个应用程序的两个副本,具有唯一的包名称(因此我可以向市场发布两次).
Jon*_*nik 65
作为在Ethan的答案中使用产品风味 的更简单的替代方法,您还可以自定义构建类型.
如何选择方法:
(我想你也可以结合使用这两种方法,这会导致每个构建变体都有不同的包名,但我还没有测试过.)
对于调试版本类型和所有其他非版本类型,请定义applicationIdSuffix将添加到默认包名称的类型.(在Android Gradle插件版本0.11之前,此设置被称为packageNameSuffix.)
android {
buildTypes {
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
}
beta {
applicationIdSuffix '.beta'
versionNameSuffix '-BETA'
// NB: If you want to use the default debug key for a (non-debug)
// build type, you need to specify it:
signingConfig signingConfigs.debug
}
release {
// signingConfig signingConfigs.release
// runProguard true
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上,debug并且release是默认的构建类型,它们的某些方面进行配置,而beta完全是一种自定义生成类型.要构建不同类型,用途assembleDebug,assembleBeta等等,像往常一样.
同样,您可以使用versionNameSuffix从AndroidManifest覆盖默认版本名称(我发现它非常有用!).例如"0.8"→"0.8-BETA",如上所述.
资源:
productFlavors到目前为止,我一直在使用这个目的,但似乎构建类型自定义可能更接近我的需求,而且它使构建配置更简单.
更新(2016):我已经在我的所有项目中使用了这种方法,我认为这绝对是要走的路.我还将它包含在Futurice的Android Best Practices指南中.
Eth*_*han 55
你可以这样的事情
android {
...
defaultConfig {
minSdkVersion 8
versionCode 10
}
flavorDimensions "flavor1", "flavor2"
productFlavors {
flavor1 {
applicationId "com.example.flavor1"
versionCode 20
}
flavor2 {
applicationId "com.example.flavor2"
minSdkVersion 14
}
}
}
Run Code Online (Sandbox Code Playgroud)
android.defaultConfig.applicationId如果要进行一次性构建,也可以更改字段.
取自:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-Flavor-Configuration
Ami*_*.io 10
使用1.0.0+的gradle插件版本,您必须使用迁移指南中所述的applicationId
在ProductFlavors中重命名属性
packageName => applicationId
因此,在build.gradle中,您现在将使用:
productFlavors {
flavor1 {
applicationId "com.example.flavor1"
}
flavor2 {
applicationId "com.example.flavor2"
}
}
Run Code Online (Sandbox Code Playgroud)
根据Ethan的回答,flavorGroups和packageName都不再可用.以下工作截至2015年3月.
android {
...
defaultConfig {
minSdkVersion 8
versionCode 10
}
flavorDimensions "flavor"
productFlavors {
flavor1 {
flavorDimension "flavor"
applicationId "com.example.flavor1"
versionCode 20
}
flavor2 {
flavorDimension "flavor"
applicationId "com.example.flavor2"
minSdkVersion 14
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36164 次 |
| 最近记录: |