當前位置:首頁 » 安卓系統 » qemuandroid

qemuandroid

發布時間: 2023-03-11 08:36:08

『壹』 自己可以編譯安卓源碼

用最新的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內核問題,解決方法如下:
執行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通過使用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文件系統呢?

    熱點內容
    蘋果手機如何退出ad密碼 發布:2025-05-13 19:35:24 瀏覽:352
    資本論中央編譯局 發布:2025-05-13 19:21:50 瀏覽:134
    python路徑是否存在 發布:2025-05-13 19:08:38 瀏覽:570
    保時捷卡宴哪個配置比較好 發布:2025-05-13 19:00:08 瀏覽:725
    c語言負數運算 發布:2025-05-13 18:45:21 瀏覽:428
    太空殺電腦版連接不到伺服器 發布:2025-05-13 18:40:19 瀏覽:457
    同樣的配置為什麼跑分不同 發布:2025-05-13 18:39:06 瀏覽:278
    獲取linuxcpu序列號 發布:2025-05-13 18:36:35 瀏覽:738
    appleid為什麼連接伺服器出現問題 發布:2025-05-13 18:17:37 瀏覽:972
    書翁怎麼配置 發布:2025-05-13 18:17:36 瀏覽:911