用Android Studio3.0新功能加快構建速度
Android Studio3.0很多新的功能,他們可以直接加快Android Studio的構建速度從而加快開發(fā)效率,構建速度直接影響到開發(fā)效率,浪費時間即浪費生命,可以通過修改一些配置,優(yōu)化下構建速度。
Android Studio3.0之前的做法
通過配置DEX 資源縮短構建時間
gradle 添加以下代碼
android {
...
dexOptions {
maxProcessCount 4 // this is the default value
javaMaxHeapSize "2g"
}
}
maxProcessCount
設置可以并行啟動的 DEX 進程的最大數量
javaMaxHeapSize 設置 dex 操作的最大內存分配池大小
根據自己電腦的配置,設置這兩個值,通常情況下這兩個值越大越好
啟用 dexing-in-process 和增量 Java 編譯
Android Plugin for Gradle 版本 2.1.0 及更高版本還引入了其他的構建流程改進,包括增量 Java 編譯和 dexing-in-process。增量 Java 編譯默認情況下處于啟用狀態(tài),這種編譯方式僅對發(fā)生變化或需要重新編譯的源代碼部分進行重新編譯,可以縮短開發(fā)過程中的編譯時間。
dexing-in-process 在構建流程而不是單獨的外部 VM 流程中執(zhí)行 dexing。這樣不僅可以讓增量構建更快,也可以顯著提高完整構建的速度。要啟用此功能,您需要將 Gradle 后臺進程的最大堆大小設置為至少 2048 MB。要進行設置,您可以將以下代碼包含到項目的 gradle.properties 文件中
org.gradle.jvmargs = -Xmx2048m
如果您已經在模塊級別的 build.gradle 文件中為 javaMaxHeapSize 定義值,則需要將后臺進程的最大堆大小設置為 javaMaxHeapSize 的值 + 1024 MB。例如,如果您已將 javaMaxHeapSize 設為“2g”,則需要將以下代碼添加到項目的 gradle.properties 文件中:
org.gradle.jvmargs = -Xmx3072m
3.0之后的做法
使用用D8 編譯器作為DEX 編譯器
Android Studio3.0 包含了一個新的可選擇DEX編譯器,叫做D8,不久它將替換掉舊的DX編譯器,現在可以選擇使用新的編譯器,DEX編譯直接影響到app的構建時間,dex文件大小,和運行時的性能,當使用新的D8編譯器,D8編譯更快和輸出更小的.dex文件,并且相同或者更好的app運行時性能。要想使用D8編譯器,把以下代碼添加到工程的gradle.properties 文件即可
android.enableD8=true
使用新的依賴方式
也就是指dependencies代碼塊的引用
dependencies{
compile project('xxx')
compile 'com.github.bumptech.glide:glide:3.7.0'
}
Android gradle 3.0 插件有4種引入方式
* implementation 相當于原來的compile
* api 相當于原來的compile
* compileOnly 相當于原來的provided
* runtimeOnly 相當于原來的apk
一般來說實際中主要用到的是compile
為了提高構建速度
替換成
implementation project('xxx')
implementation 'com.github.bumptech.glide:glide:3.7.0'
api project('xxx')
api 'com.github.bumptech.glide:glide:3.7.0'
那這兩者有什么區(qū)別呢
此時需要注意的一個地方,例如一個叫A的lib里面用implementation引用一個B庫,又有一個C的module(不管是lib還是app)引用了A,這個C的module是引用了不了B的,也就是不能使用B庫里面的類和方法。這也是為什么使用implemention會加快構建速度的原因,可以減少重復編譯。要想引用B到的庫,可以使用api。在3.0中,api用法可以完全可以替換之前的compile,不用擔心編譯問題。
簡單總結下:
implementation:C引用A,即使A庫implementation方式引用B,C也不會引用B
api :C引用A,并且A庫用api方式引用B,C會引用B
compileOnly 只依賴庫用來編譯,不會把庫打包進apk,在一些特定的場景很有用
runtimeOnly 不用來編譯,但是會打包到apk,這個方式是deprecated(不推薦使用)的
參考
配置構建
相關文章
完美解決EditText和ScrollView的滾動沖突(下)
這篇文章再次為大家詳細介紹了完美解決EditText和ScrollView滾動沖突的方法,感興趣的小伙伴們可以參考一下2016-06-06
Android控件系列之RadioButton與RadioGroup使用方法
本文介紹了Android中如何使用RadioGroup和RadioButton,對比了RadioButton和CheckBox的區(qū)別,并實現了自定義的RadioGroup中被選中RadioButton的變更監(jiān)聽事件2012-11-11
Android自定義View實現仿GitHub的提交活躍表格
這篇文章主要介紹了Android自定義View實現仿GitHub的提交活躍表格,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-01-01
Android解決getExternalStorageDirectory在29后廢棄問題(推薦)
這篇文章主要介紹了Android解決getExternalStorageDirectory在29后廢棄問題(推薦),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02

