2014-09-24 66 views
1

我想命名我的应用程序的APK文件基于git分支,这是通过传递参数与jenkins工作。不过,我最终得到了两个APK,这是不可取的,因为我已经将APK上传到分布式列表中的一个Gradle任务。重命名这个APK的全部重点是让接收它的人确切地知道他们看到的是什么分支。重命名gradle apk输出文件,但有2个apks

buildTypes { 
    ... 

    feature { 
     signingConfig signingConfigs.debug 

     applicationVariants.all { variant -> 
      appendVersionNameVersionCode(variant, defaultConfig) 
     } 

    } 

    ... 
} 

... 

def appendVersionNameVersionCode(variant, defaultConfig) { 
    //check if staging variant 
    if(variant.name == android.buildTypes.feature.name){ 
     def branch = hasProperty('branch') ? branch.replaceAll('origin/', '') : "UNKNOWN" 
     def file = variant.packageApplication.outputFile 
     def fileName = "myapp-FEATURE-" + branch + ".apk" 
     variant.packageApplication.outputFile = new File(file.parent, fileName) 
    } 
} 

然后命令的gradle调用:

gradle assembleFeature --project-dir=/Path/To/myapp/ -Pbranch=origin/development 

从它们生成的两个文件是:

  1. APP-feature.apk
  2. MyApp的-FEATURE开发.apk

文件1是不希望的,我最终想要重命名该文件,而不是生成一个新的文件,这是文件2.

任何想法?

回答

0

原来,gradle总是打包2个apks。一个是对齐的,另一个不对齐。

为了重命名对准apk文件,我必须补充一点:

if (variant.zipAlign) { 
     newName = "myapp-FEATURE-" + branch + "-ALIGNED.apk" 
     variant.outputFile = new File(file.parentFile, newName); 
    } 
+0

你确定它variant.zipAlign而不是output.zipAlign?因为变体上的属性zipAlign在Android Studio/Gradle版本1.0.0上给我一个属性找不到错误。 – AgentKnopf 2015-01-23 09:20:34

+0

Gradle的最新版本已将属性'zipAlign'更改为'zipAlignEnabled',因此您需要使用variant.zipAlignEnabled来判断。 – 2015-03-18 04:30:48

+0

Android studio不会自动找到这个apk,并报告“本地路径不存在”错误..我想这是Android Studio的bug或者? – Ewoks 2015-09-24 10:13:31