❶ 如何搭建android開發環境_如何搭建一個Android開發環境
我的第一個Android程序
今天給大家分享一下我的第一個Android項目:helloword
首先我們開發Android程序需要一個開發環境,下面先分享一下環境搭建的方法
Android開發環境搭建非常簡單,google為我們提供了一套洞吵完整的開發工具包下載
點擊DownloadtheSDK就會出現下面的頁面,選擇同意以上條款,並根據自己的系統選擇對應的版本,我的電腦是32位的所以就選擇了32-bit的,然後點擊下面藍色的按鈕就可以開始下載啦~~
下載好了之後呢是一個510M的壓縮文件,選擇好目錄解桐茄壓縮之後能我們會得到
這三個東西,這里呢我們看到了我們熟悉的Eclipse文件夾了,沒錯,這個文件夾下呢就是我們的開發工具啦,但是不要著急,但開始之前呢,局顫察我們需要先配置一下我們的環境變數
將SDK下的platform-tools和tools兩個文件夾的完整路徑呢配置到我們的環境變數PATH中
我的系統是window7的,配置環境變數的方法呢:右擊我的電腦->屬性->高級設置->環境變數->雙擊Path將連個文件夾的路徑追加進去,注意中間要用分號隔開,點擊確定。
配置好所有的環境變數後,打開我們的Eclipse文件夾下的eclipse.exe,第一次打開會彈出一個對話框,設置我們的工作路徑,也就是我們保存項目的地方
經過載入之後呢,我們就看到操作界面了。
首先先創建一個Android的虛擬機,點擊window下的AndroidVirtualDevicesManager選項
就可以看到我們的Android虛擬機管理界面了
點擊new新建一個虛擬機
選擇好後點擊確定,一個虛擬機就創建好了,選擇我們創建好,選中我創建好的虛擬機,start
載入界面
完成後就能看到我們的虛擬機啦~經過漫長的啟動終於看到虛擬機界面了。
准備工作都做好了,下面開始創建一個Android項目啦,萬能的helloword,哈哈!
虛擬機最小化,進入Eclipse界面,菜單欄File->new->Androidapplicationproject,新建一個Android項目
接著會出現一個界面,選擇一些參數
接下來就是一路next然後finish,一個新的Android項目就建好了
接著在界面會看到Eclipse的界面了
右擊我們的項目,runas->選擇Androidapplication,就可以運行到我們的虛擬機上
❷ android虛擬機不能運行程序
虛擬機不能運行,通常是SDK沒有更新,創建的虛擬機就無法啟動,或者是創建虛擬機的時候,內存選擇過小導致。
建議重新創建Android虛擬機:
打開Eclipse軟體後,在主界面點擊Android Virtual Device Manager。
出現虛擬機管理界面,點擊New按鈕彈出虛擬機參數配置界面,選擇適宜的虛擬機參數比如屏幕大小、解析度、內存RAM、SD卡大小等,填入後點擊OK創建完畢後關閉虛擬機管理頁面。
更新SDK,將虛擬機所需要的SDK Build-tools及system image都更新下來載來,重啟即可。
❸ 安卓art虛擬機在什麼位置
一、概述
我們知道Android的程序雖然也是使用Java/Kotlin語言編碼,並生成.class位元組碼,但並不能直接運行在JVM上,而是運行在自己的VM上。而Android程序之所以不能在JVM上運行的根本原因是.class位元組碼文件並不是Android的最終可執行文件(執行效率問題),而是一個過渡產物,最終會生成dex文件在Android VM上執行。
1.1 Android虛擬機分類:
Android VM大體分為兩種: Dalvik 虛擬機和 ART虛擬機。
Dilvik 虛擬機:Android 5.0 版本之前。
ART虛擬機:Android 5.0 版本全面使用。
1.2 虛擬機的演變及優化:
Android 1.0,使用Dalvik作為Android虛擬機運行環境,此時的虛擬機是一個解釋執行器。
Android 2.2,Android 虛擬機中加入了JIT編譯器(Just-In-Time Compiler)。
Android 4.4,全新的ART虛擬機運行環境誕生,此時ART和Dalvik是共存的,用戶可以在兩者之間進行選擇。
Android 5.0,ART全面取代了Dalvik成為了Android虛擬機運行環境,並使用AOT預編譯技術在安裝Apk時全量預編譯 。
Android 7.0,ART虛擬機採用 JIT/AOT混合編譯模式。
二、Dalvik
Dalvik是Google公司自己設計用於Android平台的虛擬機,它是Android平台的重要組成部分,支持dex格式(Dalvik Executable)的Java應用程序的運行。dex格式是專門為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。Google對其進行了特定的優化,經過優化的Dalvik,具有高效、簡潔、節省資源的特點,同時還允許在有限的內存中同時運行多個虛擬機的實例,並且每一個Dalvik 應用作為一個獨立的Linux進程執行。獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉。
2.1 Dalvik和JVM的區別
Dalvik 基於寄存器,而 JVM 基於棧。
指令數量:基於寄存器的操作指令,會增加操作數的大小(劣勢),但是會大大減少操作指令的數量(優勢)
操作效率:基於寄存器(CPU上)的指令操作速度比基於操作數棧(主存)的速度快。
移植性:基於寄存器執行效率好,但是可移植性差,難跨平台。
Dalvik虛擬機有共享機制,不同應用之間在運行時可以共享相同的類,擁有更高的效率。
2.2 JIT(Just-In-Time Compile)
Android 2.2之前,Dalvik虛擬機是通過解釋器 (解釋器逐條讀入位元組碼 -> 逐條翻譯成機器碼 -> 執行機器碼)來執行程序的,效率低。針對這個問題,引進了JIT(即時編譯器)技術。它是一種優化手段。
JIT技術:將解釋過的機器碼緩存起來,下次再執行時到這個方法的時候,則直接從緩存裡面取出機器碼來執行。減少了讀取位元組碼和翻譯位元組碼的操作。以此來提高效率。JIT技術的引入使得Dalvik的性能提升了3~6倍。
注意: 並不是所有執行過的代碼對應的機器碼都會被緩存起來。而是只有被認定為熱點代碼(Hot Spot Code) 的代碼才會。這里所指的熱點代碼主要有兩類,包括:
被多次調用的方法
被多次執行的循環體(雖然只是循環體被多次執行,但仍是將整個方法的機器碼緩存起來)。
缺點: JIT技術的缺點:
每次重新啟動引用都需要重新編譯。
運行時比較耗電。
三、ART 虛擬機
ART虛擬機在Android 5.0開始替換Dalvik虛擬機,其處理應用程序執行的方式不同於Dalvik虛擬機,它不使用JIT而是使用了AOT(Ahead-Of-Time),也就是提前編譯技術。並對垃圾收集器也進行了改進和優化。
預先編譯機制(AOT)可提高應用的性能。同時ART 還具有比 Dalvik 更嚴格的安裝時驗證。
3.1 AOT(Ahead-Of-Time)預先編譯技術
AOT(提前編譯技術): 簡單來說就是提前將位元組碼轉換成本地機器碼,然後存儲在本地磁碟上,運行時可以直接執行,避免了Dalvik時期的應用運行時再來解釋位元組碼。運行時效率大大提高。
在Android 7.0 之前,Android系統安裝Apk時,會進行一次全量預編譯,將位元組碼預先編譯成本地機器碼,生成 oat文件,並存儲在本地磁碟上。這樣在App每次運行時就不需要重新編譯,可以直接使用編譯好本地機器碼,運行效率大大提升。但是這也使得安裝應用的時間大大增加,於是在Android7.0及之後,又重新引進了JIT技術,形成JIT/AOT混合編譯模式。
混合編譯的特點:
應用在安裝的時候,不進行AOT預編譯。
應用運行時直接通過解釋器翻譯位元組碼為機器碼然後執行。(在應用運行期間使用了JIT技術)並同時記錄熱點代碼信息到profile文件中。
手機進入空閑或充電狀態的時候,系統會掃描APP目錄下的profile文件,並通過AOT對熱點代碼進行編譯。
下一次啟動時,會根據profile文件來運行已編譯好的機器碼,避免在運行時對已經轉換為機器碼的方法又進行了JIT編譯。
應用運行期間會持續對熱點代碼進行記錄,以方便在空閑或充電時進行AOT,以此循環。
使用JIT編譯器來對AOT編譯器進行補充,降低了Apk安裝的時間,提升了運行時性能,節省了存儲空間,加快應用運行速度。
小結:
Android 7.0以前,採用AOT全量預編譯,Apk安裝時預編譯dex生成對應的機器碼文件。但預編譯量大導致Apk安裝時間長。
Android 7.0及之後,採用JIT/AOT混合編譯模式,根據對應的profile在空閑時進行AOT預編譯。
參考: 實現 ART 即時 (JIT) 編譯器
3.2 Dalvik與ART虛擬機的區別
Dalvik每次都要編譯再運行,Art只會安裝時啟動編譯(7.0之前全量預編譯)。
Art佔用空間比Dalvik大(原生代碼佔用的存儲空間更大),就是用「空間換時間」。
Art減少編譯,減少了CPU使用頻率,使用明顯改善電池續航。
Art應用啟動更快、運行更快、體驗更流暢、觸感反饋更及時。
3.3 Interpreter解釋器、JIT、AOT的在ART上的使用
解釋器: 逐條讀入位元組碼 -> 逐條翻譯成機器碼 -> 執行機器碼,重復執行同一代碼時需要重新翻譯執行。
JIT編譯器: 對運行時的熱點代碼(熱點代碼)進行編譯,且緩存在內存中,當下次繼續執行時,直接從內存中獲取,減少重復編譯。
AOT編譯器: 在運行前將位元組碼轉換為機器碼,在運行時直接運行轉換後的機器碼。
在這里插入圖片描述
3.4 垃圾回收方面的優化
Android虛擬機(Dalvik && ART)學習
四、Android中的幾種文件
4.1 Apk文件
APK 文件其實是 zip 格式,在Window平台上可以直接將後綴格式改為zip進行解壓。解壓後的目錄如下圖所示:
在這里插入圖片描述
文件名 說明
META-INF/ 信息描述,簽名等用途。編譯生成一個apk包時,會對所有要打包的文件做一個校驗計算,並把計算結果放在META-INF目錄下。而在Android手機上安裝apk包時,應用管理器會按照同樣的演算法對包里的文件做校驗,如果校驗結果與META-INF下的內容不一致,系統就不會安裝這個apk。這就保證了apk包里的文件不能被隨意替換
res/ 存放資源文件
libs/ 存放的是 ndk 編出來的 so 庫
AndroidManifest.xml 程序全局清單文件
classes.dex dalvik 位元組碼
resources.ars 編譯後的二進制資源文件,主要是對應的索引
assets/ 保留工程中assets目錄,其他工程下的、jar包中的assets也會合並到該assets目錄下。
4.2 dex文件
dex 文件是可被Dalvik虛擬機識別並執行的文件, Dalvik 會執行 .dex 文件中的 dalvik 位元組碼,但一般Dalvik在執行dex優化後的文件(即odex文件)。
dex文件特點:
dex文件是Android系統中的一種文件,是一種特殊的數據格式,和Apk、jar等格式文件類似。
文件更加緊湊:dex文件是能夠被DVM識別,載入並執行的文件格式。相比於Jar文件,dex會把所有包含的信息整合在一起,減少冗餘信息,從而降低了載入文件時的I/O耗時,提高類的查找速度。
dex文件包含應用程序的全部操作指令和運行時數據。
相對於PC上的JVM能運行 .class文件,Android上的Dalvik虛擬機能運行 .dex 文件。
.dex文件和 .class文件的格式對照:
在這里插入圖片描述
dex 文件結構:
在這里插入圖片描述
4.3 引起dex文件65535問題的原因
當Android系統啟動一個Apk時,會通過 dexopt 工具對dex進行優化。dexopt 的執行過程是在第一次載入dex文件的時候執行的。這個過程會生成一個odex文件,即Optimised Dex (執行odex的效率會比直接執行Dex文件的效率要高很多)。但早期Android系統中, dexopt 有一個問題(即65535問題)。dexopt會把每一個類的方法id檢索起來,存在一個鏈表結構裡面。但是這個鏈表的長度是用一個 short類型(2^16=65536)來保存的,導致了方法id的數目不能夠超過65536個。
4.4 odex文件 (Optimized DEX)
背景: 對Android dex文件進行優化來說,需要注意的一點是dex文件的結構是緊湊的,但是我們還是要想方設法進行運行速度的提高,因此我們仍然需要對dex文件進一步優化。
odex文件的使用場景:
安裝階段: Apk在安裝時,系統會進行驗證和優化,目的是為了校驗代碼合法性及優化代碼執行速度。當驗證和優化後,系統會從Apk中提取dex文件進行優化,並將優化後的產物(odex文件)保存到 data/dalvik-cache 目錄下。
運行階段: 當運行Apk的時候,會直接載入odex文件,避免重復驗證和優化,加快了Apk的響應時間。
odex 文件的生成過程:
Android 5.0之前:Dalvik虛擬機
Dalvik虛擬機會在執行dex文件前對dex文件做優化,生成可執行文件odex,保存到 data/dalvik-cache 目錄,最後把Apk文件中的dex文件刪除。
注意: 此時生成的odex文件後綴依然是dex ,它是一個dex文件,裡面仍然是位元組碼,而不是本地機器碼。
Android5.0 <= Version < Android 8.0 (Android O):ART虛擬機
Android5.0之後使用ART虛擬機,ART虛擬機使用AOT預編譯生成oat文件。oat文件是ART虛擬機運行的文件,是ELF格式二進制文件。oat文件包含dex和編譯的本地機器指令,因此比Android5.0之前的odex文件更大。
oat文件生成過程:
App在首次安裝的時候,dex2oat 工具默認會把 dex文件翻譯成本地機器指令,生成ELF格式的OAT文件,並將其放在了 /data/dalvik-cache 或 /data/app/packagename/ 目錄下,此時oat文件後綴格式為odex。
ART載入oat文件後不需要經過處理就可以直接運行,它在編譯時就從位元組碼裝換成機器碼了,因此運行速度更快。
Dalvik虛擬機執行程序dex文件前,系統會對dex文件做優化,生成可執行文件odex,保存到 data/dalvik-cache 目錄,最後把apk文件中的dex文件刪除。 (注意:此時生成的odex文件後綴依然是dex ,它是一個dex文件,裡面仍然還是位元組碼,而不是本地機器碼。)
注意: Android5.0及之後版本生成的 oat文件後綴還是odex,但是已經不是android5.0 及之前版本的文件格式,而是ELF格式封裝的本地機器碼。可以認為oat在dex上加了一層殼,可以從oat里提取出dex。
Android O及之後(>=Android 8.0):ART虛擬機
Android 8.0及之後版本,dex2oat會直接生成兩個oat文件 (即vdex文件 和 odex文件)。其中 odex 文件是從vdex 文件中提取了部分模塊生成的一個新的可執行二進制碼文件,odex 從vdex 中提取後,vdex 的大小就減少了。
文件生成過程:
App在首次安裝的時候,odex 文件就會生成在 /system/app/<packagename>/oat/ 下。
在系統運行過程中,虛擬機將其 從/system/app 下 到 /data/davilk-cache/ 下。
odex + vdex = Apk 的全部源碼 (vdex 並不是獨立於odex 的,文件 odex + vdex 才代表一個Apk )。
odex 的優點和缺點:
優點:
啟動快: 省去了系統第一次啟動應用時從Apk文件中讀取dex文件,並對dex文件做優化的過程。和
對RAM的佔用(Apk文件中的dex如果不刪除,同一個應用就會存在兩個dex文件:apk中和 data/dalvik-cache 目錄下)。
安全性:防止第三方用戶反編譯系統的軟體(odex文件是跟隨系統環境變化的,改變環境會無法運行;而apk文件中又不包含dex文件,無法獨立運行)
劣勢:
優化後的odex文件大小通常是原dex文件的1~4倍 (空間換時間)。
4.5 vdex文件
vdex文件是 Android O (Android 8.0) 新增的格式包,其目的是為了降低dex2oat時間。
dex2oat的觸發場景:
當系統OTA (系統升級) 後,用戶自己安裝的應用是不會發生任何變化的,但 framework 代碼已經發生了變化,因此就需要重新對這些應用也做dex2oat。如果沒有vdex文件,則需要重新校驗Apk里dex文件合法性;如果存在vdex文件,就可以省略校驗的過程,節省一部分時間。
當App的 JIT Profile 信息變化時,background dexopt會在後台重新做dex2oat,因為有了vdex,這個時候也可以直接跳過dex文件的校驗流程。
dex 文件直接轉化的可執行二進制碼文件:
App在首次安裝的時候,vdex文件就會生成在 /system/app/<packagename>/oat/下。
在系統運行過程中,虛擬機將其從 /system/app 下 到 /data/davilk-cache/ 下。
4.6 art文件
art文件是由虛擬機執行odex文件後,記錄虛擬機執行Apk啟動的常用函數地址信息後生成出來的文件(記錄函數地址信息方便定址),目的 是用於加快應用啟動速度。通常會在data/dalvik-cache/ 目錄中保存常用的jar包的相關地址記錄。
第一次開機不會生成在 /system/app/<packagename>/oat/ 下,以後也不會。
odex 文件在運行時,虛擬機會計算函數調用頻率,進行函數地址的修改。
最後在 /data/davilk-cache/ 由虛擬機生成 art文件(art文件生成)。
生成 art文件後,/system/app 下的odex 和 vdex 會無效,即使你刪除,apk也會正常運行。
push 一個新的apk file 覆蓋之前 /system/app 下Apk file ,會觸發 PMS 掃描時下發 force_dex 的flag ,強行生成新的vdex 文件 ,覆蓋之前的vdex 文件,由於某種機制,這個新vdex 文件會到 /data/dalvik-cache/ 下,於是 art 文件也變化了。
4.7 oat文件
ART虛擬機運行的是oat文件,oat文件是一種Android私有ELF文件格式,oat文件包含有從dex文件翻譯而來的本地機器指令,還包含有原來的dex文件內容(如下圖所示),因此oat文件比odex文件更大。APK在安裝的過程中,會通過dex2oat工具生成一個OAT文件(文件後綴還是odex)。對於apk來說,oat文件實際上就是對odex文件的包裝,即oat=odex。
注意: Android5.0 及之後的版本,oat文件的後綴還是odex,但是已經不是android5.0 之前的文件格式,而是ELF格式封裝的本地機器碼。可以認為oat在dex上加了一層殼,可以從oat里提取出dex。
❹ 51虛擬機顯示android
答:51虛擬機顯示android的原因是因為51虛擬機可以模擬Android操作系統的環境,並在電腦上運行Android應用程序。虛擬機是一種軟體,它可以在一台計算機上模擬另一台計算機梁肆的操作系統和硬體環境,從而在計算機上運行各種軟體。在這種情況下,51虛擬機模擬了一個Android操作系統的環境,讓我們可以在電腦上運行Android應用程序。
虛擬機技術被廣泛應用於軟體開發、測試、運維等領域。通過使用虛擬機技術,我們可以在一台物理機器上運行多個虛擬機,每個虛擬機可以獨立運行一個操作系統和應用程序,從而提高資源利用率和靈活性。
除了51虛擬機,市場上還有許多其他的虛擬機軟體,如猜培VMware、VirtualBox、Hyper-V等。每個虛擬機軟體都有其獨特的特點和適用場景,用戶可以根據自橡兆轎己的需求選擇合適的虛擬機軟體來使用。
❺ android 怎麼虛擬機運行不了
虛擬機啟動有時候第一次是會失敗,重新再試一次。檢查一下sdk是否下載完整
❻ android 在虛擬機閃退是怎麼回事
從報錯信息上看是屬於非法參數異常的錯誤:IllegalArgumentException,No View Found for id xxx for fragment 是在你的某個Fragment中找明搜如不到id為content的控制項,你查一下你Fragment中使用的布局,應該是沒有這個id,而你代碼文件中用激啟到這個id了,所以會報這個異常。
建議將這些異漏寬常記錄下來,比如這個IllegalArgumentException是非法參數異常,FileNotFoundException是文件未找到等等,這樣才能快速定位問題找到修改的方法,提升寫代碼和定位異常的能力。。。
❼ 拼多多安卓虛擬機配置要求
需要1GB內存。拼多多安卓虛擬機高鬧按最低配置來算,50台安卓虛擬機,每個虛擬機至少需要一個核心,如果安卓版本是5.1,至少需要1GB內存才能保證正常運行。虛擬機(VirtualMachine)指通過軟體模擬的具有完賣鬧整硬體中念罩系統功能的、運行在一個完全隔離環境中的完整計算機系統。
❽ 電腦上安裝android虛擬機
方法/步驟
1
安裝好virtualbox之後,打開該程序,點擊新建按鈕,在彈出的對話框中,根據截圖,分別填寫相關信息,然後點擊下一步
2
接著選擇你剛剛下載的android系統的IOS文件,並選擇啟動,虛擬機會載入你選擇的android系統的IOS文件,引導你安裝android系統,在出現的選項界面中,選擇安裝選項
接著會再出現兩個選項,請選擇第一個,創建並修改分區,點擊OK
在彈出的界面中,利用方向箭選擇「New」,並按回車鍵確定
接著進入到下一個界面,在這個界面中,選擇「Primary」,也就是擾弊將這個分區當作首要分區,然後按回車鍵確定;
接著來到另外一個界面,在這里,請利用方向鍵,選擇「Bootable」(可啟動的),然後按回車鍵,確認更改;接著用方向鍵,選擇「Write」(寫入),按回車鍵,以確認你對Bootable的更改;這時虛擬機可能要你輸入yes並回車來進一步確認你是否要「寫入」,如果這樣,請輸入yes,並再次按回車鍵;接著,選擇Quit(退出),以重新回橡李豎到選擇分區的界面;
接著,你會看到界面上多了一個分區,其中一個便是你剛剛創建的分區,選擇它,並按回車鍵,以確認將android系統安裝在這個分區上;
接著,虛擬機會讓你選擇將分區格式化成什麼格式,請選擇ext3,並點擊yes,也就是確定來確定更改;
然後一路點擊確定,中間會出現等待的時間,這是系統在安裝的過程中的時間,請耐心等待;
系統安裝玩之後,按照截圖所示,推出IOS文件,並重啟虛擬機
重啟虛擬機的過程中,android系統會像你打開windows系統那樣自動啟動,請按照提示一步一步的完成系統的設置
如果你發現滑鼠無法控制andorid系統,請按照截圖選擇相應的選項,以讓滑鼠集成在android中,如果你希望滑鼠分離出虛擬機,以控制windows系統,默認情況下是點擊右邊的ctrl鍵;
當你設置完所有的選項之後,你便進入梁大到系統中了
❾ android studio 中怎樣用虛擬機
1、首先需要進行打開一個Android studio的應用的程序,進入到了Android studio界面中之後,進行點擊Android devices的按鈕。 2、陸空然後就進入到了Android devices中之後,就可以進行創建一個devices中,進行點擊」create virtual device「。 3、就可以進行選擇一個已經下載完成了,適合的解析度中,進行選擇一個之後,進行next的選項。 4、進行選擇一個Android sdk的版本,列表中都是已經完成的版本,進行選擇一個版本。 5、進入到了下一個界面中之後,可以默認選項,然後進行點擊"ok「的選項。 6、這樣坦態就會創建成功了一個devices的選項,如果要進行點擊啟動一個虛擬機,點擊actions中播放按鈕,如果讓悉源要進行刪除,進行點擊下拉菜單中之後,彈出了下拉的菜單,「delete」的選項。
❿ 用安卓模擬器多開50以上,需要電腦怎樣的配置,或者能用伺服器嗎
按最低配置來算,50台安卓虛擬機,每個虛擬機至少需要一個核心,如果安卓版本是5.1,至少需要1GB內存才能保證正常運行。每個虛擬機為了能流暢運行軟體,至少要1GB空餘內存。
而現在消費級CPU最高也到不了50線程,除非你用多台電腦,否則我推薦使用伺服器。