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_CFLAGSLOCAL_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源码编译的主要内容,如果未能解决你的问题,请参考以下文章

Android源码编译是干啥

如何定制android源码的编译选项

Android源码编译

求解答,Android源码编译时怎的添加第三方jar包

编译SqlCipher_android源码

怎么在ubuntu上编译android源码