2016-09-20 96 views
11

更新Android Studio到版本2.2後,我還得到了Gradle插件更新(它是2.1.3):Android Studio 2.2更新:對齊APK(zipAlign)不使用新的Gradle插件2.2.0

... 
classpath 'com.android.tools.build:gradle:2.2.0' 
... 

我看到未對齊的變體APK文件,但其他變體不再生成。我嘗試啓用zip對齊:

buildTypes { 
     release { 
      minifyEnabled false 
      zipAlignEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      signingConfig signingConfigs.release 
     } 
     debug { 
      applicationIdSuffix '.debug' 
     } 
} 

但沒有任何更改。有任何想法嗎?在項目層面build.gradle

我 「解決」 義無反顧地

classpath 'com.android.tools.build:gradle:2.1.3' 

EDIT(20160922):

由於Fayder弗洛雷斯他的迴應。這是正確的,構建環境現在只生成一個apk(https://code.google.com/p/android/issues/detail?id=212591)。

但使用的代碼(使用VERSION CODEVERSION NAME是重命名德輸出文件名):

android.applicationVariants.all { variant -> 
    variant.outputs.each { output -> 
     def padVersionCode = variant.versionCode.toString(); 
     padVersionCode = padVersionCode.padLeft(5, '0') 
     def newApkName = "${output.baseName}_${padVersionCode}-${variant.versionName}" 

     if (!output.zipAlign) 
      newApkName = newApkName + "_unaligned" 

     newApkName = newApkName + ".apk" 
     output.outputFile = new File(output.outputFile.parent, newApkName) 
    } 
} 

我得到的「_unaligned」附加到輸出文件名,所以我想這是output.zipAlignfalse

那麼輸出文件是否真的對齊?

EDIT(20161013)

感謝ending0421,它是建議使用的構建工具來檢查APK:

的zipalign -c -v 4路徑/文件名

現在我現在認爲APK正確生成了和zipalign命令syays:

驗證成功的

+0

我驗證了output.zipalign始終爲空,因此if條件得到滿足,並且生成的apk名稱包含後綴「_unaligned.apk」(按照OP中的代碼)。然而結果文件是zipaligned。 – drulabs

回答

7

根據這個論壇:https://code.google.com/p/android/issues/detail?id=212591

「嗨,我們沒有任何更多的生成不對齊的apk。作爲改進速度的一部分,我們生成已經對齊的apk。所以,而不是兩個,你只是得到最後一個。 。

@ yair.kikielka感謝」

4

回覆EDIT(20160922):

所以是輸出文件確實對準

是?!您可以驗證使用

的zipalign -c -v 4路徑/文件名

當你運行它通過gradle這個版本> = 2.2生成APK上的文件這個命令,你會得到 「驗證成功的」。這意味着已經一致。

相關問題