是否可以使用 Gradle 更改 Android 应用程序的包名称?
我需要编译同一个应用程序的两个副本,具有唯一的包名称(这样我可以两次发布到市场)。
最佳答案
作为使用产品 flavor 的更简单的替代方法 as in Ethan's answer ,您还可以自定义构建类型。
如何选择方法:
- 如果您需要不同的软件包名称才能在设备上同时安装 debug 和 release apk,请使用 构建类型接近下方,如 Gradle plugin docs agree .在这种情况下,口味是多余的。 (我认为默认情况下所有项目都应该这样做,因为它会让生活更轻松,尤其是在您发布到商店并开发新功能之后。)
- 产品风格有很多用途,典型的例子是具有免费和付费版本的应用。在这种情况下,请检查 Ethan's answer并阅读文档:Configuring Gradle Builds和 Gradle Plugin User Guide .
(您也可以将这两种方法结合起来,这会导致每个构建变体都有不同的包名称。)
构建类型配置
对于 debug 构建类型和所有其他非release 类型,定义将添加到默认包名称的 applicationIdSuffix
。
(在 Android Gradle plugin version 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
// ...
}
}
}
上面,debug
和 release
是默认构建类型,其某些方面是配置的,而 beta
是完全自定义的构建类型。要构建不同的类型,请照常使用 assembleDebug
、assembleBeta
等。
同样,您可以使用 versionNameSuffix
覆盖 AndroidManifest 中的默认版本名称(我觉得这非常有用!)。例如。 “0.8”→“0.8-BETA”,如上配置。
资源:
- 此示例直接来自 Xavier Ducrohet 的“Google I/O 2013: The New Android SDK Build System”演示文稿。
- Build Types in the User Guide .
我自己到目前为止,我一直在使用 productFlavors
来实现这个确切的目的,但似乎构建类型自定义可能更接近我的需求,而且它使构建配置更简单。
更新(2016 年):我在所有项目中都使用了这种方法,我认为这绝对是要走的路。我也将它包含在 Android Best Practices 中由 Futurice 指导。
关于android - 使用 Gradle 组装时如何更改 Android 应用程序包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18491649/