art源碼
A. android的哪個版本開始岀現虛擬機art
Android 4.4.2與4.4.4同屬於4.4系列的操作系統,沒有什麼區別。
4.4以上系統中採用默認採用ART模式,因此4.4.2 和 4.4.4 中都支持ART模式。
ART模式英文全稱為:Android runtime,谷歌Android 4.4系統新增的一種應用運行模式,與傳統的Dalvik模式不同,ART模式可以實現更為流暢的安卓系統體驗,對於大家來說,只要明白ART模式可讓系統體驗更加流暢,不過只有在安卓4.4以上系統中採用此功能。
1. Android系統是以linux系統為底層構建的,Android系統是開源(源代碼公開)的,Android系統勢必會適配到不同硬體配置的設備上,因此谷歌為了降低應用的開發難度在Linux底層之上構築了一個名為「Dalvik」的虛擬機。
2. 因為Dalvik虛擬機的存在,Android系統的開發者只需使用谷歌提供的SDK(軟體開發工具包)即可較為輕松的按照一套「規則」創建APP,不用顧忌硬體、驅動等問題,在每次執行應用的時候Dalvik虛擬機都會將程序的語言由高級語言編譯為機器語言,這樣當前設備才能夠運行這一應用。
3. 了解了Dalvik模式之後,便要了解一下Android4.4中新加入的ART模式,該模式的完整名稱是Androidruntime,事實上谷歌的這次優化源於前不久其收購的一家名為Flexycore的公司,該公司一直致力於Android系統的優化,而ART模式也是在該公司的優化方案上演進而來。
4. ART模式與Dalvik模式最大的不同在於,在啟用ART模式後,系統在安裝應用的時候會進行一次預編譯,在安裝應用程序時會先將代碼轉換為機器語言存儲在本地,這樣在運行程序時就不會每次都進行一次編譯了,執行效率也大大提升。
開啟方法:
1. 手機設置中,找到關於手機--版本,不停點擊根據提示就可以開啟【開發者選項】
2. 在開發者選項中找到【運行環境】,這裡面就有兩種運行模式一種是默認的Dalvink,另一種就是ART模式。這是只有選擇ART就行。
3. 選中ART模式後,手機會給出類似於安全聲明之類的提示,然後就會提示重啟,按提示操作後。重啟的時候就會出現手機在自動升級的通知,這個根據手機中有的軟體需要的時間3-5分鍾不等。
4. ART模式雖然使得程序運行流暢多了,但是,也佔用了更多的系統內存,同時在安裝程序的時候時間也相對增多了(ART好像就是在這時候進行預編譯的),這樣開機也會慢了一些。
B. 買BB霜的網站http://www.art0591.com這個誰能模仿個,我想這個網站的源碼
tao寶里搜索 店鋪「v5創意小店」,裡面有源碼出售,都是店主以前買過的,現在低價出售。
C. 求小米1s安卓4.4.2能開art的刷機包鏈接,穩定流暢!
小米M1/M1S FIUI beta 2.7.0 mioneplus
http://www.shuajiluntan.com/thread-1122-1-1.html
ROM名稱 FIUI for小米1/1sbeta 2.7.0
Android版本 4.4.4
FIUI 版本 beta_2.7.0
基於版本 CM11源碼二次開發編譯
適配機型 小米1/1s
這時第三方的
另外安卓4.42貌似不可以開art
這個是第三方4.4.4 可以開不 我也不清楚 你可以刷入試試
D. AndroidStudio 里怎麼查看源碼
本文是以源碼中development/tools/idegen/README作為指導文檔.
環境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源碼
由於AS是基於IntelliJ IDEA開發的,所以本文也適用於IntelliJ IDEA
一、修改Android Studio(以下簡稱AS)的內存配置
因為在導入源碼時需要消耗大量內存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的機器修改studio.vmoptions)中-Xms和-Xmx的值。文檔中使用的是748m, 可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一個沒有classpath的JDK, 這樣可以確保使用源碼里的庫文件
並將其作為要使用的SDK的java SDK。如下圖
三、生成導入AS所需配置文件(*.ipr)
①編譯源碼(為了確保生成了.java文件,如R.java;如果編譯過,則無需再次編譯)
②檢查out/host/linux-x86/framework/目錄下是否有idegen.jar
如果idegen.jar不存在,執行:
mmm development/tools/idegen/
在5.0.1的源碼中會生成res.java的文件夾,導致idegen.jar運行時拋FileNotFoundException,這是idegen的代碼不夠嚴謹造成的。
我的分享里有修改這個bug的patch,或者直接使用我分享的idegen.jar。
③執行
development/tools/idegen/idegen.sh
等待出現類似下面的結果:
Read excludes: 5ms
Traversed tree: 44078ms
這時會在源碼的根目錄下生成android.ipr和android.iml兩個IntelliJ IDEA(AS是基於IntelliJ IDEA社區版開發的)的配置文件
Tips:
AS在導入代碼時比較慢,建議先修改android.iml,將自己用不到的代碼exclude出去.可以仿照過濾.repo文件夾的語法,如:
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
這樣在導入時就會跳過abi和art文件夾.過濾的越多,AS的處理速度就會越快.
④在AS中打開源碼根目錄下新生成的android.ipr
如果在導入時AS出現
則建議按照其給定的解決方法來解決(網址:http://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit),具體內容如下圖:
四、解決源碼中跳轉錯誤問題
①為當前工程設置正確的SDK和JDK
②設置'Moles'的依賴
先將所有依賴刪掉,只留下上圖'1'所指向的兩個(注意:這里刪除全部只是為了方便。如果確實用到了.jar,在將它們的路徑添加進來就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
點擊上圖中'2'指向的'+'並選擇上圖'3'指向的'Jars or directories'選項,依次將frameworks和external文件夾添加進來.如:
其它版本的代碼在添加frameworks時可能會顯示成:
沒有關系,只是顯示問題,點擊OK還是會把frameworks路徑添加進去的.
如果還有代碼跳轉錯誤,請仿照上面的步驟將相應代碼的路徑或jar文件添加到其Dependencies標簽頁中即可.
五、DEBUG源碼
我們可以通過給剛導入的工程在'Moles'中添加'Android Framework'來讓AS將它作為一個Android工程,從而方便我們調試代碼.
可以按照上圖中'1'和'2'來添加Android Framework支持.
在代碼中加斷點,然後選擇'Run'->'Attach debugger to Android process'或者直接點擊下圖所示的圖標
在彈出的選擇進程(Choose Process)對話框中,勾選顯示所有進程,選擇要DEBUG的代碼所在的進程,點擊OK即可.
六、其它
代碼中很多地方提示Call requires API Level x.... 出現這個問題是因為AS將我們的工程當做安卓應用程序工程了,且源碼中沒有指定minSdkVersion.
我們只需在源碼根目錄加一個聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個AndroidManifest.xml)。
也可以考慮使用build.gradle來解決該問題。
E. Android運行環境Dalvik模式和ART模式的區別
Dalvik虛擬機在安卓4.4之前用的比較多,從安卓5.0開始,開始使用ART虛擬機,Dalvik虛擬機在用戶點擊某個應用時對這個應用中classes.dex的源碼文件編譯為機器碼,然後才開始執行機器碼中的指令,簡單來說就是你在看一份英文寫的報紙,你要想看懂這份報紙必須時刻的翻譯報紙中的每個英語單詞,然後讀懂它,可是這樣的閱讀速度還是比不上看中文寫的書,因為你的第一語言是中文,就像手機的第一語言是二進制寫成的機器碼,第二語言就是C語言或者是Java語言,這也就是為什麼安卓的運行速度很緩慢的原因,可是在ART虛擬機中,在你安裝應用的過程中已經將應用中的程序包也就是classes.dex翻譯成了機器可以看懂的機器碼,然後寫入到系統存儲里了,簡單的來說就是你想如果想看一份外國的報紙,但是看英文很累,於是你委託別人幫你翻譯報紙內容,人家幫你翻譯出來並將中文意思寫在紙上,你就很容易閱讀了,這也就是為什麼ART虛擬機比Dalvik虛擬機效率要高的原因了
F. 網站源代碼如何在線進行調試
開發調試環境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源碼
由於AS是基於IntelliJ IDEA開發的,所以本文也適用於IntelliJ IDEA
一、修改Android Studio(以下簡稱AS)的內存配置
因為在導入源碼時需要消耗大量內存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的機器修改studio.vmoptions)中-Xms和-Xmx的值。文檔中使用的是748m, 可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一個沒有classpath的JDK, 這樣可以確保使用源碼里的庫文件
並將其作為要使用的SDK的Java SDK。如下圖
三、生成導入AS所需配置文件(*.ipr)
①編譯源碼(為了確保生成了.java文件,如R.java;如果編譯過,則無需再次編譯)
②檢查out/host/linux-x86/framework/目錄下是否有idegen.jar
如果idegen.jar不存在,執行:
mmm development/tools/idegen/
在5.0.1的源碼中會生成res.java的文件夾,導致idegen.jar運行時拋FileNotFoundException,這是idegen的代碼不夠嚴謹造成的。
我的分享里有修改這個bug的patch,或者直接使用我分享的idegen.jar。
③執行
development/tools/idegen/idegen.sh
等待出現類似下面的結果:
Read excludes: 5ms
Traversed tree: 44078ms
這時會在源碼的根目錄下生成android.ipr和android.iml兩個IntelliJ IDEA(AS是基於IntelliJ IDEA社區版開發的)的配置文件
Tips:
AS在導入代碼時比較慢,建議先修改android.iml,將自己用不到的代碼exclude出去.可以仿照過濾.repo文件夾的語法,如:
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
這樣在導入時就會跳過abi和art文件夾.過濾的越多,AS的處理速度就會越快.
④在AS中打開源碼根目錄下新生成的android.ipr
如果在導入時AS出現
則建議按照其給定的解決方法來解決(網址:http://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit),具體內容如下圖:
四、解決源碼中跳轉錯誤問題
①為當前工程設置正確的SDK和JDK
②設置'Moles'的依賴
先將所有依賴刪掉,只留下上圖'1'所指向的兩個(注意:這里刪除全部只是為了方便。如果確實用到了.jar,在將它們的路徑添加進來就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
點擊上圖中'2'指向的'+'並選擇上圖'3'指向的'Jars or directories'選項,依次將frameworks和external文件夾添加進來.如:
其它版本的代碼在添加frameworks時可能會顯示成:
沒有關系,只是顯示問題,點擊OK還是會把frameworks路徑添加進去的.
如果還有代碼跳轉錯誤,請仿照上面的步驟將相應代碼的路徑或jar文件添加到其Dependencies標簽頁中即可.
五、DEBUG源碼
我們可以通過給剛導入的工程在'Moles'中添加'Android Framework'來讓AS將它作為一個Android工程,從而方便我們調試代碼.
可以按照上圖中'1'和'2'來添加Android Framework支持.
在代碼中加斷點,然後選擇'Run'->'Attach debugger to Android process'或者直接點擊下圖所示的圖標
在彈出的選擇進程(Choose Process)對話框中,勾選顯示所有進程,選擇要DEBUG的代碼所在的進程,點擊OK即可.
六、其它
代碼中很多地方提示Call requires API Level x.... 出現這個問題是因為AS將我們的工程當做安卓應用程序工程了,且源碼中沒有指定minSdkVersion.
我們只需在源碼根目錄加一個聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個AndroidManifest.xml)。
也可以考慮使用build.gradle來解決該問題。
G. android源碼 art目錄 沒有
沒有就自己建一個srt
H. 網上給的android源代碼怎麼用
git的工程裡面不是都有英文的readme么,File -> import先瀏覽到目錄到library,導入library,然後,瀏覽到samples目錄導入samples,結束。
我總共就花了兩分鍾下載導入,build,截圖,發帖回答。