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