Android源码编译
Posted 吴佳峻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android源码编译相关的知识,希望对你有一定的参考价值。
简要说明
现在的android应用开发开源项目感觉就像春秋战国时期,各种思想雨后春笋,百花齐放,如算法,如图形,如数据库,如网络协议,林林总总、煞是好看,Github也成为了开源者及受益者的乐园,现在我们就跟随开源的脚步,追随耀眼的明星,站在巨人的肩膀上,开启我们的成长之路吧。
Android源码的开源,也是最大的开源了,当然有人会说是开放不是开源, 这个我们就不要计较了,能下载到我们需要的系统代码,已经很不错了。Android的源码下载编译对于初学者还是很头疼的, 我们就从这里开始吧。
下载安装VM虚拟机和ubuntu ios文件
我这里选的版本是7.1.5 build-491717 、ubuntu-11.04-desktop-i386
预备环境
本来呢, 选择的是4.4.1版本的源码,但是源码实在太大,都超过了我设定的虚拟机硬盘50G,果断放弃了,估计编译也得花很长时间。后来就选择了2.3.1版本的源码,下载源码之前首先要做一些准备工作
买一个稳定的VPN,这是下载源码和所需软件
安装Git工具
sudo apt-get install git-core gnupg
安装Jdk
下面的增加、更新软件源的命令经常用到
sudo add-apt-repository ppa:ferramroberto/java
sudo apt-get update
安装
sudo apt-get install sun-java6-jre sun-java6-plugin
sudo apt-get install sun-java6-jdk
下载repo,并设置权限
wget https://dl-ssl.google.com/dl/googlesource/git-repo/repo
chmod 777 repo
cp repo /bin/
创建一个Android的文件夹,并切换到它目录下
mkdir Android
cd Android
下载android源码
默认是下载最新版
repo init -u https://android.googlesource.com/platform/manifest
我是指定了2.3.1的版本分支
repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.1_r1
接着就是下载了
repo sync
下载是个很漫长的过程,得网速稳定,能翻墙,大致需要2~3天吧,总大小有4~5G吧,速度快的话,可能还不要那么长时间
好了, 下载完的样子就如下图
Make编译
Make
当下载完,不要以为就结束了, 问题才刚刚开始, 呵呵。 为什么这样说呢, 因为编译的时候会遇到各式各样的问题, 主要是2方面:
提示错误信息 You are attempting to build on a 32-bit system.
这里把检查是不是64位的脚本注释掉就行了
修改build/core目录下的main.mk文件:
ifeq ($(BUILD_OS),linux)
build_arch := $(shell uname -m)
#Change the following line for building on a 32-bit system.
#ifneq (64,$(findstring 64,$(build_arch)))
#$(warning************************************************)
#$(warning You are attempting to build on a 32-bit system.)
找到下列文件,也同时注释掉:
/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
第二个出现的问题就是各种软件没有安装的问题
所以最好编译前安装好这些软件, 否则编译大半天出了问题还得,重头再来,那叫一个桑心啊。
sudo apt-get install bison
sudo apt-get install bison flex
sudo apt-get install zlib-devel
sudo apt-get install libncurses5-dev
sudo apt-get install libx11-dev
sudo apt-get install gperf
对于其他相似问题, 就百度一下看看缺少哪个,然后执行一下就好了,假如找不到这个,就的找找他在哪个源里面了, 把他添加到我们的软件源文件里面,然后再次初始化。
好了,下面就是Make成功后输出的消息,看着是不是很激动,呵呵
Emulator启动模拟器
这一步就简单多了,把我们编译后的输出bin添加到环境变量
export PATH=$PATH:~/Android/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic
运行emulator
emulator
下面就是我们期待已久的界面了,看到这个,前面的付出也算得到回报了
PS:编辑文字真麻烦, world过来各种样式都没了,也不支持离线编辑,哎。
联系作者
QQ 928320442
QQ群 323876830
以上是关于Android源码编译的主要内容,如果未能解决你的问题,请参考以下文章