針對打包編譯時間太長的解決方法:
1.盡量使用implementation
2.針對測試調(diào)試可以關(guān)閉lint
lint是個耗時大戶,而這個Lint Task一般在Debug的時候是不需要的,因此可以先禁用這個Task來完成Lint的禁用.
// 方式一 注意放置的位置[一定要寫到apply plugin: 'com.android.application' 前面才生效]
tasks.whenTaskAdded {
task -> if (task.name.equals("lint")) {
task.enabled = false
}
}
// 方式二app/build.gradle [推薦]
android{
...
buildTypes{
...
debug{
...
project.gradle.startParameter.excludedTaskNames.add('lint') // 屏蔽lint耗時檢查
}
}
...
}
3.針對性的屏蔽掉耗時的Task
通過profile工具,找到編譯耗時的Task,我們就可以有針對性的屏蔽掉來提高編譯速度.
例如uploadReleaseSymtabFile耗時也挺多的,我在查看耗時的時候也是挺吃驚的,這個是項(xiàng)目中集成的bugly符號表自動上傳的插件,果斷在Debug階段屏蔽掉先,記得上線時一定要放開.
直接在AS提供的終端中運(yùn)行build命令,只需追加 -profile參數(shù)即可使用該功能.
4.開啟多線程支持和增量編譯
在gradle.properties文件中增加如下所示代碼: 表示開啟Gradle的多線程和多核心支持.
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
在app/build.gradle android{}閉包中添加如下代碼:表示開啟Gradle的增量編譯,增加編譯的內(nèi)存資源到4G
dexOptions{
// incremental true
javaMaxHeapSize "4g"
}
ps:最好屏蔽 incremental true,在編譯的時候可能會有一個警告信息WARNING: DSL element 'DexOptions.incremental' is obsolete and will be removed at the end of 2018.因?yàn)樵?AS 3.0這個已經(jīng)是默認(rèn)實(shí)現(xiàn)了.
Lint是一個代碼掃描工具,可以幫助我們發(fā)現(xiàn)并糾正代碼結(jié)構(gòu)質(zhì)量的問題,而無需實(shí)際執(zhí)行該應(yīng)用也不必編寫測試用例.該工具會報告其檢測到的每個問題并提供該問題的描述信息和嚴(yán)重級別,以便可以快速確定需要優(yōu)先進(jìn)行哪些關(guān)鍵改進(jìn).此外可以調(diào)低問題的嚴(yán)重級別,忽略與項(xiàng)目無關(guān)的問題,也可以調(diào)高嚴(yán)重級別,以突出特定問題.
Lint在AS中默認(rèn)就集成好了,它會對我們的代碼進(jìn)行檢測給出警告提示,
AAPT全稱 Android Asset Packaging Tool.該工具位于Android SDK的build-tools目錄下
這個工具主要用于Android編譯 打包.它可以查看 創(chuàng)建 修改壓縮文件(zip,jar包,apk文件),也可以將資源編譯成二進(jìn)制文件,AS在編譯時調(diào)用該工具進(jìn)行資源打包,將所有文件打包成一個apk文件.