之前在mac os X上用新版的xcode编译android失败了,chromium_org的gyp文件出了问题。看别人教程都是用旧版的xcode 4.x去编译。不想装xcode所以就直接去官方推荐的ubuntu上编译,果然畅通无阻,几乎没遇到坑。
1. 下载Android源码
- 可以去国内的repo:
https://mirrors.tuna.tsinghua.edu.cn/help/#AOSP - 我为了省时间直接百度网盘上下了一个:
http://pan.baidu.com/s/1gdrJzYr
是android 4.4 版本:
full-eng 4.4 KRT16M eng.root.20151107.092746 test-keys
2. 初始化环境
- 要装个Oracle JDK 1.6版本。
其他依赖:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
3. 选版本
如果编译arm默认版本
直接在根目录下make。
如果出了问题多半是依赖没有装,就apt-get安装一下继续make。ubuntu下面一般不会出现问题,会畅通无阻的编译完。如果要编译x86版本
加载环境变量:
./build/envsetup.sh
选版本:
./lunch
选vbox-86
然后make -j2 installer_img(-j是指定CPU数,双核所以用j2)
4. 运行
最后生成的文件在:
/root/android/out/target/product/generic
和/root/android/out/target/product/vbox_x86
system.img userdata.img ramdist.img
编译log文件在:
/root/android/out/target/product/generic/system/build.prop里面。
由于服务端没有装x 11也不想装vnc界面,直接用命令行运行emulator会报错误:SDL init failure, reason is: No available video device。所以只能copy出来运行,编译完之后用sz命令把三个image copy到自己的电脑。
1. Arm版本,由于我编译的是API19,所以直接把生成的三个img文件copy到这里覆盖掉。
然后在avd管理器里面新建API19的设备,直接运行。看到系统的版本号变成:full-eng 4.4 KRT16M eng.root.20151107.092746 test-keys。就说明运行的是刚刚build的image。
2. ViturlBox 版本
用make installer_img命令编译。
出现错误:error: do_inode_allocate_extents: Failed to allocate 5 blocks。
原因是给Image分配的空间太小。
要修改BoardConfig.mk中BOARD_SYSTEMIMAGE_PARTITION_SIZE 值,因为值太小,所以要设置一个比原来的值大的值,但是网上的都是在device目录下找,但是vbox_x86的不在device目录下,是build/target/board/目录下。
编译成功之后会生成out/target/product/vbox_v86/installer.img文件。然后用sz installer.img命令copy到自己电脑。