ubuntu 14.04安装 android 4.4编译环境

来源:互联网 发布:信捷触摸屏编程实例 编辑:程序博客网 时间:2024/06/10 00:41
基于Ubuntu 14.04 LTS编译Android4.4.2源代码 Dennis Hu 2014-4-21环境准备:基本环境:ubuntu14.04 64bit LTS(裸机或者Windows下虚拟机安装均可,12.04也可以,但10.04目前不支持了)其他要求:空闲磁盘空间100G以上,代码部分接近10G,其他为git和编译中间和目标文件准备
==========================================第一部分:环境初始化==========================================1. 安装Oracle JDK注意:如果编译Android4.4不能用OpenJDK,必须用Oracle JDK1.6,1.7目前是不支持的。具体如何安装Oracle JDK,请参见我的另一篇单独的文章,[Ubuntu Linux下安装Oracle JDK] http://blog.csdn.net/gobitan/article/details/24322561.2. 安装必备工具软件注意:这里与官方的有个包不同,官方的包会报错.
view sourceprint?
1.$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-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev
2.$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/libGL.so
3. 配置USB访问权限将如下内容加入到/etc/udev/rules.d/51-android.rules文件中
view sourceprint?
01.<preclass="brush:java;"># adb protocol on passion (Nexus One)
02.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
03.# fastboot protocol on passion (Nexus One)
04.SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"
05.# adb protocol on crespo/crespo4g (Nexus S)
06.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
07.# fastboot protocol on crespo/crespo4g (Nexus S)
08.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
09.# adb protocol on stingray/wingray (Xoom)
10.SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"
11.# fastboot protocol on stingray/wingray (Xoom)
12.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"
13.# adb protocol on maguro/toro (Galaxy Nexus)
14.SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"
15.# fastboot protocol on maguro/toro (Galaxy Nexus)
16.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"
17.# adb protocol on panda (PandaBoard)
18.SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"
19.# adb protocol on panda (PandaBoard ES)
20.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d002", MODE="0600", OWNER="<username>"
21.# fastboot protocol on panda (PandaBoard)
22.SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"
23.# usbboot protocol on panda (PandaBoard)
24.SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>"
25.# usbboot protocol on panda (PandaBoard ES)
26.SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"
27.# adb protocol on grouper/tilapia (Nexus7)
28.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>"
29.# fastboot protocol on grouper/tilapia (Nexus7)
30.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>"
31.# adb protocol on manta (Nexus10)
32.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>"
33.# fastboot protocol on manta (Nexus10)
34.SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"</pre>然后执行如下命令,将上述文件中的username替换为你的用户名。
view sourceprint?
1.$sudo sed -i's/username/dennis/g' /etc/udev/rules.d/51-android.rules
4. 配置ccache安装ccache并将export USE_CCACHE=1加入到~/.bashrc中。
view sourceprint?
1.$sudo apt-get install ccache
2.$source ~/.bashrc

==========================================第二部分:源代码下载==========================================1. 安装repo(1) 创建目录
view sourceprint?
1.$ mkdir ~/bin
2.$ PATH=~/bin:$PATH
(2) 下载repo工具注:由于防火墙的原因,官方提供的链接无法使用,需替换为如下:官方的为curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo可用的:
view sourceprint?
1.curl http://git-repo.googlecode.com/files/repo-1.12 > ~/bin/repo
(3) 增加可执行权限
view sourceprint?
1.$ chmod a+x ~/bin/repo
2. 初始化Repo客户端(1)创建目录
view sourceprint?
1.$mkdir aosp
2.$cd aosp

(2) 初始化repo注:后面可能出现网络错误,请先将如下内容加入到/etc/hosts中然后做后面的步骤。
view sourceprint?
1.74.125.71.82www.googlesource.com
2.74.125.31.82android.googlesource.com
3.203.208.46.172cache.pack.google.com
4.59.24.3.173cache.pack.google.com
至于为什么要出现网络错误,你懂的!
view sourceprint?
1.$repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.2_r2
注意:如果是在虚拟机中执行,需要采用email验证的方式,详细参见参考资料[2].设置git的用户名和邮件地址,将您的真实email地址和name替换了:
view sourceprint?
1.git config --global user.email"you@example.com"
2.git config --global user.name"Your Name"
修改aosp/.resp/manifest.xml,将fetch=".."改为:fetch="https://android.googlesource.com/"
3. 下载源代码
view sourceprint?
1.$repo sync
注意:系统可能会提示你升级repo,最好不要升级,除非你有十足信息解决升级后的一系列问题。

好了,慢慢等吧,短则数小时,长则几天几夜!我花了5个小时
==========================================第三部分:源代码编译 ==========================================1. 设置ccache注:aosp为源代码根目录
view sourceprint?
1.$ cd aosp
2.$ prebuilts/misc/linux-x86/ccache/ccache -M 50G
2. 设置输出目录略:由于我未分区,因此采用默认的out目录3. 初始化编译环境
view sourceprint?
1.$cd aosp
2.$source build/envsetup.sh
4. 选择编译目标包注:目标包的选择跟你的硬件有关。我这里选择9,mako
view sourceprint?
01.dennis@dubuntu1404:~/devenv/aosp$ lunch
02.You're building on <a href="http://www.it165.net/os/oslin/"target="_blank" class="keylink">Linux</a>
03.Lunch menu... pick a combo:
04.1. aosp_arm-eng
05.2. aosp_x86-eng
06.3. aosp_mips-eng
07.4. vbox_x86-eng
08.5. aosp_manta-userdebug
09.6. mini_mips-userdebug
10.7. mini_armv7a_neon-userdebug
11.8. mini_x86-userdebug
12.9. aosp_mako-userdebug
13.10. aosp_hammerhead-userdebug
14.11. aosp_tilapia-userdebug
15.12. aosp_deb-userdebug
16.13. aosp_grouper-userdebug
17.14. aosp_flo-userdebug
18.Which would you like? [aosp_arm-eng]9
19.============================================
20.PLATFORM_VERSION_CODENAME=REL
21.PLATFORM_VERSION=4.4.2
22.TARGET_PRODUCT=aosp_mako
23.TARGET_BUILD_VARIANT=userdebug
24.TARGET_BUILD_TYPE=release
25.TARGET_BUILD_APPS=
26.TARGET_ARCH=arm
27.TARGET_ARCH_VARIANT=armv7-a-neon
28.TARGET_CPU_VARIANT=krait
29.HOST_ARCH=x86
30.HOST_OS=linux
31.HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty
32.HOST_BUILD_TYPE=release
33.BUILD_ID=KVT49L
34.OUT_DIR=out
35.============================================
36.dennis@dubuntu1404:~/devenv/aosp$ make -j4
注:j4中的数字跟你的CPU个数和核数有关,详细参见参考资料[3].整个编译过程,大约花了三个小时。编译成功后会在out目录下生成img文件。
5. 将img加载到物理机(1) 将手机用USB数据线连接到机器(2) 安装fastboot工具
view sourceprint?
1.$ sudo apt-get install android-tools-fastboot
(3) 设置ANDROID_PRODUCT_OUT环境变量将如下部分加入~/.bashrc文件中:
view sourceprint?
1.export ANDROID_PRODUCT_OUT=/home/dennis/devenv/aosp/out/target/product/mako
然后保存执行". .bashrc"使其生效。(4) 以fastboot模式重启手机
view sourceprint?
1.$ adb reboot bootloader
此时手机会重启,呈现一个与往不同的fastboot界面
(5) 将编译的img刷到目标机
view sourceprint?
01.dennis@dubuntu1404:~/devenv/aosp/out$ fastboot flashall -w
02.--------------------------------------------
03.Bootloader Version...: PRIMEMD04
04.Baseband Version.....: I9250XXLJ1
05.Serial Number........: 0146A0D00600900B
06.--------------------------------------------
07.checking product...
08.FAILED
09.Device product is'tuna'.
10.Update requires'mako'.
11.finished. total time:0.035s
(注:由于我的物理机三星I9250在lunch里没有对应的型号,因此会加载失败,这里这是记录过程)===================================如果需要编译其他版本,可执行如下步骤,这里选择虚拟机用的通用版本aosp_arm-eng。
view sourceprint?
01.$ cd aosp
02.dennis@dubuntu1404:~/devenv/aosp$ . build/envsetup.sh
03.including device/samsung/manta/vendorsetup.sh
04.including device/generic/mips/vendorsetup.sh
05.including device/generic/armv7-a-neon/vendorsetup.sh
06.including device/generic/x86/vendorsetup.sh
07.including device/lge/mako/vendorsetup.sh
08.including device/lge/hammerhead/vendorsetup.sh
09.including device/asus/tilapia/vendorsetup.sh
10.including device/asus/deb/vendorsetup.sh
11.including device/asus/grouper/vendorsetup.sh
12.including device/asus/flo/vendorsetup.sh
13.including sdk/bash_completion/adb.bash
14.dennis@dubuntu1404:~/devenv/aosp$ lunch aosp_arm-eng
15.============================================
16.PLATFORM_VERSION_CODENAME=REL
17.PLATFORM_VERSION=4.4.2
18.TARGET_PRODUCT=aosp_arm
19.TARGET_BUILD_VARIANT=eng
20.TARGET_BUILD_TYPE=release
21.TARGET_BUILD_APPS=
22.TARGET_ARCH=arm
23.TARGET_ARCH_VARIANT=armv7-a
24.TARGET_CPU_VARIANT=generic
25.HOST_ARCH=x86
26.HOST_OS=linux
27.HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty
28.HOST_BUILD_TYPE=release
29.BUILD_ID=KVT49L
30.OUT_DIR=out
31.============================================
32.dennis@dubuntu1404:~/devenv/aosp$ make -j4
33.============================================
34.PLATFORM_VERSION_CODENAME=REL
35.PLATFORM_VERSION=4.4.2
36.TARGET_PRODUCT=aosp_arm
37.TARGET_BUILD_VARIANT=eng
38.TARGET_BUILD_TYPE=release
39.TARGET_BUILD_APPS=
40.TARGET_ARCH=arm
41.TARGET_ARCH_VARIANT=armv7-a
42.TARGET_CPU_VARIANT=generic
43.HOST_ARCH=x86
44.HOST_OS=linux
45.HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty
46.HOST_BUILD_TYPE=release
47.BUILD_ID=KVT49L
48.OUT_DIR=out
49.============================================
50.including ./abi/cpp/Android.mk ...
51.including ./art/Android.mk ...
52.....中间过程省略
53.Install system fs image: out/target/product/generic/system.img
54.out/target/product/generic/system.img+ maxsize=588791808blocksize=2112 total=576716800 reserve=5947392
编译完成,如果再次装载,需要修改ANDROID_PRODUCT_OUT环境变量,这里不多述。
转载请注明出处: http://blog.csdn.net/gobitan/article/details/24367439
0 0