Android 源码编译(Ubuntu 12.04 64bit + android 2.3.5_r1)

第一次编译android源码,虽然网上已有的帖子很多,但是还是由于各种这样那样的问题走了很多弯路。本来希望编译4.3_r2,结果网速太遭,只好先下个较小的2.3.5的玩玩。

已有资料:

官网:

http://source.android.com/source/initializing.html

http://source.android.com/source/downloading.html

其实写的已经很详细了,一定要仔细看看,我就是粗略扫了一遍后面才有一堆问题。

注意:特别注意swap分区的要求

步骤一:安装 jdk 1.6 官网下载 jdk-6u45-linux-x64.bin 文件(注意选自己系统对应的版本)

1.进入jdk存放目录,为jdk授权

chmod a+x jdk-6u45-linux-x64.bin

2.安装

sudo ./jdk-6u45-linux-x64.bin

3.配置环境变量

sudo gedit /etc/profile

添加:(注意将路径更换成你的jdk路径)

  JRE_HOME=/usr/local/java/jdk1.6.0_45/jre
  PATH=$JAVA_HOME/bin:$PATH
  CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib
  export JAVA_HOME
  export PATH
  export CLASSPATH

让配置立刻写入:source /etc/profile

4.Ubuntu下默认openjdk,所以这里要修改默认jdk

sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_45/bin/java 300

sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_45/bin/javac 300

步骤二: 依赖包安装

我的系统是Ubuntu12.04,按照官网提示如下操作即可:

$ sudo apt-get install git gnupg flex bison gperf build-essential \
  zip curl libc6
-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11
-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1
-mesa-dev g++-multilib mingw32 tofrodos \
  python
-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln
-s /usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/libGL.so

步骤三:安装repo(最好安装下goagent代理)

1.进入你想存放源码的目录(我的是/workplace),建立bin文件夹,直接添加环境变量

mkdir bin

PATH=/workplace/bin:$PATH

2.进入bin目录,下载repo工具

官网提供的链接如下,但我无法下载,从别处下载的1.12第一次repo没问题,第二次repo就出现两个密钥的问题,有说把~下隐藏的两个repo文件删除就ok,但我还是没搞定,尝试着下1.18也还是不行,最终直接从网上复制repo代码解决

curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > /workplace/bin/repo

curl http://git-repo.googlecode.com/files/repo-1.12 > /workplace/bin/repo

curl http://git-repo.googlecode.com/files/repo-1.18 > /workplace/bin/repo

最终下载链接:https://android.googlesource.com/tools/repo/+/v1.12.13/repo

3.授权repo可执行

chmod a+x repo

步骤四:初始化repo客户端

1.建立源码目录,并进入

mkdir android

2.获得源码版本

repo init -u https://android.googlesource.com/platform/manifest

可看到所有分支,通过-b 可选定分支,为了下的快一点,我选了android-2.3.5_r1,期间还会让你填用户名和邮箱

repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.5_r1

步骤五:同步源码

repo sync

这是个漫长的过程,10M带宽下,我下了差不多半天,且各种问题,遇到问题重新repo sync就好,他支持断点续传,另外,别人有提供自动repo sync的脚本,可以尝试下

最好按照官网所说的,修改下 ~/.netrc 并修改下载链接为 https://android.googlesource.com/a/platform/manifest

步骤六:编译源码

1. . build/envsetup.sh(注意此处.=source,.后面有个空格)

2. lunch full-eng(eng代表开发者模式)

3. make -j4(-j选项不加也可以,加了会比较快,具体数字是多少,看你的cpu有多少线程)

注意,Ubuntu 12.04的gcc版本太高,要自己装先装好gcc 4.4 和g++4.4,并修改默认的gcc 和 g++

sudo apt-get install gcc-4.4 

sudo apt-get install g++-4.4

装完进入/usr/bin ,查看版本,修改默认链接

ls -l gcc*

sudo mv gcc gcc.bak

sudo ln -s gcc-4.4 gcc

ls -l g++*

sudo mv g++ g++.bak

sudo ln -s g++-4.4 g++

步骤七:运行模拟器

1.配置模拟器环境变量

sudo gedit ~/.bashrc

source ~/.bashrc

export ANDROID_PRODUCT_OUT=/workplace/bin/android-2.3.5/out/target/product/generic
export ANDROID_PRODUCT_OUT_BIN=/workplace/bin/android-2.3.5/out/host/linux-x86/bin
export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN};

2.运行模拟器

emulator

默认使用 ANDROID_PRODUCT_OUT目录下镜像

p.s:我这儿必须用root登录才能运行,不知是不是应为安装位置的缘故,我装在/下

Android 源码编译(Ubuntu 12.04 64bit + android 2.3.5_r1),,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。