android源码编译


1.下载 android源码并更新之
建议不要用repo来下载(android源码超过1G,非常慢)建议下载cupcake项目,命令如下:
$repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake (如果不出错的话,5分钟内应提示成功,跟网络自己速度有关)
然后执行如下命令:
$repo sync(更新很慢,用了3个小时)

 

2、编译android源码(使用make命令)
更新源码完成后并得到~/project/android/cupcake/out 目录
进入android源码目录执行如下命令:
$make

3.在模拟器上运行编译好android

android SDK的emulator程序在android-sdk-linux_x86-1.0_r2/tools/下,emulator是需要加载一些后缀为.image 的文件,默认加载android-sdk-linux_x86-1.0_r2/tools/lib/images下的kernel-qemu(内核) ramdisk.img system.img userdata.img  这三个

编译好android之后,
emulator    程序在~/project/android/cupcake/out/host/linux-x86 /bin下,
ramdisk.img system.img userdata.img    文件则在~/project/android/cupcake/out/target/product/generic下

我们增加模拟器的环境变量
$vim ~/.bashrc
在.bashrc中新增环境变量,如下
#java 程序开发/运行的一些环境变量
export ANDROID_PRODUCT_OUT=~/project/android/cupcake2/out/target/product/generic
ANDROID_PRODUCT_OUT_BIN=~/project/android/cupcake2/out/host/linux-x86/bin
export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN};

最后,同步这些变化:
$source ~/.bashrc

启动模拟器:
$emulator -image system.img -data userdata.img -ramdisk ramdisk.img
最后进入android桌面,就说明成功了。
out/host/linux-x86/bin下生成许多有用工具(包括android SDK/tools的所有工具),因此,可以把eclipse中android SDK的路径指定到out/host/linux-x86/bin进行开发了

4.编译linux kernel(可选,主要是系统移植需要)
直接make android源码时,并没有make linux kernel。因此是在运行模拟器,所以不用编译 linux kernel。如果要移值android,或增删驱动,则需要编译 linux kernel

 

5.编译单个模块(如果需要修改系统某些应用,那么就需要单个应用编译)
android中的一个应用程序可以单独编译,编译后要重新生成system.img
在源码目录下执行
$. build/envsetup.sh (注意:.后面有空格)
就多出一些命令:
- croot:   Changes directory to the top of the tree.
- m:       Makes from the top of the tree.
- mm:      Builds all of the modules in the current directory.
- mmm:     Builds all of the modules in the supplied directories.
- cgrep:   Greps on all local C/C++ files.
- jgrep:   Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir:   Go to the directory containing a file.
可以加—help查看用法
我们可以使用mmm来编译指定目录的模块,如编译联系人,具体操作如下:
$. build/envsetup.sh
$mmm packages/apps/Contacts/    
编完之后生成两个apk文件:
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/ Contacts.apk
可以使用make snod重新生成system.img
再运行模拟器

 

6.编译SDKandroid源码的编译【直接执行make命令是不包括make sdk的。make sdk用来生成SDK,这样,我们就可以用与源码同步的SDK来开发 android了】步骤如下:

1)修改/frameworks/base/include/utils/Asset.h
‘UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024’ 改为 ‘UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024’
原因是Eclipse编译工程需要大于1.3M的buffer

2)编译ADT(记住我们先编译adt后编译sdk)
    若下载的是cupcake源码需进入:development/tools/eclipse/scripts目录,如果下载的是主线代码,需要进入:sdk/eclipse/scripts目录(才会有build_server.sh脚本命令),执行如下命令

$export ECLIPSE_HOME=你的eclipse路径
$./build_server.sh 你想放ADT的路径

注意:在执行./build_server.sh命令时,会将out/host/linux-x86/目录下生成的sdk及我们之前make后生成的文件(ramdisk.img,userdata.img,system.img)给清除掉,这也就是我们为什么要先编译adt后编译sdk的原因。

3)执行make sdk。
$make sdk

编译很慢。编译后生成的SDK存放在out/host/linux-x86/sdk/目录下,此目录下有android-sdk_eng.xxx_linux- x86.zip文件和android-sdk_eng.xxx_linux-x86目录。android-sdk_eng.xxx_linux-x86就是SDK目录
注意:当用mmm命令编译模块时,一样会把SDK的输出文件清除,因此,最好把android-sdk_eng.xxx_linux-x86移出来

 

原文地址:http://cqfly.iteye.com/blog/764888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值