在Ubuntu上下载、编译和安装Android源码

本文一部分参考老罗android之旅

一. 环境准备。

     1. 磁盘空间预留20G左右,内存最好8G,因为一边要跑主机,一边要跑虚拟机,内存要求还是比较高的,这样才会比较流畅。

     2. 但是我是在物理盘上装得ubuntu, 非虚拟机,4G内存就够了.

     3. 至于Ubuntu安装这个就不说了.

     4. 安装Git工具。Android源代码采用Git工具来管理,与SVN相比,这是一种分布式的源代码管理工具,而SVN是集中式的源代码管理工具。要安装Git工具,在Ubuntu上执行以下命令即可:

 USER-NAME@MACHINE-NAME:~$ sudo apt-get install git-core gnupg

     5. 安装Java SDK。在Ubuntu上执行以下命令:

     USER-NAME@MACHINE-NAME:~$ 

sudo add-apt-repository ppa:ferramroberto/java

     

USER-NAME@MACHINE-NAME:~$ 

sudo apt-get update

     USER-NAME@MACHINE-NAME:~$ 

sudo apt-get install sun-java6-jre sun-java6-plugin

     USER-NAME@MACHINE-NAME:~$ 

sudo apt-get install sun-java6-jdk

       

     

     6. 依赖的其它包。在Ubuntu上执行以下命令:

     USER-NAME@MACHINE-NAME:~$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl

     7. 调试工具。在Ubuntu上执行以下命令:

     USER-NAME@MACHINE-NAME:~$ sudo apt-get install valgrind


    二. 下载Android源代码工程。

     1. 下载repo工具。在Ubuntu上执行以下命令:

     USER-NAME@MACHINE-NAME:~$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ./repo

     USER-NAME@MACHINE-NAME:~$ chmod 777 repo

     USER-NAME@MACHINE-NAME:~$ cp repo /bin/

     2. 下载Android最新版本源代码。在Ubuntu上执行以下命令:

     USER-NAME@MACHINE-NAME:~$ mkdir Android

     USER-NAME@MACHINE-NAME:~$ cd Android

     USER-NAME@MACHINE-NAME:~/Androidrepo init -u https://android.googlesource.com/a/paltform/manifest -b android-2.3.1_r1

     USER-NAME@MACHINE-NAME:~/Android$ repo sync

     经过漫长的等待(我下载了两三天)后,就可以把Android源代码下载下来了。其间可能还有经历下载中断的情况,这时只要重新执行repo sync就可以了。

      有个问题要说一下,就是下载的战线拉的很长,所以难免有时候断网,这个写一个python程序断网或者中断的时候重新继续下载,在WORKING_DIR目录下 新建一个down,sh

      内容如下所示

在Ubuntu上下载、编译和安装Android源码_第1张图片

      如果显示如下,则说明sync repo 已经完成,源码已经下好了

在Ubuntu上下载、编译和安装Android源码_第2张图片

      这时可以看到WORKING_DIR目录下面已经有东西了,没错,就是android源码文件:

     三. 编译Android源代码。

     1. 编译。在Android目录下执行以下命令:

        当然,可以在make后面加上  -jn  开几个线程去make。(n比如我cpu是双核的  那就写4)

        第一次编译肯定不会成功的,总是在历经很错失败时候,还是不能成功。。。(坑爹啊=.=)

        我想,在输入make之后,出现的第一个错误就是下面这个错误了

在Ubuntu上下载、编译和安装Android源码_第3张图片

        原因是因为谷歌默认android编译是在64位系统上才能编译的,但是哥哥是32位系统啊,不会再让我再装一个吧,很苦逼的呢。别担心,所谓上有政策,下有对策吗,哈哈。那么就让我们看看./build/core/main,mk文件,哈哈 找到了就是这一句:

在Ubuntu上下载、编译和安装Android源码_第4张图片

        将 ifneq (64,$(findstring 64,$(build_arch)))    修改成  ifneq (i686,$(findstring i686,$(build_arch)))

        还有几处要改

        找到下列文件:

     /external/clearsilver/cgi/Android.mk

     /external/clearsilver/cs/Android.mk

     /external/clearsilver/java-jni/Android.mk

     /external/clearsilver/util/Android.mk

     修改LOCAL_CFLAGS和LOCAL_LDFLAGS变量:

     # This forces a 64-bit build for Java6

     # Change the following two lines for building on a 32-bit system.

     # LOCAL_CFLAGS += -m64

     # LOCAL_LDFLAGS += -m64

     LOCAL_CFLAGS += -m32

     LOCAL_LDFLAGS += -m32

      好了,这个错误解决了之后,我们还会碰到错误的,OK,我就碰到了下面这个问题

在Ubuntu上下载、编译和安装Android源码_第5张图片

    就是out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1这个错误,在百度上搜了一下,是因为gcc版本太高了。由于Android对Ubuntu12.04编译平台的支持不是很推荐,有些库的兼容方面会有一下问题,在编译的过程中难免会产生一写错误,就比如上面的和图片中的“_RORTIFY_SOURCE” 这个。所以,要重新下载gcc-4.4

sudo apt-get install gcc-4.4 
sudo apt-get install g++-4.4

    进入/usr/bin 删除gcc对gcc-4.6的链接,创建到4.4的链接

cd /usr/bin
sudo rm -r gcc
sudo ln -s gcc-4.4 gcc
sudo rm -r g++
sudo ln -s g++-4.4 g++

    OK,这一步完成之后,在继续make。如果还出错的话十一下这个命令

sudo apt-get install g++-4.4-multilib        #重新安装一下

    好了,就经过漫长的等待吧(本人是make -j4) 编译了两个多小时,大概两个半小时

    编译完成的后提示如下

在Ubuntu上下载、编译和安装Android源码_第6张图片

    哈哈,如果你也编译完成了,那就恭喜你哈。

    对了,顺便再说一个问题,就是编译过程中权限不够的问题。本人将源码下载在/usr/local下面,对这里的文件操作需要root权限的,如果使用sudo来提高权限的话,很多编译所需要的环境变量就找不到(比如java)。所以,简单一点就把这个文件夹下所有的文件夹和文件的own变成普通用户。

sudo chown -hR root /usr/local/androidSource/WORKING_DIR/

    这样就可以了。

你可能感兴趣的:(android,源码编译,2.3.1)