android源码编译

转载 2012年03月30日 00:02:43


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

相关文章推荐

Android源码编译

动手实现Android源码(AOSP)的下载、编译、运行、导入、调试

这几天为了搞Android源码费了不少功夫,也遇到了不少坑,在此记录作为日后参考。Android源码的编译运行只支持Linux和Mac系统,至于Windows系统只能绕道了,或是在虚拟机上安装Linu...

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

本文介绍Ubuntu环境下Android源码下载及编译方法,Android源码是什么?Android源码就是指Android平台和软件源码,不单指Linux内核Kernel,我们常说的Linux Ke...

如何编译Android内核源码

工作环境及所需软件包 系统环境:Redhat Linux 9.0以上版本 交叉编译器:GNU Toolchain for ARM Processors 下载地址:http://www.codeso...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)