Android Gradle构build:重命名apk

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

  • 在Android中启用MultiDex支持以在Eclipse中实现65K +方法
  • 使用Gradle构build未签名的APK
  • Android Gradle库依赖与库依赖使用Nexus
  • 我们如何通过组合不同的模块来创build一个单一的库?
  • Gradle错误:“属性”rippleColor“已被定义”在android studio中
  • 如何解决产品风味的构build错误,何时引用但不必要的源/资源未find?
  • 带有风格的Android Studio项目,Sources目录不以蓝色显示
  • Android Studio错误:(3,0)未findid为'com.android.application'的插件
  • 在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) }