gradle兼容性问题

gradle的兼容性并不很好。

移除了tasks.getByName

Android gradle plugin 2.1.3和2.2.3之间就存在兼容性问题。
Android gradle plugin 2.2移除了tasks.getByName(‘xx’),改为直接使用task名字xx。但是为了最好的兼容性,要使用afterEvaluate后使用。

afterEvaluate {
    taskxx.doLast{}
}

gradle和plugin的兼容性

参考https://developer.android.google.cn/studio/releases/gradle-plugin.html。

gradle android plugin gradle
1.0.0 - 1.1.3 2.2.1 - 2.3
1.2.0 - 1.3.1 2.2.1 - 2.9
1.5.0 2.2.1 - 2.13
2.0.0 - 2.1.2 2.10 - 2.13
2.1.3 2.14.1 - <3.2.1
2.2 2.14.1 -

gradle 3.2.1不再兼容Android gradle plugin 2.1.3,至少要升级到2.2。

unaligned apk问题

确认android gradle plugin 2.1.3编译时会同时生成unaligned apk和正常的apk,而android gradle plugin 2.2.3编译时则不生成unaligned apk。我感觉应该是apk生成需要两个阶段先是unaligned,然后再zipalign变成aligned。unaligned平常算是中间产物。

apk生成过程(http://stackoverflow.com/questions/30366905/difference-between-app-debug-apk-and-app-debug-unaligned-apk):

  • generate a private key (keytool)
  • compile to get the unsigned APK -> unaligned unsigned APK
  • Sign app in debug/release mode using private key (jarsigner) -> unaligned signed APK
  • align the APK (zipalign) -> aligned signed APK

app-debug-unaligned.apk = Unaligned Signed APK
app-debug.apk = Aligned Signed APK (RAM optimized using zipalign)
ps:如果希望生成unsigned apk,需要signingConfig null。

shrinkResources失败

android gradle plugin 2.1.3 shrinkResources true成功,但是android gradle plugin 2.2.3 shrinkResources编译会失败。

你可能感兴趣的:(android)