本文基於Android 4.2.2源碼搭建環境。html
檢查硬件環境: 使用df -h
檢查個磁盤空間使用情況,保證/home空間充裕。java
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java6-installer
注:此方法須要下載69M文件,下載時間依網絡而定。python
sudo add-apt-repository ppa:git-core/ppa sudo apt-get update sudo apt-get install git
注:此方法須要下載23M文件,下載時間依網絡而定。安裝完後須要設置global信息linux
git config --global user.email "you@example.com" git config --global user.name "Your Name"
安裝android
$ sudo apt-get install ccache
設置PATHgit
$ echo "export USE_CCACHE=1" >> ~/.bashrc $ source ~/.bashrc
測試設置成功web
$ echo $USE_CCACHE
$ sudo apt-get install git gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
全部軟件安裝完畢,使用java -version
等命令檢查版本正確ubuntu
工做目錄**/home/${user}/**vim
設置目錄和repo的PATHapi
$ mkdir ~/bin $ PATH=~/bin:$PATH $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo
注:此處若網絡出錯,多是GFW緣由。在IPV6網絡下能夠添加hosts,參考ipv6 hosts,不然進行源碼安裝。
設置工做目錄
$ mkdir WORKING_DIRECTORY $ cd WORKING_DIRECTORY
下載源碼
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1.2b $ repo sync
注:源文件大小爲10G左右,喝杯茶,扭扭脖子休息一下吧。
查看CPU核數,此參數用於並行編譯
$ cat /proc/cpuinfo |grep "cores"|uniq
個人輸出: cpu cores: 4; 因而並行編譯時參數位-j8(即4×2)
編譯:
$ source build/envelop.sh
$ lunch full_eng $ make -j8
lunch: lunch用於選擇不一樣的機型,full_eng爲生成適合虛擬機的ROM。
編譯完成後將在out目錄下生成相應的ROM以及工具。
$ lunch sdk_eng $ make sdk
在out目錄下會生成sdk,用於app的開發
編譯虛擬機運行腳本
$ echo "out/host/linux-x86/bin/emulator -sysdir out/target/product/generic/ -system system.img -ramdisk out/target/product/generic/ramdisk.img -data out/target/product/generic/userdata.img -kernel prebuilt/android-arm/kernel/kernel-qemu-armv7 -sdcard sdcard.img -skindir sdk/emulator/skins -skin WQVGA400 -memory 512 -partition-size 1024" > run.sh $ chmod a+x run.sh $ ./run.sh
虛擬機啓動成功,Android ROM自動加載運行,完成。
問題1:
error: error reading out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/javalib.jar; invalid header field 1 error make: *** [out/target/common/obj/APPS/FrameworksCoreTests_intermediates/classes-full-debug.jar] Error 41
解決1:
$ make clean # 刪除臨時編譯的文件 $sudo update-alternatives --config jar 選擇相應包
問題2:
make: *** [out/target/common/docs/online-gcm-ref-timestamp] Error 45
解決2:
$ git revert 5f9922d7c3bce158e4c7a58929d4075e7c91e32e
配置IP與DNS
vim /etc/networking/interfaces
auto eth0 iface eth0 inet static address 10.109.254.15 netmask 255.255.255.0 gateway 10.109.254.1 #dns-nameservers 10.3.9.4 10.3.9.5
配置DNS
vim /etc/resolv.conf
nameserver 10.3.9.4 nameserver 10.3.9.5
重啓網絡
/etc/init.d/networking restart
安裝ssh
sudo apt-get install ssh
安裝VNC
sudo apt-get install vnc4server vncserver :3