注:本次过程是在翻墙的情况下实现的。
参考https://source.android.com/source/initializing.html文档步骤执行:
1、创建磁盘镜像80g(在该镜像里下载、编译android源码)
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
2、安装jdk(jdk6用于编译,jdk7用于下载)
3、安装Xcode最好是4以下,如果安装的XCode为5以上,则在编译时,需要修改几处文件。
4、安装MacPorts。
5、使用MacPorts安装make, git, and GPG。
6、如果make的版本是3.8.2,需要降级到3.8.1。
7、修改文件标识符限制。
8、配置缓存,(用于加速编译)。
9、安装repo。
10、初始化android版本下载manifest
11、下载。
12、编译。
下面说下在这里面遇到的问题及解决方法:
1、初始化android版本下载manifest后,在.repo文件夹下面的manifest.xml文件中,fetch=".."修改为fetch="https://android.googlesource.com/" 。否则无法下载源码。
2、下载源码时,由于网络原因,经常后掉线,导致停止下载。每次repo sync很麻烦,可以生成一个.sh文件,自动处理这个情况。
#!/bin/bash
PATH=~/bin:$PATH
repo sync
while [ $? = 1 ]; do
echo "================sync failed, re-sync again ====="
sleep 3
repo sync
done
注意:**
为SDL打源码补丁,为什么g神们就没打上补丁呢,只好我们自己来修改源码,参考补丁地址是http://hg.libsdl.org/SDL/changeset/bbfb41c13a87,在源码目录找到并打开文件./external/qemu/distrib/sdl-1.2.15/src/video/quartz/SDL_QuartzVideo.h,找到CGDirectPaletteRef palette所在行数,前后加入判断,如下:
#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1070) CGDirectPaletteRef palette; /* palette of an 8-bit display */ #endif
3、Xcode版本问题。(Xcode5以下版本无视下面)
1)
Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk
修改方法为:
//前提是你在WORKING_DIRECTORY目录下
$ vi build/core/combo/HOST_darwin-x86.mk
//找到mac_sdk_versions_supported
mac_sdk_versions_supported := 10.6 10.7 10.8
//将上面这行换成
mac_sdk_versions_supported := 10.9 10.10
//就是换一下支持的sdk版本号。
2)
external/chromium_org/base/android/jni_generator/jni_generator.py
p = subprocess.Popen(args=['cpp', '-fpreprocessed'], 修改为:
system = platform.system()
if system == 'Darwin':
cpp_args = ['cpp']
else:
cpp_args = ['cpp', '-fpreprocessed']
p = subprocess.Popen(args=cpp_args,
3)
build/core/combo/HOST_darwin-x86.mk
ifeq ($(mac_sdk_version),10.8)
修改为ifeq ($(mac_sdk_version),10.9)