Keep on going, never give up.

Ubuntu环境Android平台源码下载及编译

本文介绍Ubuntu环境下Android源码下载及编译方法,Android源码是什么?Android源码就是指Android平台和软件源码,不单指Linux内核Kernel,我们常说的Linux Kernel在这个Open source project里,只是其中的一个组成部分。那么我们什么时候需用到Andriod源码呢?添加修改驱动、固化APK应用、定制OS、权限及服务修改或固化等等,大都需要修改到Android源码,当然了做单纯的上层APK开发也可以使用,Android源码比较大,大概有3G+(不包含Linux内核),所以大家在下载前已经把磁盘空间配置好,免得浪费一个晚上时间。

基础阅读:

Windows环境下Android NDK环境搭建

Windows下Android开发环境搭建和配置

Android开发入门之环境概念介绍

测试环境情况:Ubuntu 10.10 x86,Android 2.3

主要参考网址:http://source.android.com

下面就把android源码在ubuntu 10.10上下载、编译过程汇总一下,官方文档比较详细的,本文以摘要汇总补充为主,Android开发环境搭建请参考《Ubuntu下搭建Android开发环境》一文。

一、下载Android源码

1、创建工作目录

进入工作目录(比如works),创建bin目录:

mkdir ~/works

mkdir ~/works/android_dev

cd ~/works/android_dev

mkdir bin

2、安装repo版本管理工具(基于git基础开发,便于git资源管理)

curl http://android.git.kernel.org/repo > ~/works/android_dev/bin/repo

cd bin

chmod a+x repo

关于repo更多参考:http://source.android.com/source/version-control.html

3、准备下载Android源码

cd ~/works/android_dev

./bin/repo init -u git://android.git.kernel.org/platform/manifest.git

这里默认下载最新的的版本(2.3),如果下载其它版本,请使用类似下面命令(后面为版本简称):

repo init -u git://android.git.kernel.org/platform/manifest.git -b cuccake

4、配置repo账户

git config --global user.email "[email=abc@gmail.com]abc@gmail.com[/email]"

git config --global user.name "ABc"

5、开始下载android platform的源代码

./bin/repo sync

由于 android 的源码很大,现在新版本的完整源码已经高达 3G 以上,都是从GG官方下载,速度很慢(时间大约要一个晚上),执行后可以回家睡觉或出去通宵均可,有一点需注意在下载之前一定要确保你的磁盘可用空间足够。

如要下载 kernel(即Linux内核源码):

$repo sync kernel

6、添加公钥

$ gpg --import

该命令是交互式导入公钥,参照Google官方说明,这个公钥是用来签名TAGS以表明该版本为RELEASE版本(这里翻译似乎有点问题,原话是The key is used to sign annotated tags that represent releases)这一步不执行仍时可以正常编译的,但如编译Release版本时,建议加上,gpg(GNU Privacy Guard)是个开源加解密软件,交互导入密钥参考上文的官方downloading.html这个页面,还可参考文末地址。

7、选择版本

$ git tag -v tagname

只需选择版本就可以了,是普通版还是精简版或是其它,直接敲数字和回车就可以了。

二、编译Android源码

8、更新环境变量(选择编译目标)

source build/envsetup.sh

9、选择编译目标对象

命令格式:BUILD-BUILDTYPE,其中BUILD和BUILDTYPE可参考官方网页【编译参考3和编译参考4】。命令如果不支持或打错会有提示信息。比如:

lunch full-eng

其它命令如,

lunch full_crespo-userdebug

汇总格式如下:

lunch (generic,full,full_crespo,crespo4g,passion)-(user,userdebug,eng)

上面是默认的设置,如果需要针对开发用机,可以选择使用source build/envsetup.sh命令查看,Android 2.3代码支持htc,sumsung等三款目标机型。更多请参考上文提及的官方网页,官方提到Nexus S和Nexus s 4G是Android开源项目的推荐用机,而Nexus One只是试验用机且不被支持(何意?原生代码编译后无法烧到Nexus One??)。

10、编译Android源码

make -j4

注意:该指令是带杠的jn(起初天缘总是不能运行,就直接用make了,三天后才发现原来丢了个杠杠*_*),按照官方介绍,后面这个-jn是你机子CPU数*核心数*单CPU线程数*(1或2),编译时间大概40分钟-2个小时,看机子性能了,最终编译结果在:

~/works/android_dev/out

另外,编译之前建议把/works/android_dev整个目录备份一下,下次如果重装系统,可以直接拷贝过来使用,再编译时可能需要设置一下权限(chmod -R 777 android_dev),否则可能错误多多。

三、运行Android虚拟机

11、先设置环境变量

指令如下:

export ANDROID_PRODUCT_OUT=/works/android_dev/out/target/product/generic

设置完成后,先logout退出,再login登录进来即可更新环境变量。

注意,这里的环境变量设置也可以起初放到系统的配置文件里,.bashrc,天缘实测好像就这么一句就OK了,网上有说要设置如下几个(如果运行有问题时可以尝试使用,指令中部分路径可能需替换成你自己的设置):

export ANDROID_DIR=~/works/android_dev

export ANDROID_PRODUCT_OUT=${ANDROID_DIR}/out/target/product/generic

export ANDROID_PRODUCT_OUT_BIN=${ANDROID_DIR}/out/host/linux-x86/bin

export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};

12、运行编译结果

进入android_dev/out/host/bin/目录下,然后运行:

emulator --debug-init -skin QVGA-L

或:

./emulator

即可显示机器人界面。

补充:

映像编译成功后会在目录 ~/works/android/out/target/product/generic 下产生一些image文件ramdisk.img system.img userdata.img android-info.txt,关于这些映像使用,后面文章会介绍。

32位系统编译Android源码还需要修改几处地方配置,请参考:Android源码在32位Linux系统上编译配置

参考资料:

1、智康博客:http://www.23day.com/html/22819.html

2、GnuPG更多参考:http://zh.wikipedia.org/wiki/GnuPG

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.