使用gradle重命名apk - >获取相同的apk两次

owe*_*owe 5 android gradle android-studio build.gradle

我有一个具有不同风格的应用程序 - 每种风格都有两个buildTypes.

重命名我的清单中的一些行后,我也重命名了apk.一切正常 - 我只是想知道为什么我两次获得同样的答案?一旦没有重命名,一旦重命名......

具有不同名称的相同应用的简短示例:

  • "myApp-flavor-buildType.apk"(未重命名)
  • "myApp-appName-buildType-version.apk"(重命名为apk)

这是我的build.gradle文件的代码:

// *** OVERRIDE data in MANIFEST ***
android.applicationVariants.each { variant ->
    variant.processManifest.doLast {
        overrideDataInManifest(variant)
    }
}

def overrideMapsKey(buildVariant){
    def appName = getAppName(buildVariant)

    // override line ... this is not necessary to this question

    renameAPK(buildVariant, appName)
}

// *** RENAME APK ***
def renameAPK(buildVariant, appName){
    def apk = buildVariant.packageApplication.outputFile;
    def newName = "";

    // get data for apk renaming
    def versionName = android.defaultConfig.versionName 
    def versionNameSuffix = buildVariant.buildType.versionNameSuffix
    if(versionNameSuffix.toString().equals("null"))
        versionNameSuffix = ""
    def buildTypeOfApp= buildVariant.buildType.name 

    if (buildVariant.zipAlign) {
        newName = "etscanner-" + appName + "-" + buildTypeOfApp.toUpperCase() + "-v" + versionName + versionNameSuffix + ".apk"
    }else{
        newName = "etscanner-" + appName + "-" + buildTypeOfApp.toUpperCase() + "-v" + versionName + versionNameSuffix + "-ALIGNED" + ".apk"
    }
    buildVariant.packageApplication.outputFile = new File(apk.parentFile, newName);
}
Run Code Online (Sandbox Code Playgroud)

只是想知道最新情况,如果可以完成相同的任务而不需要两个apks.

sha*_*aca 11

zipAlign选项设置为true时,将始终有两个APK文件用于变体.首先,gradle构建原始APK文件,然后对其进行zipalign并生成优化版本而不删除原始版本.

buildVariant.packageApplication.outputFile是构建过程的中间产品,在我的观察中,一个总是未对齐的APK文件.

buildVariant.outputFile是应用zipAlign选项的最终输出.

另一方面,您可能想要更正build.gradile文件,它实际上将APK文件的未对齐版本重命名为"ALIGNED"版本,并保持zipalign APK文件不变.这是我的修改版本:

if (buildVariant.zipAlign) {
    newName = "etscanner-" + appName + "-" + buildTypeOfApp.toUpperCase() + "-v" + versionName + versionNameSuffix + "-ALIGNED.apk"
    buildVariant.outputFile = new File(apk.parentFile, newName);
}

newName = "etscanner-" + appName + "-" + buildTypeOfApp.toUpperCase() + "-v" + versionName + versionNameSuffix + "-UNALIGNED" + ".apk"
buildVariant.packageApplication.outputFile = new File(apk.parentFile, newName);
Run Code Online (Sandbox Code Playgroud)