【问题标题】:Renaming gradle apk output file, but there are 2 apks重命名 gradle apk 输出文件,但有 2 个 apk
【发布时间】:2014-09-24 21:16:51
【问题描述】:

我正在尝试根据 git 分支命名我的应用程序的 APK 文件,该分支通过使用 jenkins 传入参数来工作。但是,我最终得到了两个 APK,这是不可取的,因为我有一个 Gradle 任务将 APK 上传到分布式列表。重命名此 APK 的全部目的是让收到它的人确切知道他们看到的是哪个分支。

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-development.apk

不需要文件 1,我最终希望重命名该文件,而不是生成一个新文件,即文件 2。

有什么想法吗?

【问题讨论】:

    标签: android gradle android-studio apk android-gradle-plugin


    【解决方案1】:

    事实证明,gradle 总是打包 2 个 apk。一个对齐,一个不对齐。

    为了重命名对齐的 apk 文件,我必须添加以下内容:

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

    【讨论】:

    • 你确定它是 variant.zipAlign 而不是 output.zipAlign?因为变体上的属性 zipAlign 在 Android Studio/Gradle 版本 1.0.0 上给我一个属性未找到错误。
    • 最新版本的gradle将'zipAlign'属性改为'zipAlignEnabled',所以需要使用variant.zipAlignEnabled来判断。
    • Android Studio 不会自动找到这个 apk 并报告“Local path doesn't exist”错误。我猜这是 Android Studio 的 bug 还是?
    猜你喜欢
    • 1970-01-01
    • 2019-06-09
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多