Chapter8:關於Android開發中使用Gradle的一些補充
8.1 持續繼承
爲Android設置Ci的方式很多,廣泛使用的有:
- Jenkins
- TeamCity
- Travis CI
8.2 減少APK文件大小
ProGuard:
- ProGuard是一個Java工具,不僅可以縮減APK文件大小,還可以在編譯期優化、混淆和預檢驗代碼。它可以通過應用的所有代碼路徑,查找未使用的代碼,並將其刪除;也會重命名你的類和字段,在一定程度上加大反編譯難度。
自動資源縮減:
在構建中將 shrinkResources 屬性設爲true。
android{ buildTypes{ release{ minifyEnabled true shrinkResources true } } }
運行
shrinkReleaseResource
任務,可以看見縮小多少。命令 gradle clean assembleRelease -info,可以打印出構建的額外信息,包含不會輸出的資源。
注意:自動資源縮減可能刪除過多資源,比如那些被動態使用的資源。可以在 /res/raw/ 目錄下創建 keep.xml文件定義例外。(最終構建的輸出不包含keep.xml文件)
<?xml version="1.0" encoding="utf-8"> <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@layout/keep_me,@layout/also_used_*"/>
手動資源縮減:
去除某種語言文件或某個密度圖片。
如果只保留英語、丹麥語和荷蘭語的字符串:
android{ defaultConfig{ resConfigs "en", "da", "nl" } }
同樣針對密度圖片:
android{ defaultConfig{ resConfigs "hdpi", "xhdpi", "xxhdpi" } }
參考官方Doc:啓用壓縮、混淆和優化功能。
8.3 加速構建
開啓並行構建:(gradle.properties)
org.gradle.parallel=true
啓動Gradle daemon:
它會在你第一次運行構建時,開啓一個守護進程。任何後續構建都將複用該守護進程,從而減少啓動成本。使用Gradle,該進程就會存活,空閒3h後會終止。配置在 gradle.properties:
org.gradle.daemon=true
Android Studio默認開啓;但使用命令行構建時是默認關閉的。
調整Java虛擬機參數:
對構建直接影響的兩個參數是 Xms 和 Xmx。
Xms:設置初始內存大小。
Xmx:設置最大內存。
配置在 gradle.properties:
org.gradle.jvmargs=-Xms256m -Xmx1025m
k:千字節;m:兆字節;g:千兆字節
configureondemand:
- 當項目中存在多個模塊時。它會指出哪一個模塊配置有改變,哪一個沒有。
補充:可以通過
--profile
標誌在 build/reports/profile 目錄下生成分拆報告,告訴你構建過程那一部分最爲耗時。
8.4 忽略Lint
遷移項目時,可能會出現很多錯誤,可以採用臨時的解決方案,禁用 abortOnError:
android{ lintOptions{ abortOnError false } }
8.5 分割APK
- 可以根據密度或**ABI(application binary interface)**分割APKs。
8.6 參考資料
- Gradle For Android