1. 如何針對特定機型,編譯cwm recovery
你必須使用32位或64位Ubuntu系統,關於如何建立編譯環境和同步源碼的指導,請自己查找有關指導的文章。
1,
安裝所需要的包
2,
建立編譯的環境,並同步CWM所需的源碼,CyanogenMod源碼中附帶CWM源碼
CWM
5
-
Gingerbread
CWM
6
-
Jellybean
3,
下面我們進入真正的編譯階段,確保你已經使用「repo
sync
」命令同步了最新的源碼
進入源碼的目錄
放出以下命令:
make
-j4
otatools
3.5,
如果你的機型不被CM10官方支持,請執行這一步
在你的手機終端上執行以下命令,
mp_image
boot
/sdcard/boot.img
這將boot鏡像導出到你手機的sdcard,復制該鏡像至你的home目錄下
為一款新設備編譯android源碼,需要建立相應的配置文件和makefile文件,這通常比較麻煩,如果僅僅編譯recovery鏡像,會容易的多。在android源碼根目錄下(假設已運行envsetup.sh),運行以下命令(使用適當的名稱取代命令中的名稱)
build/tools/device/mkvendor.sh
device_manufacturer_name
device_name
/your/path/to/the/boot.img
例如,你擁有Samsung
Galaxy
Ace這款設備,你應該使用以下這條命令
build/tools/device/mkvendor.sh
Samsung
cooper
~/boot.img
Please
note
that
Cooper
is
the
device
name.
Only
use
"~/boot.img"
if
you
have
the
boot
image
in
your
home
directory.
Or
else
please
specify
the
correct
path.
如果所有都工作正常,你將看到"Done!"這樣的確認信息。mkvendor.sh腳本也將在你的android源碼樹中創建以下目錄:
manufacturer_name/device_name
4,
現在你已經擁有相關的配置文件
在源碼目錄下,在terminal終端下鍵入以下命令
.
build/envsetup.sh
這一步將為你建立編譯環境
現在使用這條命令
lunch
full_device_name-eng
這將為你的設備建立起build
system。用文件管理器或IDE打開目錄,你應該擁有以下文件:
AndroidBoard.mk,
AndroidProcts.mk,
BoardConfig.mk,
device_.mk,
kernel,
system.prop,
recovery.fstab,
和
vendorsetup.sh
對你感興趣的應該是recovery.fstab和kernel這兩個文件,kernel這個文件是你之前從boot.img文件中提取出的。recovery.fstab將適用於大部分擁有
mtd,
emmc,或者其他分區的設備。如果沒有,recovery.fstab將需要優化以支持載入這些點。例如
/sdcard被載入至/dev/block/mmcblk1p1,
你需要將下面這段加入到你的BoardConfig.mk文件中
/sdcard
vfat
/dev/block/mmcblk1p1
一旦recovery.fstab已經適當的裝載,你可以開始下一步了
5,
現在,我們開始編譯Recovery
make
-j4
recoveryimage
這個命令用於編譯recovery鏡像
你能使用這個命令
make
-j4
recoveryzip
用於建立一個臨時的recovery.zip刷機包在你真實的設備上測試
你編譯好的recovery可以在"your_source_directory/OUT/target/proct/device/recovery.img"目錄下找到。而.zip刷機包可以在相同目錄下的utilities文件夾下找到。
如果各項測試正常,就可以有一個成功的recovery
一旦你編譯通過了recovery,通知"koush",在Github上,他就能根據你的編譯文件發放官方版的CWM
Recovery,並使Rom
Manager提供相應的支持。
小貼士:
如果你想編譯CWM6,使用以下命令同步jellybean分支源碼
repo
init
-u
git://github.com/CyanogenMod/android.git
-b
jellybean
repo
sync
如果你改變了BoardConfig.mk文件,在編譯期間運行"make
clobber",否則你做的更改就不會生效。
2. 編譯android 源碼需要sdk環境嗎
下面是android學習手冊,可以查看編譯源碼,360手機助手中下載,
編譯環境:ubuntu9.10,widnows平台目前不被支持。
1)安裝必要的軟體環境
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
官方推薦的就是上面這些,如果在編譯過程中發現某些命令找不到,就apt-get它。可能需要的包還有:
$ sudo apt-get install make
$ sudo apt-get install gcc
$ sudo apt-get install g++
$ sudo apt-get install libc6-dev
$ sudo apt-get install patch
$ sudo apt-get install texinfo
$ sudo apt-get install zlib1g-dev
$ sudo apt-get install valgrind
$ sudo apt-get install python2.5(或者更高版本)
需要注意的是,官方文檔說如果用sun-java6-jdk可出問題,得要用sun-java5- jdk。經測試發現,如果僅僅make(make不包括make sdk),用sun-java6-jdk是沒有問題的。而make sdk,就會有問題,嚴格來說是在make doc出問題,它需要的javadoc版本為1.5。
因此,我們安裝完sun-java6-jdk後最好再安裝sun-java5-jdk,或者只安裝sun-java5-jdk。這里sun-java6-jdk和sun-java5-jdk都安裝,並只修改javadoc.1.gz和javadoc。因為只有這兩個是make sdk用到的。這樣的話,除了javadoc工具是用1.5版本,其它均用1.6版本:
$ sudo apt-get install sun-java6-jdk
修改javadoc的link:
$ cd /etc/alternatives
$ sudo rm javadoc.1.gz
$ sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz
$ sudo rm javadoc
$ sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc
2)設置環境變數
$ emacs ~/.bashrc
在.bashrc中新增或整合PATH變數,如下:
#java 程序開發/運行的一些環境變數
JAVA_HOME=/usr/lib/jvm/java-6-sun
JRE_HOME=${JAVA_HOME}/jre
export ANDROID_JAVA_HOME=$JAVA_HOME
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME;
export JRE_HOME;
export CLASSPATH;
HOME_BIN=~/bin/
export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
保存後,同步更新:
source ~/.bashrc
3)安裝repo(用來更新android源碼)
創建~/bin目錄,用來存放repo程序,如下:
$ cd ~
$ mkdir bin
並加到環境變數PATH中,在第2步中已經加入。
下載repo腳本並使其可執行:
$ curlhttp://android.git.kernel.org/repo>~/bin/repo
$ chmod a+x ~/bin/repo
4)初始化repo
repo是android對git的一個封裝,簡化了一些git的操作。
創建工程目錄:
$ mkdir android
$ cd android
repo初始化:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
在此過程中需要輸入名字和email地址。初始化成功後,會顯示:
repo initialized in /android
在~/android下會有一個.repo的隱藏目錄。
5)同步源代碼
$ repo sync
這一步要很久很久。
6)編譯android源碼,並得到~/android/out目錄
$ cd ~/andoird
$ make
這一過程很久。
7)在模擬器上運行編譯好的android
編譯好android之後,emulator在~/android/out/host/linux-x86/bin下,ramdisk.img,system.img和userdata.img則在~/android/out/target/proct/generic下。
$ cd ~/android/out/host/linux-x86/bin
增加環境變數
$ emacs ~/.bashrc
在.bashrc中新增環境變數,如下
#java 程序開發/運行的一些環境變數
export ANDROID_PRODUCT_OUT=~/android/out/target/proct/generic
ANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/bin
export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};
最後,同步這些變化:
$ source ~/.bashrc
$ cd ~/android/out/target/proct/generic
$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img
最後進入android桌面,就說明成功了。
8)編譯模塊
android中的一個應用程序可以單獨編譯,編譯後要重新生成system.img。
在源碼目錄下執行
$ . build/envsetup.sh (.後面有空格)
就多出一些命令:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the moles in the current directory.
- mmm: Builds all of the moles in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
可以加—help查看用法。
我們可以使用mmm來編譯指定目錄的模塊,如編譯聯系人:
$ mmm packages/apps/Contacts/
編完之後生成兩個文件:
out/target/proct/generic/data/app/ContactsTests.apk
out/target/proct/generic/system/app/Contacts.apk
可以使用
$ make snod
重新生成system.img,再運行模擬器。
9)編譯SDK
直接執行make是不包括make sdk的。make sdk用來生成SDK,這樣,我們就可以用與源碼同步的SDK來開發android了。
a)修改/frameworks/base/include/utils/Asset.h
『UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024』 改為 『UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024』
原因是eclipse編譯工程需要大於1.3M的buffer;
b)編譯ADT
由於本人不使用eclipse,所以沒有進行這步;
c)執行make sdk
注意,這里需要的javadoc版本為1.5,所以你需要在步驟1中同時安裝sun-java5-jdk
$ make sdk
編譯很慢。編譯後生成的SDK存放在out/host/linux-x86/sdk/,此目錄下有android-sdk_eng.xxx_linux- x86.zip和android-sdk_eng.xxx_linux-x86目錄。android-sdk_eng.xxx_linux-x86就是 SDK目錄。
實際上,當用mmm命令編譯模塊時,一樣會把SDK的輸出文件清除,因此,最好把android-sdk_eng.xxx_linux-x86移出來。
此後的應用開發,就在該SDK上進行,所以把7)對於~/.bashrc的修改注釋掉,增加如下一行:
export PATH=${PATH}:~/android/out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86/tools
注意要把xxx換成真實的路徑;
d)關於環境變數、android工具的選擇
目前的android工具有:
A、我們從網上下載的Android SDK,如果你下載過的話( tools下有許多android工具,lib/images下有img映像)
B、我們用make sdk編譯出來的SDK( tools下也有許多android工具,lib/images下有img映像)
C、我們用make編譯出來的out目錄( tools下也有許多android工具,lib/images下有img映像)
那麼我們應該用那些工具和img呢?
首先,我們一般不會用A選項的工具和img,因為一般來說它比較舊,也源碼不同步。其次,也不會用C選項的工具和img,因為這些工具和img沒有經過SDK的歸類處理,會有工具和配置找不到的情況;事實上,make sdk產生的很多工具和img,在make編譯出來out目錄的時候,已經編譯產生了,make sdk只是做了而已。
e)安裝、配置ADT
略過;
f)創建Android Virtual Device
編譯出來的SDK是沒有AVD(Android Virtual Device)的,我們可以通過android工具查看:
$ android list
創建AVD:
$ android create avd -t 1 -n myavd
可以android –help來查看上面命令選項的用法。創建中有一些選項,默認就行了。
再執行android list,可以看到AVD存放的位置。
以後每次運行emulator都要加-avd myavd或@myavd選項:
$ emulator -avd myavd
10)編譯linux內核映像
a)准備交叉編譯工具鏈
android代碼樹中有一個prebuilt項目,包含了我們編譯內核所需的交叉編譯工具。
b)設定環境變數
$ emacs ~/.bashrc
增加如下兩行:
export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
export ARCH=arm
保存後,同步變化:
$ source ~/.bashrc
c)獲得合適的內核源代碼
$ cd ~/android
獲得內核源代碼倉庫
$ git clone git://android.git.kernel.org/kernel/common.git kernel
$ cd kernel
$ git branch
顯示
* android-2.6.27
說明你現在在android-2.6.27這個分支上,也是kernel/common.git的默認主分支。
顯示所有head分支:
$ git branch -a
顯示
* android-2.6.27
remotes/origin/HEAD -> origin/android-2.6.27
remotes/origin/android-2.6.25
remotes/origin/android-2.6.27
remotes/origin/android-2.6.29
remotes/origin/android-goldfish-2.6.27
remotes/origin/android-goldfish-2.6.29
我們選取最新的android-goldfish-2.6.29,其中goldfish是android的模擬器模擬的CPU。
$ git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29
$ git branch
顯示
android-2.6.27
* android-goldfish-2.6.29
我們已經工作在android-goldfish-2.6.29分支上了。
d)設定交叉編譯參數
打開kernel目錄下的Makefile文件,把CROSS_COMPILE指向剛才下載的prebuilt中的arm-eabi編譯器.
CROSS_COMPILE ?= arm-eabi-
把
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,
$(call ld-option, -Wl$(comma)–build-id,))
這一行注釋掉,並且添加一個空的LDFLAGS_BUILD_ID定義,如下:
LDFLAGS_BUILD_ID =
e)編譯內核映像
$ cd ~/android/kernel
$ make goldfish_defconfig
$ make
f)測試生成的內核映像
$ emulator -avd myavd -kernel ~/android/kernel/arch/arm/boot/zImage
3. 如何編譯android手機源碼
編譯android系統源碼准備工作:
下載android源碼
在windows上用gitbash ,git clone 下載代碼
在linux上這樣下載
創建~/bin目錄,用來存放repo程序,如下:
$ cd ~
$ mkdir bin
初始化repo
repo是android對git的一個封裝,簡化了一些git的操作。
創建工程目錄:
$ mkdir android
$ cd android
下載repo腳本並使其可執行:
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
repo初始化:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
在此過程中需要輸入名字和email地址。初始化成功後,會顯示:
repo initialized in /android
在~/android下會有一個.repo的隱藏目錄。
5)同步源代碼
$ repo sync
這一步要很久很久。
安裝linux系統,推薦ubuntu,圖形界面
安裝編譯需要的支持包
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
安裝java6.0
$ sudo apt-get install sun-java6-jdk
配置java環境
sudo gedit ~/.bashrc
末尾加上
JAVA_HOME=/usr/lib/jvm/java-6-sun
JRE_HOME=${JAVA_HOME}/jre
export ANDROID_JAVA_HOME=$JAVA_HOME
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME;
export JRE_HOME;
export CLASSPATH;
HOME_BIN=~/bin/
export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
sudo source ~/.bashrc
是環境變數生效
編譯android源碼,並得到~/android/out目錄
$ cd ~/andoird
$ make
這一過程很久。
這就編譯結束了
4. 怎麼把.repo緩存區的代碼弄成本地的可讀文件呢
那是git庫 ,你需要安裝一個git就能對他讀寫和提取
git是純命令的,你安裝完git後再裝個git的gui就容易多了。
5. 如何把CyanogenMod 移植到到自己的android設備上
工欲善其事,必先利其器
1、基礎環境
使用的環境:ubuntu 11.04環境,測試的Android機器 華為:C8500。
官方文檔列出開發需要下列的軟體包以及下載來源:
Python 2.5 -- 2.7, python.org.
GNU Make 3.81 -- 3.82, gnu.org
JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older. You can download both from java.sun.com.這里安裝的是JDK6
Git 1.7 or newer. git-scm.com.
官方文檔說11.10的運行以下的安裝命令如下:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
libxml2-utils xsltproc
網上有一安裝的指引給出另一個安裝命令
$sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool
由於懶得逐個包去甄別,上述兩條命令我都運行和安裝了。
注意:sun-java6-jdk是無法安裝的,可以自己下載
2、關於 USB 訪問許可權
Android的開發和調試使用的最主要連接設備的命令 adb和fastboot都需要使用USB連接,從文檔上知道,Ubuntu下面USB的訪問許可權可能會出問題,解決的方法文檔也列明了。
我的經驗是如果訪問不了連接的USB設備了,再查閱資料處理。為了以備以後查閱,記錄下來如下:
針對摩托羅拉的設備,使用root文件創建/lib/udev/rules.d/11-android.rules,生成下列的配置到文件中。#號為注釋符號,下列配置,第一行針對一種設備,第二行針對所有摩托羅拉設備。
#SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", ATTRS{idProct}=="41db",MODE="0666,OWNER="shallon"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666", OWNER="shallon" #All Motorola
其中的idVendor和idProct的值怎麼來呢?用USB線連接設備,然後運行lsusb可以看到設備的這兩個值,例如,下文顯示摩托羅拉的ME811的相關配置值就是22b8和41db。
Bus 001 Device 082: ID 22b8:41db Motorola PCS Droid/Milestone (Debug mode)
Bus 001 Device 083: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
3、安裝repo
repo是一種更好的用git的一種工具環境。下面命令中repo安裝到用戶home目錄的bin目錄下。
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
4、下載安裝Android 源碼
如果不打算編譯Android源碼,可以跳過。在WORKING_DIRECTORY上下載源代碼,使用repo init命令指定下載源代碼的版本,-b 參數指定版本號,如果不指定,則是最近的一個版本。
repo sync則是下載/同步代碼的命令。
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ repo init -u https://android。googlesource。com/platform/manifest
$ repo init -u https://android。googlesource。com/platform/manifest -b android-4.0.1_r1
$ repo sync
4.a、下載 cyanogenmod 的源碼可以生成自定義的 Android Rom
CyanogenMod 致力於生成第三方的非官方的 Android 的 Rom ,目前比較火爆的小米手機的MIUI就是CyanogenMod的衍生產品。下面的命令獲取 gingerbread 的版本的源代碼。如果不打算嘗試這些工作可以跳過此步。
$ mkdir -p ~/cyanogenmod
$ repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
$ repo sync -j16
n這里是16,表示同時打開的網路鏈接數,開啟多個網路連接來下載,用以提升的下載的速度。
5、下載開發編譯用的Android SDK
參考的官方文檔:http://developer。android。com/sdk/installing.html
5.1下載eclipse開發環境,推薦安裝「Eclipse Classic」版本,介質下載的地址:http://www.eclipse.org/downloads/ 不用eclipse者可以略過
5.2下載Android SDK,介質安裝的地址:http://developer。android。com/sdk/index.html
5.3下載安裝eclipse 的ADT plug-in,ADT是 Android Development Tools的縮寫。
5.4安裝相關的工具包開發包。
安裝的方法,可以從eclipse的IDE界面啟動Android SDK Manager, Window > Android SDK Manager,或者在Android SDK的根目錄運行android命令。
下列的開發包必須要安裝:「SDK Tools」,「SDK Platform-tools」,「Android platforms(選擇一個或者多個)」
6、測試Android SDK的主要開發工具
6.1 adb
使用USB線連接一台測試的Android設備,運行adb 的兩個命令
~/android/sdk/android-sdk-linux/platform-tools$ ./adb devices
List of devices attached
0A3AABB70502A00A device
以及
~/android/sdk/android-sdk-linux/platform-tools$ ./adb shell 連接上設備,能夠看到設備上的文件系統,證明adb的工具運作正常。
adb的工具很重要,主要用來調測設備。如果設備被「root」(系統被破解,開放了設備的管理員許可權),連接上設備之後,能進行安裝、刪除軟體,遠程上傳/下載文件,以及查看系統的日誌等操作。如果設備沒有「root」,則可以用的操作少很多。
6.2 fastboot
fastboot則是用來刷機的,主要用到的操作如下:
fastboot flash userdata userdata.img
fastboot flash system system.img
fastboot flash boot boot.img
fastboot reboot
6.3 SDK上的Android模擬器
~/android/sdk/android-sdk-linux/tools$ ./emulator ,顯示命令存在,但是報錯了,不要緊,這里運行一下只是看看是否正常安裝了。
6. 如何用repo強制和遠程代碼同步
Android ROM開發經常使用repo sync。有時候有些project因為調試的原因做了一些改動,sync下來就和遠程不同步了。
參考了repo的代碼(.repo/repo/subcmds/sync.py)里有個參數:
p.add_option('-d', '--detach',
dest='detach_head', action='store_true',
help='detach projects back to manifest revision')
repo sync -d會將HEAD強制指向manifest的庫,而忽略本地的改動。
所以比較安全的做法是
先確認本地改動沒必要保存了,確認之前不妨用分支備份一下(git checkout -b backup_branch; git add -u; git commit)
或者用笨辦法,直接用cp備份一下,然後:
<!-- lang: shell -->
repo sync -d
repo forall -c 'git reset --hard' # Remove all working directory (and staged) changes.
repo forall -c 'git clean -f -d' # Clean untracked files
這樣,本地代碼和遠程伺服器的代碼就完全一致了。
7. 同步Android源碼的時候,repo報錯
在該倉庫目錄下,新建文件夾,進入該文件夾,執行如下命令:
1. touch Readme
2. git init
3. git add Readme
4. git commit -m 'initial commit' Readme
8. 自己可以編譯安卓源碼嗎
用最新的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源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.