Mac OS X 10.8.4下Android4.2.2源码下载与编译

来源:互联网 发布:php从入门到精通csdn 编辑:程序博客网 时间:2024/06/07 09:42

转载:http://blog.csdn.net/yangblocker/article/details/9673097

Mac OS X 10.8.4下Android4.2.2源码下载与编译

最近打算辞职了,离开一直在厦门实习的公司。本来这个月转正,但我的内心告诉我,厦门太安逸了点。我必须去外面闯闯,还年轻啊,不想以后后悔。在这两天不记得看到什么东西需要Android源码。然后心血来潮打算编译下Android源码,毕竟以前编译失败过,有点不服输。下面记录下这次的一点心得吧。

一、环境配置

电脑: MacBook Pro  2.5GHz Intel Core i5

内存:4GB 1600 MHz DDR3

OS: Snow Leopard 10.8.4

XCode: 4.6.4 

JDK:1.6    这个必须是1.6版本。如果是1.7的话要另外安装1.6版本,并设置为默认版本,不会的我稍后介绍方法。


二、设置Mac OS X的编译环境

基本的参照官网Setting up a Mac OS X build environment

这里特别要强调一下Android源代码必须在大小写敏感的文件系统下编译,而Mac OS默认不是大小写敏感的,因此需要创建

一个大小写敏感的磁盘镜像文件。具体方法有两种:一种是用命令创建,还有一种就是用系统自带的磁盘管理工具。

命令方法:用hdiutil create命令,我尝试过,但失败了,有谁知道麻烦告诉我下。

磁盘工具:进入应用程序/实用工具/磁盘工具,选择文件->新建->新建空白映像


点击创建,ok,创建好了。磁盘镜像文件保存在当前用户根目录下,我的是在/ywen目录下。我们需要其将挂载到某个目录下面,在终端进入创建的磁盘镜像文件目录,输入hdiutil attach ~/android.dmg  -mountpoint /Volumes/android。这样就将其挂载到Volumes目录下。至此,基本环境完成。

三、下载Android 4.2.2源码。

 参照官网

首先我们要先进入到我们刚才挂载的目录下去。执行 $ cd /Volumes/android。

然后在按照官网步骤一步一步进行。

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

$ chmod a+x ~/bin/repo

$ mkdir WORKING_DIRECTORY (创建源码保存的文件目录)

$ cd WORKING_DIRECTORY/

然后就是下载源码了,这里我强烈推荐下使用Android内核剖析(柯元旦著)一书提供的一段防止下载异常的脚本。因为单独下载可能会出现下载异常然后某个链接下载失败的情况。

[plain] view plaincopy
  1. #!/bin/bash   
  2.    #FileName  get-android.sh  
  3.    PATH=~/bin:$PATH   
  4.    repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1   
  5.    repo sync   
  6.    while [ $? = 1 ]; do   
  7.    echo "================sync failed, re-sync again ====="   
  8.    sleep 3   
  9.    repo sync   
  10.    done  

复制上面代码保存到刚才的源码目录(WORKING_DIRECTORY)里。如:get-android.sh。

最后在终端执行 $ ./get-android.sh开始下载源码了。接下来就是漫长的等待,我也不清楚要下载多久,我都是晚上把电脑丢在那里,设置不让电脑休眠(休眠可能会掉网的),一直下载。当出现下图所示很多个100%时,那恭喜你,下载完成了。


四、编译下载的源码

设置编译初始化环境

1、$ source build/envsetup.sh

2、选择编译目标 $lunch full-eng

开始编译代码

$ make 

编译过程很漫长,也是最关键的部分,有很多有意思的事情会发生的。

1、如果之前java版本不是1.6的,这个时候就会报错了,提示java version不正确。关于这个错误。可以查看这里https://forum.processing.org/topic/how-to-re-enable-java-1-6-on-mac-osx-mountain-lion,看不懂的也可以问我,大家一起讨论。

2、如果出现  If you wish to build using higher version of SDK, build/core/combo/HOST_darwin-x86.mk:66: * try setting BUILD_MAC_SDK_EXPERIMENTAL=1 before build/core/combo/HOST_darwin-x86.mk:67: * rerunning this command 这种错误的话。

在终端执行export BUILD_MAC_SDK_EXPERIMENTAL=1就可以了。继续执行$make 编译源码

3、我记得在编译了一个多小时吧的时候出现个棘手错误,停止编译了,错误如下。


当时有点茫然,google了下,说是webkit的一个bug。可参考这里https://groups.google.com/forum/#!msg/android-building/MrM4BneUoCw/f0xHBHgsgEsJ。我按照这个参考执行了$ patch -p1 < downloaded.file 这个命令之后又出现问题了。如下图


前面的都成功了,后面的有两个失败。很无奈啊,没办法,我按照提示用XCode打开了文件发现是多了两个右大括号},

把它去掉保存之后,继续$make 最后编译成功后会出现

nstalled file list: out/target/product/generic/installed-files.txt

Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Running: mkyaffs2image -f out/target/product/generic/system out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/generic/system.img

最后编译完成后运行:

emulator -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7  -sysdir  ./out/target/product

/generic/ -system system.img -data userdata.img出现了模拟器了,不过这个模拟器没有换返回键,home键。

最后附一张效果图。




0 0