qemuandroid
用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:
sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」
其中[email protected]為你自己的郵箱.
簡要說明
android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.
源碼下載
由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)
repo工具下載及安裝
通過執行以下命令實現repo工具的下載和安裝
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:
我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:
這里寫圖片描述
執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.
錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:
通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.
結束吧
到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.
『貳』 android模擬器中命令參數主要有哪些
1、Help
-help列印模擬器參數列表。
-help-all列印所有啟動參數明細。
-help-<option>列印指定啟動參數的信息。
-help-debug-tags列印所有被-debug <tags>打開的列表。
-help-disk-images列印正在使用的磁碟鏡像信息。
-help-environment列印模擬器環境變數信息。
-help-keys列印當前的鍵盤映射。
-help-keyset-file列印一個自定義的鍵盤映射文件的定義。
2、Disk Images
-cache <filepath>使用<filepath> 指定網路緩存分區鏡像。自定義,您可以指定一個當前工作目錄的相對路徑。如果沒有指定緩存文件,模擬器會指定一個零時文件作為緩存文件。
-data <filepath>使用<filepath>作為用戶數據磁碟鏡像。自定義,您可以指定一個當前工作目錄的相對路徑。如果-data沒有被使用,模擬器會在<datadir>指定的目錄下尋找名叫"userdata-qemu.img"的鏡像文件。默認情況下,模擬器會尋找~/.android (on Linux/Mac)或者C:/Documents and Settings/<user>/Local Settings/Application Data/Android (on Windows)。如果您使用了-data <filepath>,但是文件並不存在,模擬器將創建同名文件。
-image <filepath>使用<filepath>作為系統鏡像。自定義,您可以指定一個當前工作目錄的相對路徑。默認為<system>/system.img。
-initdata <filepath>重寫用戶數據鏡像時,(使用 -wipe-data),復制此文件內容到新用戶數據文件鏡像中。默認方式下,模擬器拷貝<system>/userdata.img。自定義,您可以指定一個當前工作目錄的相對路徑。
-kernel <filepath>使用<filepath>作為模擬器內核。自定義,您可以指定一個當前工作目錄的相對路徑。
-nocache啟動模擬器時無緩存分區。
-ramdisk <filepath>使用<filepath>作為虛擬內存鏡像。默認<system>/ramdisk.img. 自定義,您可以指定一個當前工作目錄的相對路徑。
-sdcard <filepath>使用<file>作為SD卡鏡像。默認為<system>/sdcard.img. 自定義,您可以指定一個當前工作目錄的相對路徑。
-system <dirpath>在指定的<dir>下搜索系統、虛擬內存和用戶數據鏡像文件。<dir>為當前路徑的相對目錄。
-wipe-data重至用戶數據鏡像文件。(that is, the file specified by -datadir and -data, or the default file)。 模擬器刪除所有用戶數據,然後復制右-inidata參數指定的數據到鏡像文件,在啟動之前。
3、Debug
-debug <tags>開啟/關閉指定tag的調試信息。
<tags>是一個被空格/逗號/縱列所分割的調試組建名稱列表。
-debug-<tag>開啟/關閉指定tag的調試信息。使用-help-debug-tags獲得您可以指定為<tag>的調試組件列表。
-debug-no-<tag>關閉指定tag的調試信息。
-logcat <logtags>打開指定tag的日誌輸出。如果環境變數ANDROID_LOG_TAGS被指定且不為空,她的值將成為日誌輸出的默認值。
-shell創建一個擁有root許可權的命令行窗口。即使模擬器的UI界面無法使用了,您依然可以使用命令行窗口。按Ctr-c鍵中斷模擬器運行。
-shell-serial <device>打開具有root許可權的腳本窗口。<device>必須是一個QEMU類型的設備。
-show-kernel <name>顯示內核信息。
-trace <name>Enable code profiling (press F9 to start), written to a specified file.
-verbose開啟冗長輸出。Equivalent to -debug-init. 您可以定義ANDROID_VERBOSE環境變數作為冗長輸出參數。定義你想用到的參數,用逗號分割。這樣可以省略像-debug-<tags>這樣的參數。
4、Media
-audio <backend>使用指定的音頻後端。
-audio-in <backend>使用指定的音頻輸入後端。
-audio-out <backend>使用指定的音頻輸出後端。
-noaudio在當前虛擬機實例中關閉音頻支持。
-radio <device>重新定向收音機介面到本地的位元組設備。
-useaudio打開模擬器實例的音頻支持。默認狀態為打開。
5、Network
-dns-server <servers>使用指定的DNS伺服器。<servers>必須是以逗號分割,多於4個的伺服器名或IP地址。
-http-proxy <proxy>配置TCP連接使用HTTP/HTTPS代理。
<proxy>必須符合以下格式:http://<server>:<port>
http://<username>:<password>@<server>:<port> 前綴http://可以被忽略。如果-http-proxy <proxy>未被指定,模擬器將尋找http_proxy環境變數,並且自動尋找所有符號格式要求的<proxy> 值。
-netdelay <delay>設置網路延遲默認值為none。
-netfast快捷的 -netspeed full -netdelay none
-netspeed <speed>指定模擬器網路速度為<speed>,默認值為full。
-port <port>指定模擬器網路埠為<port>,控制台埠號必須介於5554和5584之間,並且<port>+1必須留作ADB使用。
-report-console <socket>啟動前向第三方同志此模擬器實例的網路埠。<socket> 必須是以下幾種格式:
tcp:<port>[,server][,max=<seconds>]
unix:<port>[,server][,max=<seconds>]
6、System
-cpu-delay <delay>降低模擬器CPU的速度到<delay>。<delay>支持0到100的整數。注意<delay>與具體的時鍾或其他的絕對頻率無關。它只表現為一種抽象的,相對於當前模擬器運行狀況的速度調節。
-gps <device>重定向NMEA GPS到位元組設備。
使用此參數通知模擬器模擬一個NMEA-compatible GPS,連接到一個擴展的設備或socket埠。<device>格式必須符合QEMU-specific所指定的設備格式。
-nojni在Dalvik運行時關閉JNI檢查
-qemu傳遞參數到qemu。
-qemu -h關閉qemu幫助。
-radio <device>重定向錄音機模塊到制定的字元設備。<device>格式必須符合QEMU規定的序列設備。
-timezone <timezone>設定模擬器時區為<timezone>,替換為系統時區。<timezone>必須按照時區格式指定。比如:"America/Los_Angeles","Europe/Paris"
-version顯示模擬器版本號。
7、UI
-dpi-device <dpi>修改模擬器的解析度適配物理設備。默認值為165。參見-scale.
-no-boot-anim關閉模擬器啟動時的動畫。禁用啟動動畫可以加快啟動速度。
-no-window關閉模擬器的繪制窗口。
-scale <scale>調整模擬器窗口。<scale> 是介於0.1到3的數字,它是調整屏幕的比例因子。您也可以指定一個DPI值,在添加dpi前綴的情況下。Auto參數告訴模擬器選擇自己最合適的尺寸。
-raw-keys關閉Unicode鍵盤reverse-mapping.
-noskin不使用任何模擬器皮膚。
-keyset <file>用指定的鍵盤設置文件代替默認。指定宿主鍵盤和模擬器之間的鍵盤映射文件。
-onion <image>用圖片覆蓋屏幕。不支持JPEG,只支持PNG。
-onion-alpha <percent>指定onion皮膚透明值(百分比) 默認為50.
-onion-rotation <position>指定onion皮膚旋轉。<position> 必須是 0, 1, 2, 3中的一個。
-skin <skinID>啟動模擬器,搭配指定皮膚。
-skindir <dir>在指定目錄<dir>下搜索皮膚
以上就是android模擬器中的一些常用參數及其作用,可能還有整理得不夠全面得地方,歡迎大家補充分享。
『叄』 qemu 怎麼運行 android
qemu從某種意義上功能類似於vmware/virtual box之類的軟體,可以讓你在當前OS中運行其它的操作系統,但是這僅僅是qemu的一種功能 qemu還可以模擬不同的cpu架構下的系統,比如在普通的個人pc上運行 arm linux之類,這個vmware之類的可能沒有 關於qemu的使用 先到官網上下載qemu的源代碼,目前是 1.2,如果使用的是linux系統,這個好辦,直接編譯安裝,網上有不少說明的文檔 使用的過程一般分為三步 1. 創建虛擬機文件系統 qemu-img create /f qcow2 xxx.img 10G 2. 在虛擬機文件系統中安裝操作系統 qemu-system-i386 -hda xxx.img -cdrom xxx.iso -boot d 以xxx.img為文件系統,xxx.iso是系統安裝ISO文件 3. 運行安裝好的操作系統 qemu-system-i386 -hda xxx.img 運行xxx.img中的系統 以上的命令參數都比較簡單,實際使用中需根據具體情況自己配置
『肆』 安卓怎麼使用修改過的源碼編譯程序
1、Android的文件系統結構是怎樣的,我們安裝的程序放在那裡?
編譯Android源碼之後,在out/target/proct/generic一些文件:
ramdisk.img、system.img、userdata.img、 system、 data、root
其中, system.img是由 system打包壓縮得到的, userdata.img是由 data打包壓縮得到的。
ramdisk.img是模擬器的文件系統,把ramdisk.img解壓出來可知道,ramdisk.img里的文件跟root文件夾的文件基本一樣。模擬器裝載ramdisk.img並解壓到內存,接著分別把system.img和userdata.img掛載到 ramdisk下的system和data目錄。我們編譯出來的應用程序就是放在system/app下的。用戶安裝的程序則是放在data/app下。
2、Android SDK和android源碼能為我們提供什麼工具?
AndroidSDK提供有很多工具,如adb,ddms,emulator,aapt等,並提供kernel-qemu、ramdisk.img、system.img、userdata.img。因此,只要有android SDK,我們就可以在模擬器上把android跑起來。
Android源碼可以編譯出android SDK、adb等工具、android文件系統,以及ADT插件,也就是說,我們可以從android源碼編譯出所有android相關的東西。
3、 把Android源 碼」make」之後會生成許多工具和android文件系統(system.img等),我們又可以使用「makesdk」來生成android SDK,android
SDK也包括有工具和android文件系統(system.img等),而原來安裝的時候我們也安裝了androidSDK,那麼我們在開發時應該使用那些工具和android文件系統呢?