AndroidStudio正式版推出後,相信更多的同學都在準備將項目遷移出eclipse,擁抱IDE的未來——AndroidStudio。而有的同學可能與我一樣,在某一階段,發現AndroidStudio的編譯速度實在不可恭維。
我的個人項目剛遷移到AndroidStudio後,編譯時間居然最少1分鐘,IDE也經常卡死。這難道就是官方所說的解放生產效率嗎?本人決定信Google一次,花幾天時間研究下編譯慢的原因。結果,現在編譯速度11秒,已經全面超越eclipse。
原項目(eclipse中、非Gradle或Maven編譯)的情況:
引用了6個庫工程,還有若干jar和so。
eclipse時:編譯流暢。
剛遷移到AndroidStudio時:至少1分鐘,緩慢。
現在:11秒。
歸納起來從以下幾個幾個角度提速:
- 項目減肥
- IDE(jvm)配置
- Gradle的幾個參數
最關鍵的是第一條。jvm和Gradle參數的修改效果不一定明顯。
項目減肥
1. 不要引用庫Module。AndroidStudio慢的主要原因是大量磁盤IO,這是跟eclipse上很大的不同(eclipse多幾個庫工程對編譯時間影響不大)。所以,直接在Gradle中引用這些庫吧。
這裏說明下,如果是maven中央庫沒有的項目,可以把該庫打包成aar,然後引用:
到該庫Mudule的build目錄下搜*.aar,這個aar可以直接被本地引用;build.gradle簡單修改下。然後移除對該庫Module的依賴,刪除就行了。
2. 使用本地庫(jar或aar),而不是遠程庫。絕大多數項目build.gradle的dependencies都是遠程引用(jcenter()或mavenCenter()),但鑑於中國的網絡(訪問maven中央庫和sonatype等),使用本地庫絕對能加快項目的編譯。因爲Gradle每次編譯都會去檢查這些庫的更新。
位置(Windows):C:\USER\用戶\.gradle,搜索*.aar。得到的就是原來每次Gradle編譯時遠程下載的aar包。然後同上一步進入該aar。
當然也可以mvn -install添加到maven本地庫中,然後通過mavenLocal()引入;但沒有上面的方法簡單。
這樣的方式唯一不比遠程引用的是,不能自動更新到該第三方庫的最新版本;但贏得了編譯時間。
3. 不用單元測試的話,刪除Test目錄。
IDE優化
1. IDE的vm主配置文件。
與eclipse的jvm優化一樣,跟局電腦的硬件配置修改。
2.
延遲自動保存。
IDEA不同於eclipse和word等,是自動保存的。如果想降低性能負擔,可以取消立即保存,置爲延遲30秒。
3. 停用不用的
插件。
注意的是,Maven插件不能停用,因爲項目的默認的jcenter()依賴於它。
Gradle的幾個參數
Android開發團隊的Google+有篇舊文章,給了Gradle的幾個參數。。。。
https://plus.google.com/108967384991768947849
位置:1. 本工程的gradle.properties文件。
2. C:\USER\用戶\.gradle下新建gradle.properties。
參數:1. deamon:會在第一次編譯後,將gradle進程駐留。
2. parallel:會爲子項目另開一個進程。
3. dex***:減少這個低效率流程。