虚拟机挂了,Android源代码都没了。。不准备再在虚拟机中下载Android源码了,于是就直接在Mac下编译Android。
在Mac下编译Android比想象的简单多了。我的Mac系统是10.10Yousemite。安装的Xcode也是最新的7.1beta版本。
下载Android源码之前要做的一步就是从硬盘中分一个区分大小写的磁盘。因为Android的编译时要区分大小写的,这点也尤为重要,其实在Android官网上也有写,具体方法有两种,
其一:
利用Mac OS X自带的磁盘工具:
先不要点击任何磁盘,直接点击菜单栏的新建映像。
这样设定,写好名称分好大小,大小最好分大一点,Android源码下载完后有40+G。。。创建完成后,用如下命令挂载:
hdiutil attach /Volumes/HDD/Android.dmg -mountpoint /Volumes/android
其中的路径自己注意修改蛤。
分区分好之后就可以进入挂载的目录拉Android源码了。拉完基本就可以直接编译了。。。要记得安装Xcode,编译过程中可能会提示Xcode版本的问题:
Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk
这个时候要先用如下命令检查一下自己的Xcode版本:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
做如下修改:
//前提是你在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版本号。
编译之前再安装一下JDK7,Android官网有链接,直接下载安装就可以,然后就可以直接编译了。
我是真的一次性就编译成功了。。
接下来记录一下内核的编译,内核的话我继续使用goldfish内核,这里再打个广告,我的CSDN资源有上传goldfish 各个版本的源码,我自己都是编译过的。大家如果网速不好的,可以直接去我的资源里面下载。
接下来就是编译内核了,编译内核之前要先讲交叉编译工具加入PATH路径,也就是android源码目录下的
android/AndroidMSourceFor5xAnd6/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.8/bin
然后就可以用make -j8 ARCH=arm CROSS_COMPILE=arm-eabi-
-j8是利用你的核心数来编译,这个自己看着修改。ARCH和CROSS_COMPILE是制定编译的目标。
编译过程中有可能会出现elf.h找不到的问题,这时候直接从android源码中考过去就可以了:
sudo cp android/external/elfutils/src/libelf/elf.h /usr/include/
还有发现elf.h中的feature.h找不到,这里直接把include <feature.h>这行注释掉就可以,然后就可以编译成功。
2分钟就编译完了,-j8还是很好用的,蛤蛤。