Android Gradle构build:重命名apk

我如何适应我的build.gradle来更改apk的最终基名? (不更改默认的后缀)

Solutions Collecting From Web of "Android Gradle构build:重命名apk"

在Gradle 1.8上, project.archivesBaseName确实起作用,但是它给了这个抱怨:

按需创build属性(又名dynamic属性)已被弃用,计划在Gradle 2.0中删除。 请阅读http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html ,了解更换dynamic属性的信息。 弃用的dynamic属性:“root project myapp'”上的“archivesBaseName”,值:“AnotherName”。

为了摆脱这个警告(并避免在Gradle 2.0上构build),请使用以下命令:

 project.ext.set("archivesBaseName", "AnotherName"); 

…正如ExtraPropertiesExtension文档中所build议的那样 。

更新(Gradle插件1.1.0)

Android Gradle插件版本1.1.0引入了一个破坏了archivesBaseName的bug, 正如friederbluemle指出的那样 。 但幸运的是,这个版本已经被修复了( 版本1.1.2 )。

我find一个非常简单的解决scheme apk基名是在项目中定义的属性archivesBaseName 。 所以下面这行足以重新命名apks:

 project.archivesBaseName = "AnotherName"; 

从Android Gradle插件1.1.0版开始,您必须使用

 archivesBaseName = "yourOtherName" 

而不是project.ext.set("archivesBaseName", "yourOtherName")project.ext.set("archivesBaseName", "yourOtherName")来使其工作。

下面的代码很适合我在v1.3.1和只有APK:

 android { defaultConfig { archivesBaseName = "AnotherName" 

再一次,这与Android插件1.3.1(不是1.3.0),但我们仍然有困难重命名我们的应用程序(APK)和库(AAR)。 一个很大的问题,因为我们有一个20 +项目设置,我们locking部署的二进制文件来自哪里,而不是在每个子项目build.gradle中重复代码。

以下为我们工作:

在root build.gradle中定义以下方法(和插件):

 ext.snapshotSuffix = "<sha>-<count>-SNAPSHOT" ext.nextVersion = "patch" apply plugin: 'com.cinnober.gradle.semver-git' def renameArtifact(variant) { variant.outputs.each { output -> def fullName = output.outputFile.name def projectName = fullName.substring(0, fullName.indexOf('-')) output.outputFile = new File( (String) output.outputFile.parent, (String) output.outputFile.name.replace(projectName, "drivecx-${projectName}-${project.version}")) } } 

对于应用使用:

 apply plugin: 'com.android.application' android { ... // Rename all output artifacts to include version information applicationVariants.all { variant -> renameArtifact(variant) } } 

对于图书馆使用:

 apply plugin: 'com.android.library' android { ... // Rename all output artifacts to include version information libraryVariants.all { variant -> renameArtifact(variant) } } 

现在你得到了一些非常好的文件,它们有一个共同的前缀,项目名称,git-describe-wth-sha1-buildflavor和扩展名。

老例子:

 androidauto-debug.apk 

新的例子:

 drivecx-androidauto-0.2.1-d1436b7-193-SNAPSHOT-debug.apk 

奖励是它不重命名未alignment的apks。

您还可以通过在根settings.gradle放置以下内容来重命名子项目(不重命名目录):

 rootProject.children.each { it.name = ('app' == it.name ? 'MyAppName' : it.name) }