Android-源码下载编译教程

来源:互联网 发布:小区内的网络超市 编辑:程序博客网 时间:2024/06/18 08:27
Ubuntu安装git工具
sudo apt-get install git
git config –global user.email “test@test.com”
git config –global user.name “test”

Ubuntu安装repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x~/bin/repo

下载Android源码
#此过程需要在polipo翻墙环境下进行
#创建source目录
mkdir source
cd source
#构建repo项目目录
repo init-u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
#下载Android源码
repo syns

改用科大源下载
如果觉得慢,可以使用科大源下载源码,实际速度为你电脑网速。
参考链接如下:https://lug.ustc.edu.cn/wiki/mirrors/help/aosp

编译源码前的准备工作
为apt-get添加阿里云源
deb http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse

安装依赖软件
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-devg++-multilib
sudo apt-get install tofrodos python-markdownlibxml2-utilsxsltproc zlib1g-dev:i386
sudo apt-get install dpkg-devlibsdl1.2-devlibesd0-dev
sudo apt-get install git-coregnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-devgcc-multilibg++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-devx11proto-core-devlibx11-dev
sudo apt-get install lib32z-devccache
sudo apt-get install libgl1-mesa-devlibxml2-utilsxsltproc unzip m4

添加OpenJDK
安装OpenJDK
从Android 6.0开始Android源码的编译需要安装OpenJDK,不能使用Oracle JDK,而且Android 6.0只能使用OpenJDK7
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-getupdate
sudo apt-getinstall openjdk-7-jdk
添加配置项
exportJAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
exportJRE_HOME=${JAVA_HOME}/jre
exportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
exportPATH=${JAVA_HOME}/bin:$PATH

编译代码
添加CCACHE
为.bashrc文件末尾添加:export USE_CCACHE = 1
echo export USE_CCACHE=1 >> ~/.bashrc

设置高速缓存
为了提高编译效率,设置编译器高速缓存:
prebuilts/misc/linux-x86/ccache/ccache-M50G

导入Android环境变量
导入编译Android源码所需的环境变量和其它参数:
source build/envsetup.sh

选择编译类型
lunch
#选择1:aosp_arm-eng

开始编译
开始编译,执行make -j10, 10为同时编译的线程数,一般google推荐这个数字为2倍的cpu个数再加上2,比如4核,就是10。
make-j10

编译成功

编译系统无法运行,于是使用别人提供的系统进行编译(http://blog.csdn.net/fuchaosz/article/details/51487585),通过上面描述的方法进行编译,编译成功。

运行Android系统
将配置环境到导致到上下文中
sourcebuild/envsetup.sh
执行lunch
lunch
#编译时选择之前编译的build target(aosp_arm-eng)
配置上下文
exportANDROID_BUILD_TOP=$ANDROID_SOURCE/
exportANDROID_PRODUCT_OUT=$ANDROID_SOURCE/out/target/product/generic/
cd$ANDROID_SOURCE/prebuilts/android-emulator/linux-x86_64
启动模拟器
emulator


问题汇总
问题1
errorerror opening 'out/host/darwin-x86/obj/SHARED_LIBRARIES/libart_intermediates/gc/heap.d': No space left on device
fatal errorerror in backend: IO failure on output stream.
ninja: build stopped: subcommand failed.
make: *** [ninja_wrapper] Error 1
解决方案(分区磁盘小了)
修改磁盘大小 $ sudo hdiutil resize-size<new-size-you-want>g
 ~/android.dmg.sparseimage

参考
http://blog.csdn.net/fuchaosz/article/details/51487585