導航:首頁 > 源碼編譯 > 加快安卓系統編譯速度

加快安卓系統編譯速度

發布時間:2022-05-06 01:20:07

⑴ 如何加快android Studio 編譯app 的速度

以下幾個方法可以提高Android Studio的編譯速度:
使用Gradle 2.4。
Gradle 2.4對執行性能有很大的優化,要手動讓Android Studio使用Gradle 2.4,在項目根目錄下的 build.grade中加入。

打開終端執行 ./gradlew wrapper,就可以下載Gradle 2.4了,下載完成後,需要在Android Studio讓我們的項目使用Gradle 2.4。

使用多線程編譯
在項目根目錄中創建gradle.properties,加入以下配置。
打開dex增量編譯
在項目主Mole下build.grade的Android中加入。

⑵ 如何解決android studio運行編譯速度慢

方法很多:
暴力:
換電腦,高配置,擼起。
溫和:
修改xmx配置參數http://blog.csdn.net/xyxjn/article/details/46906909
減少不必要的內存消耗,加快編譯速度。
靈活:
使用第三方插件進行快速編譯 ,例如阿里集團的 freeline這種編譯插件。

⑶ 如何加快linux android 的編譯速度

項目越來越大,每次需要重新編譯整個項目都是一件很浪費時間的事情。Research了一下,找到以下可以幫助提高速度的方法,總結一下。
1. 使用tmpfs來代替部分IO讀寫
2.ccache,可以將ccache的緩存文件設置在tmpfs上,但是這樣的話,每次開機後,ccache的緩存文件會丟失
3.distcc,多機器編譯
4.將屏幕輸出列印到內存文件或者/dev/null中,避免終端設備(慢速設備)拖慢速度。

tmpfs
有人說在Windows下用了RAMDisk把一個項目編譯時間從4.5小時減少到了5分鍾,也許這個數字是有點誇張了,不過粗想想,把文件放到內存上做編譯應該是比在磁碟上快多了吧,尤其如果編譯器需要生成很多臨時文件的話。
這個做法的實現成本最低,在Linux中,直接mount一個tmpfs就可以了。而且對所編譯的工程沒有任何要求,也不用改動編譯環境。
mount -t tmpfs tmpfs ~/build -o size=1G
用2.6.32.2的Linux Kernel來測試一下編譯速度:
用物理磁碟:40分16秒
用tmpfs:39分56秒
呃……沒什麼變化。看來編譯慢很大程度上瓶頸並不在IO上面。但對於一個實際項目來說,編譯過程中可能還會有打包等IO密集的操作,所以只要可能,用tmpfs是有益無害的。當然對於大項目來說,你需要有足夠的內存才能負擔得起這個tmpfs的開銷。
make -j
既然IO不是瓶頸,那CPU就應該是一個影響編譯速度的重要因素了。
用make -j帶一個參數,可以把項目在進行並行編譯,比如在一台雙核的機器上,完全可以用make -j4,讓make最多允許4個編譯命令同時執行,這樣可以更有效的利用CPU資源。
還是用Kernel來測試:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看來,在多核CPU上,適當的進行並行編譯還是可以明顯提高編譯速度的。但並行的任務不宜太多,一般是以CPU的核心數目的兩倍為宜。
不過這個方案不是完全沒有cost的,如果項目的Makefile不規范,沒有正確的設置好依賴關系,並行編譯的結果就是編譯不能正常進行。如果依賴關系設置過於保守,則可能本身編譯的可並行度就下降了,也不能取得最佳的效果。
ccache
ccache工作原理:
ccache也是一個編譯器驅動器。第一趟編譯時ccache緩存了GCC的「-E」輸出、編譯選項以及.o文件到$HOME/.ccache。第二次編譯時盡量利用緩存,必要時更新緩存。所以即使"make clean; make"也能從中獲得好處。ccache是經過仔細編寫的,確保了與直接使用GCC獲得完全相同的輸出。

ccache用於把編譯的中間結果進行緩存,以便在再次編譯的時候可以節省時間。這對於玩Kernel來說實在是再好不過了,因為經常需要修改一些Kernel的代碼,然後再重新編譯,而這兩次編譯大部分東西可能都沒有發生變化。對於平時開發項目來說,也是一樣。為什麼不是直接用make所支持的增量編譯呢?還是因為現實中,因為Makefile的不規范,很可能這種「聰明」的方案根本不能正常工作,只有每次make clean再make才行。
安裝完ccache後,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic link,鏈到/usr/bin/ccache上。總之確認系統在調用gcc等命令時會調用到ccache就可以了(通常情況下/usr/local /bin會在PATH中排在/usr/bin前面)。
安裝的另外一種方法:
vi ~/.bash_profile
把/usr/lib/ccache/bin路徑加到PATH下
PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin
這樣每次啟動g++的時候都會啟動/usr/lib/ccache/bin/g++,而不會啟動/usr/bin/g++
效果跟使用命令行ccache g++效果一樣
這樣每次用戶登錄時,使用g++編譯器時會自動啟動ccache
繼續測試:
用ccache的第一次編譯(make -j4):23分38秒
用ccache的第二次編譯(make -j4):8分48秒
用ccache的第三次編譯(修改若干配置,make -j4):23分48秒

看來修改配置(我改了CPU類型...)對ccache的影響是很大的,因為基本頭文件發生變化後,就導致所有緩存數據都無效了,必須重頭來做。但如果只是修改一些.c文件的代碼,ccache的效果還是相當明顯的。而且使用ccache對項目沒有特別的依賴,布署成本很低,這在日常工作中很實用。
可以用ccache -s來查看cache的使用和命中情況:
cache directory /home/lifanxi/.ccachecache hit 7165cache miss 14283called for link 71not a C/C++ file 120no input file 3045files in cache 28566cache size 81.7 Mbytesmax cache size 976.6 Mbytes
可以看到,顯然只有第二編次譯時cache命中了,cache miss是第一次和第三次編譯帶來的。兩次cache佔用了81.7M的磁碟,還是完全可以接受的。
distcc
一台機器的能力有限,可以聯合多台電腦一起來編譯。這在公司的日常開發中也是可行的,因為可能每個開發人員都有自己的開發編譯環境,它們的編譯器版本一般是一致的,公司的網路也通常具有較好的性能。這時就是distcc大顯身手的時候了。
使用distcc,並不像想像中那樣要求每台電腦都具有完全一致的環境,它只要求源代碼可以用make -j並行編譯,並且參與分布式編譯的電腦系統中具有相同的編譯器。因為它的原理只是把預處理好的源文件分發到多台計算機上,預處理、編譯後的目標文件的鏈接和其它除編譯以外的工作仍然是在發起編譯的主控電腦上完成,所以只要求發起編譯的那台機器具備一套完整的編譯環境就可以了。
distcc安裝後,可以啟動一下它的服務:
/usr/bin/distccd --daemon --allow 10.64.0.0/16
默認的3632埠允許來自同一個網路的distcc連接。
然後設置一下DISTCC_HOSTS環境變數,設置可以參與編譯的機器列表。通常localhost也參與編譯,但如果可以參與編譯的機器很多,則可以把localhost從這個列表中去掉,這樣本機就完全只是進行預處理、分發和鏈接了,編譯都在別的機器上完成。因為機器很多時,localhost的處理負擔很重,所以它就不再「兼職」編譯了。
export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.64.25.3"
然後與ccache類似把g++,gcc等常用的命令鏈接到/usr/bin/distcc上就可以了。
在make的時候,也必須用-j參數,一般是參數可以用所有參用編譯的計算機CPU內核總數的兩倍做為並行的任務數。
同樣測試一下:
一台雙核計算機,make -j4:23分16秒
兩台雙核計算機,make -j4:16分40秒
兩台雙核計算機,make -j8:15分49秒
跟最開始用一台雙核時的23分鍾相比,還是快了不少的。如果有更多的計算機加入,也可以得到更好的效果。
在編譯過程中可以用distccmon-text來查看編譯任務的分配情況。distcc也可以與ccache同時使用,通過設置一個環境變數就可以做到,非常方便。
總結一下:
tmpfs: 解決IO瓶頸,充分利用本機內存資源
make -j: 充分利用本機計算資源
distcc: 利用多台計算機資源
ccache: 減少重復編譯相同代碼的時間
這些工具的好處都在於布署的成本相對較低,綜合利用這些工具,就可以輕輕鬆鬆的節省相當可觀的時間。上面介紹的都是這些工具最基本的用法,更多的用法可以參考它們各自的man page。
5.還有提速方法是把屏幕輸出重定向到內存文件或/dev/null,因對終端設備(慢速設備)的阻塞寫操作也會拖慢速度。推薦內存文件,這樣發生錯誤時,能夠查看。

⑷ 有什麼辦法能加快Android Studio中Gradle build速度

有2種方法。

1、使用第三方編譯插件,例如freeline這種插件,阿里的,加快編譯。

2、最大化graldle 編譯內存,如下圖

⑸ 如何優化安卓系統,加快啟動速度

系統啟動過程中,會掃描系統指定目錄下的所有apk文件,這個過程也是非常耗時的,預裝的apk文件越少,系統啟動速度也就越快,因此,精簡預裝apk也是優化系統啟動速度最重要的手段之一。

要想減少預裝的apk文件,則需要分析系統的build文件,將不需要的apk編譯選項刪除掉

⑹ Android Studio編譯慢,卡死和狂佔內存怎麼破

已經使用AndroidStudio進行開發超過一年,隨著項目的增大,依賴庫的增多,構建速度越來越慢,現在最慢要6分鍾才能build一個release的安裝包,在網上查找資料,發現可以通過一些配置可以加快速度,這里跟大家分享一下。開啟gradle單獨的守護進程在下面的目錄下面創建gradle.properties文件:/home//.gradle/(Linux)/Users//.gradle/(Mac)C:\Users\\.gradle(Windows)並在文件中增加:org.gradle.daemon=true同時修改項目下的gradle.properties文件也可以優化:#Project-wideGradlesettings.#IDE(e.g.AndroidStudio)users:##configuredthroughtheIDE.###sec:configuration_on_demandorg.gradle.configureondemand=true同時上面的這些參數也可以配置到前面的用戶目錄下的gradle.properties文件里,那樣就不是針對一個項目生效,而是針對所有項目生效。上面的配置文件主要就是做,增大gradle運行的java虛擬機的大小,讓gradle在編譯的時候使用獨立進程,讓gradle可以平行的運行。修改androidstudio配置在androidstudio的配置中,開啟offline模式,以及修改配置。實際上的配置和上面的一大段一樣,主要是在這個地方配置的只會在ide構建的時候生效,命令行構建不會生效。命令行構建基於上面的配置,命令行構建時在命令後面加上這個參數即可--daemon--parallel--offline。引入依賴庫時使用aar使用網上第三方的依賴庫時盡量使用aar,可以在maven/android/2015/03/01/android-reference-local-aar/。

⑺ 安卓系統怎麼加速

隨著使用手機的時間越長,安卓手機的運行速度越來越慢,而內存大小直接影響運行速度,手機運行速度慢,一般很有可能因為內存吃緊了,所以要養成良好的手機使用習慣,及時清理內存,禁止自啟動應用,刪除殘留垃圾,才能發揮手機最大性能。

1、在「開發者選項」中將三個「動畫選項」設置成0.5x
「窗口動畫縮放」、「過渡動畫縮放」和「動畫程序時長調整」等三個動畫選項能讓操作界面更有動感,但是它們占據著很大的資源。在安卓系統的開發者選項中,將這三個動畫選項設置為0.5x,將能節省大量的系統資源,對於緩解手機遲鈍、提升系統流暢度有很大作用。

2、把默認運行環境Delvik修改為ART
安卓系統一般的默認運行環境為Delvik,不過自從安卓4.4增加了ART運行環境之後,安卓系統的流暢度也大為提升。資料顯示,Delvik環境下開啟應用需要執行編譯+運行,因此速度比較慢;而ART環境則在應用安裝的時候就已經編譯好了,開啟即可運行,因此速度比較快。簡單點說,Delvik就是一輛折疊好的自行車,每次使用都需要組裝,而ART就是一輛已經組裝好的自行車,每次都可直接使用。當然,要把默認運行環境從Delvik修改為ART,你的系統必須升級到4.4。

3、利用「PP大掃除」提升系統流暢度
除了以上兩種方法,通過PP助手安卓版的PP大掃除功能也能提升系統流暢度。用戶只需在PP助手安卓版底部功能欄的「更多」中找到「PP大掃除」,點擊就能享受一鍵掃描和清除垃圾文件的服務,有效幫助安卓系統「瘦身」,大幅提高系統流暢度。

⑻ 如何優化 Android Studio 啟動,編譯和運行速度

優化 Android Studio 啟動、編譯和運行速度?
【阿里雲】攜手碼雲為社區用戶送福利,全網專享,詳情請點擊>>> »
作為一名 Android 程序員,選擇一個好的 IDE 工具可以使開發變得非常高效,很多程序員喜歡使用 Google 的 Android Studio來進行開發,但使用起來有時會出現卡頓等問題。本文介紹了幾種優化 Android Studio 啟動、編譯、運行速度的方法。
首先解決一個 Android Studio 啟動報錯的問題
1、進入剛安裝的 Android Studio 目錄下的bin目錄。找到 idea.properties 文件,用文本編輯器打開。
2、在 idea.properties 文件末尾添加一行:disable.android.first.run=true,然後保存文件。
3、關閉 Android Studio 後重新啟動,便可進入界面。
優化 Android Studio 啟動速度
1、開啟 gradle 單獨的守護進程
當 Android Studio 遇到錯誤的時候,往往會導致 Android Studio 掛掉,為了防止推出程序,則另外開啟一個線程來守護 Android Studio 的進程,具體操作。 在 C:\Users\.gradle 這個目錄下,創建 gradle.properties 配置文件,復制以下配置進行優化。
# Project-wide Gradle settings.
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m
-XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true

這些配置文件主要就是增大 gradle 運行的 java 虛擬機的大小,讓 gradle 在編譯的時候使用獨立進程,讓 gradle 可以很好的運行。
2、擴大內存
64位:\studio64.exe.vmoptions or studio.exe.vmoptions
32位:\studio.exe.vmoptions or studio.exe.vmoptions
編輯這個文件,在最開始的兩行設置內存大小,類似於eclipse.ini中的配置。配置如下:
-Xms256m
-Xmx1024m

⑼ Android Studio編譯慢、卡死和狂佔內存怎麼破

在2020年,仍然使用2g內存的電腦,你可以改變職業。沒有合適的設備,什麼都沒用。Android Studio是內存,設備爛卡死不可避免,要解決卡的問題,一定要升級硬體設備。另一些人則說,對修辭學的回答相當有力,在一定程度上,加快編譯的速度,卻不能解決卡死的問題,沒有人能解釋為什麼會加快編譯的速度。

至於加快編譯,有一種方法,我認為一些主要適用性的答案並不強,實際上應該從gradle開始,什麼不是正確的地方,也請輕噴,有什麼問題可以留個信息。

我談到了下面的所有步驟,建議在最後進行。在終端編譯中有很多好處:

能觀察整個編譯過程,幫助理解層次構建過程;

可以看出哪些任務在編譯過程中耗費時間,可以較慢地編寫出適合的補救方案;

可以終止編譯,如果在某個階段被卡住,CTRL + c終止編譯,Android也會終止在Studio中編譯,但基本上九次會失敗;

因為它最終會對Android Studio產生影響,基本不會導致Android Studio caton;不滿足Android工作室的各種bug ?

最後,為什麼要減少設置中模塊的數量。Gradle實際上可以加速編譯,但是有很多限制?

首先,我們認為編譯過程,首先解析gradle配置,設置任務依賴於有向圖,然後執行每個任務的模塊,如果我們通過maven的依賴關系,使用模塊的aar(單android庫),如果我們想要改變文件在這個模塊,不要再次修改上傳下載,每次都是很好,但是有一個致命的問題:不修改版本號,快照通常不是做的想法。這可能導致一些不會生效的變化,並且需要時間來解決這個問題。但是,有一種方法可以在一定程度上解決這個問題,並添加以下腳本:

項目。配置。所有(新操作<配置> ({@ Overridevoidexecute(配置文件){文件)。ResolutionStrategy。TimeUnit CacheDynamicVersionsFor(5。分鍾)

文件。ResolutionStrategy。TimeUnit CacheChangingMolesFor(0。秒)} })

有人會問,插件,每個人都要開發一個模塊,對於每個模塊的維護都要打包到maven,每次我修改,甚至很小的改動,也要做一個上傳,就會遇到快照不做同樣的問題。嘿,嘿,這個問題,我們公司有一個等級插件,已經解決了,至於解決方案,是公司機密,我不會說。

一件事,我相信大多數開發人員共同發展是單一模塊,該模塊的情況並不多,所以最基本的也是依賴aar或罐子里,並不存在所謂的圖書館aar上傳,所以一些答案的耶和華說並不意味著什麼,這就是為什麼我說影響編譯速度的情況主要集中在它的生命周期的第三階段,第三階段的優化,看到我的答案。

閱讀全文

與加快安卓系統編譯速度相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:385
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350