我有一个具有不同风格的应用程序 - 每种风格都有两个构建类型。
重命名 list 中的一些行后,我也重命名了 apk。一切正常 - 我只是想知道为什么我两次获得相同的 apks?一次不改名一次改名...
具有不同名称的同一应用的简短示例:
- “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);
}
只是想知道发生了什么,以及是否可以在没有两个 apk 的情况下完成相同的任务。
最佳答案
对于 zipAlign 选项设置为 true 的变体,始终会有两个 APK 文件。首先 gradle 构建原始 APK 文件,然后对其进行 zipalign 并在不删除原始文件的情况下生成优化版本。
buildVariant.packageApplication.outputFile 是构建过程的中间产物,根据我的观察,一个始终是未对齐的 APK 文件。
buildVariant.outputFile 是应用 zipAlign 选项的最终输出。
另一方面,您可能想要更正 build.gradile 文件,它实际上将未对齐版本的 APK 文件重命名为“对齐”版本,并保持 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);
关于android - 使用 gradle 重命名 apk -> 两次获得相同的 apk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18507660/