- 浏览: 81610 次
- 性别:
- 来自: 青岛
-
文章分类
最新评论
-
bovxiu2:
要是能有 系列性的教程 对于新手的我 很有帮助 楼主也可以温故 ...
Struts、Ajax、Restful、Web Service 狂想曲框架实现篇(一) -
bovxiu2:
看的迷迷糊糊的 我要学的太多了。 希望楼主能坚持 对于菜鸟 ...
Web Service 、WS-Security、Java和.net的互通(一) -
ftp51423121:
2010-06-04 15:52:31 有远见~
为什么说Android令人沮丧 -
wanjingchang:
太好了。珍藏起来
精品Android源码 -
huahuademama:
应该很给力/
精品Android源码
/** 本次编译过程主要参考官方文档(http://source.android.com/download
)和网上相关资料(如http://blog.csdn.net/liaoshengjiong/archive/2009/03/04/3957749.aspx
)
编译环境:Ubuntu8.10
1、安装一些环境 安装java环境 注:官方文档说如果用sun-java6-jdk可出问题,得要用sun-java5-jdk。经测试发现,如果仅
仅make(make不包括 make sdk),用sun-java6-jdk是没有问题的。而make sdk,就会有问题,严格来说是在make
doc出问题,它需要的javadoc版本为1.5。 2、设置环境变量 #java 程序开发/运行的一些环境变量 最后,同步这些变化: 3、安装repo(用来更新android源码) 4、下载 android源码并更新之 repo sync(更新很慢,用了3个小时)
5、编译android源码,并得到~/project/android/cupcake/out 目录 6、在模拟器上运行编译好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下 增加环境变量 最后,同步这些变化: emulator -image system.img -data userdata.img -ramdisk ramdisk.img 7、编译linux kernel 8、编译模块 9、编译SDK 1)修改/frameworks/base/include/utils/Asset.h 2)编译ADT。 3)执行make sdk。 4)关于环境变量、android工具的选择 5)安装、配置ADT 6)创建Android Virtual Device #############################################
环境:
--Ubuntu10.04 (X86) + android2.2 + JDK1.6
注意:
官方声明,32位系统下JDK必须用1.5---这是因为编译android api docs 需要1.5。要用JDK1.6必须用64位系统---为什么是64目前不得而知。要是想一次成功,最好还是按照官方说的用JDK1.5,这样的话基本没什么大问题。
1)安装必要的软件环境
注意:
1.官方文档说如果用sun-java6-jdk会出问题,得要用sun-java5- jdk。
2.经测试发现,如果仅仅make(make不包括make
sdk),用sun-java6-jdk是没有问题的。而make sdk,就会有问题,严格来说是在make
doc出问题,它需要的javadoc版本为1.5。因此,我们安装完sun-java6-jdk后最好再安装sun-java5-jdk,或者只安装
sun-java5-jdk。这里sun-java6-
jdk和sun-java5-jdk都安装,并只修改javadoc.1.gz和javadoc。因为只有这两个是make
sdk用到的。这样的话,除了javadoc工具是用1.5版本,其它均用1.6版本:
当碰到JDK1.6在32位系统下的检查问题时,可以通过一下方法解决
修改下列文件:
把下面脚本中的ifneq
改为ifeq
可暂时规避问题
2)设置环境变量
3)安装repo(用来更新android源码)
4)初始化repo
5)同步源代码
6)编译android源码,并得到~/android/out目录
7)在模拟器上运行编译好的android emulator在~/android/out/host/linux-x86/bin 下,
ramdisk.img,system.img和userdata.img则在~/android/out/target/product /generic下
最后,同步这些变化:
8)编译模块
9)编译SDK a)(这一步不一定需要,看自己的配置)修改/frameworks/base/include/utils/Asset.h b)编译ADT。 c)执行make sdk。
d)关于环境变量、android工具的选择 e)安装、配置ADT f)创建Android Virtual Device
10)编译linux内核映像 b)设定环境变量
c)获得合适的内核源代码
d)设定交叉编译参数
e)编译内核映像
f)测试生成的内核映像
==========================================================
最后:在编译的过程中有可能出现各种错误,可以google找一下,一般的错误都能找到,预祝大家成功,OK收工~
Git 是 Linux Torvalds 为了帮助管理 Linux
内核开发而开发的一个开放源码的分布式版本控制软件,它不同于Subversion、CVS这样的集中式版本控制系统。在集中式版本控制系统中只有一个仓
库(repository),许多个工作目录(working copy),而像Git这样的分布式版本控制系统中(其他主要的分布式版本控制系统还有
BitKeeper
、Mercurial
、GNU Arch
、Bazaar
、Darcs
、SVK
、
Monotone
等),每一个工作目录都包含一个完整仓库,它们可以支持离线工作,本地提交可以稍后提交到服务器上。分布式系统理论上也比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响
。
因为Android是由kernel、Dalvik、Bionic、prebuilt、build等多个Git项目组成,所以Android项目编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库,使得Git的使用更加简单。
这几天William为了拿Android最新的sourcecode,学习了一下git和repo的一些基本操作,整理了一个如何取得Android代码的How-To,今天把他贴上来。
1、Git的安装
在Ubuntu 8.04上安装git只要设定了正确的更新源,然后使用apt-get就可以了,有什么依赖问题,就让它自己解决吧。其中cURL是一个利用URL语法在命令行下工作的文件传输工具,会在后面安装Repo的时候用到。
sudo apt-get install git-core curl
2、安装Repo
首先确保在当前用户的主目录下创建一个/bin目录(如果没有的话),然后把它(~/bin)加到PATH环境变量中
接下来通过cURL来下载Repo脚本,保存到~/bin/repo文件中
curl http://android.git.kernel.org/repo >~/bin/repo
别忘了给repo可执行权限
chmod a+x ~/bin/repo
3、初始化版本库
如果是想把Android当前主线上最新版本的所有的sourcecode拿下来,我们需要repo的帮助。
先建立一个目录,比如~/android,进去以后用repo init命令即可。
repo init -u git://android.git.kernel.org/platform/manifest.git
这个过程会持续很长的时间(至少可以好好睡一觉),具体要多少时间就取决于网络条件了
最后会看到 repo initialized in /android这样的提示,就说明本地的版本库已经初始化完毕,并且包含了当前最新的sourcecode。
如果想拿某个branch而不是主线上的代码,我们需要用-b参数制定branch名字,比如:
repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
另一种情况是,我们只需要某一个project的代码,比如kernel/common,就不需要repo了,直接用Git即可。
git clone git://android.git.kernel.org/kernel/common.git
这也需要不少的时间,因为它会把整个Linux Kernel的代码复制下来。
如果需要某个branch的代码,用git checkout即可。比如我们刚刚拿了kernel/common.get的代码,那就先进入到common目录,然后用下面的命令:
git checkout origin/android-goldfish-2.6.27 -b goldfish
这样我们就在本地建立了一个名为goldfish的android-goldfish-2.6.27分支,代码则已经与android-goldgish-2.6.27同步。我们可以通过git branch来列出本地的所有分支。
4、同步版本库
使用repo sync
命令,我们把整个Android代码树做同步到本地,同样,我们可以用类似
repo sync project1 project2 …
这样的命令来同步某几个项目
如果是同步Android中的单个项目,只要在项目目录下执行简单的
git pull
即可。
5、通过GitWeb下载代码
另外,如果只是需要主线上某个项目的代码,也可以通过
GitWeb
下载,在shortlog利用关键字来搜索特定的版本,或者找几个比较新的tag来下载还是很容易的。Git最初是为Linux内核开发而设计,所以对其他平台的支持并不好,尤其是Windows平台,必须要有Cygwin才可以。现在,得益于msysgit
项目,我们已经可以不需要Cygwin而使用Git了。另外,Git Extensions
是一个非常好用的Windows Shell扩展,它能与资源管理器紧密集成,甚至提供了Visual Studio插件。它的官方网站上有一分不错的说明文档
,感兴趣的朋友可以看一看。至于Git的参考文档,我推荐Git Magic
,这里还有一个Git Magic的中文版
。
########################################################
版本:1.0
日期:2009-03-18
作者:HKjinzhao
备注:初始版本
*/
/**
版本:1.1
日期:2009-03-27
作者:HKjinzhao
备注:增加make sdk,修改一些内容
*/
sudo apt-get install build-essential
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libc6-dev
sudo apt-get install patch
sudo apt-get install texinfo
sudo apt-get install libncurses-dev
sudo apt-get install git-core gnupg
sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
sudo apt-get install ncurses-dev
sudo apt-get install zlib1g-dev
sudo apt-get install valgrind
sudo apt-get install python2.5
sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts sun-java6-jdk
因此,我们安装完sun-java6-jdk后最好再安装sun-java5-jdk,或者
只安装sun-java5-jdk。这里sun-java6-
jdk和sun-java5-jdk都安装,并只修改javadoc.1.gz和javadoc。因为只有这两个是make
sdk用到的。这样的话,除了javadoc工具是用1.5版本,其它均用1.6版本:
sudo apt-get install sun-java5-jdk
修改javadoc的link
cd /etc/alternatives
sudo rm javadoc.1.gz
sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz
sudo rm javadoc
sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc
vim ~/.bashrc
在.bashrc中新增或整合PATH变量,如下
JAVA_HOME=/usr/lib/jvm/java-6-sun
JRE_HOME=${JAVA_HOME}/jre
export ANDROID_JAVA_HOME=$JAVA_HOME
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME;
export JRE_HOME;
export CLASSPATH;
HOME_BIN=~/bin/
export PATH=${PATH}:${JAVA_PATH}:${JRE_PATH}:${HOME_BIN};
#echo $PATH;
source ~/.bashrc
创建~/bin目录,用来存放repo程序,如下:
$ cd ~
$ mkdir bin
并加到环境变量PATH中,在第2步中已经加入
下载repo脚本并使其可执行:
$ curl http://android.git.kernel.org/repo
>~/bin/repo
$ chmod a+x ~/bin/repo
建议不要用repo来下载(android源码超过1G,非常慢),直接在网上下载http://www.androidin.com/bbs/pub/cupcake.tar.gz
。而且解压出来的 cupcake下也有.repo文件夹,可以通过repo sync来更新cupcake代码:
tar -xvf cupcake.tar.gz
进入android源码目录:
make
这一过程很久(2个多小时)
cd ~/project/android/cupcake/out/host/linux-x86/bin
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
最后进入android桌面,就说明成功了。
out/host/linux-x86/bin下生成许多有用工具(包括android SDK/tools的所有工具),因此,可以把eclipse中android SDK的路径指定到out/host/linux-x86/bin进行开发
直接make android源码时,并没有make linux kernel。因此是在运行模拟器,所以不用编译 linux kernel。如果要移值android,或增删驱动,则需要编译 linux kernel
linux kernel的编译将在以后的文章中介绍。
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来编译指定目录的模块,如编译联系人:
mmm packages/apps/Contacts/
编完之后生成两个文件:
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/ Contacts.apk
可以使用make snod重新生成system.img
再运行模拟器
直接执行make是不包括make sdk的。make sdk用来生成SDK,这样,我们就可以用与源码同步的SDK来开发 android了。
‘UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024’ 改为 ‘UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024’
原因是Eclipse编译工程需要大于1.3M的buffer
注意,我们是先执行2),再执行3)。因为在执行./build_server.sh时,会把生成的SDK清除了。
用上了新的源码,adt这个调试工具也得自己来生成,步骤如下:
进入cupcake源码的development/tools/eclipse/scripts目录,执行:
export ECLIPSE_HOME=你的eclipse路径
./build_server.sh 你想放ADT的路径
注意,这里需要的javadoc版本为1.5,所以你需要在步骤1中同时安装sun-java5-jdk
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移出来
目前的android工具有:
A、我们从网上下载的SDK( tools下有许多android工具,lib/images下有img映像)
B、我们用make sdk编译出来的SDK( tools下也有许多android工具,lib/images下有img映像)
C、我们用make编译出来的out目录( tools下也有许多android工具,lib/images下有img映像)
那么我们应该用那些工具和img呢?
首先,我们不会用A选项的工具和img,因为一般来说它比较旧,也源码不同步。测试发现,如果使用B选项的工具和img,android模拟器窗口变小(可能是skin加载不了),而用C选项的工具和img则不会有此问题。
有
些android工具依赖android.jar(比如android),因此,我们在eclipse中使用B选项的工具(SDK),使用C选项的
img。其实,从emulator
-help-build-images也可以看出,ANDROID_PRODUCT_OUT是指向C选项的img目录的
不过,除了用A选项的工具和img,用B或C的模拟器都不能加载sdcard,原因还不清楚。
安装、配置ADT请参考官方文档
编译出来的SDK是没有AVD(Android Virtual Device)的,我们可以通过android工具查看:
android list
输出为:
Available Android targets:
[1] Android 1.5
API level: 3
Skins: HVGA-P, QVGA-L, HVGA-L, HVGA (default), QVGA-P
Available Android Virtual Devices:
表明没有AVD。如果没有AVD,eclipse编译工程时会出错(Failed to find a AVD compatible with target 'Android 1.5'. Launch aborted.)
创建AVD:
android create avd -t 1 -c ~/sdcard.img -n myavd
可以android –help来查看上面命令选项的用法。创建中有一些选项,默认就行了
再执行android list,可以看到AVD存放的位置
以后每次运行emulator都要加-avd myavd或@myavd选项,这里eclipse才会在你打开的emulator中调试程序
注意:
这样,SDK和ADT就生成了,就按照官方文档把他们整合到Eclipse,这里不再细说了。
建个android的新工程,试试你自己编译的sdk。
1
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.
6
-dev build-essential zip curl libncurses5-dev zlib1g-dev
官方推荐的就是上面这些,如果在编译过程中发现某些命令找不到,就apt-get它。可能需要的包还有:
1
$ sudo apt-get install make
2
$ sudo apt-get install gcc
3
$ sudo apt-get install g++
4
$ sudo apt-get install libc6-dev
5
$ sudo apt-get install patch
6
$ sudo apt-get install texinfo
7
$ sudo apt-get install zlib1g-dev
8
$ sudo apt-get install valgrind
9
$ sudo apt-get install python2.
5
(或者更高版本)
1
$ sudo apt-get install sun-java6-jdk
修改javadoc的link
1
$ cd /etc/alternatives
2
$ sudo rm javadoc.
1
.gz
3
$ sudo ln -s /usr/lib/jvm/java-
1.5
.
0
-sun/man/man1/javadoc.
1
.gz javadoc.
1
.gz
4
$ sudo rm javadoc
5
$ sudo ln -s /usr/lib/jvm/java-
1.5
.
0
-sun/bin/javadoc javadoc
1
external/clearsilver/cgi/Android.mk,
2
3
external/clearsilver/java-jni/Android.mk,
4
5
external/clearsilver/util/Android.mk,
6
7
external/clearsilver/cs/Android.mk四个文件。
1
# This forces a
64
-bit build
for
Java6
2
ifneq ($(filter
1.6
%,$(java_version)),)
3
LOCAL_CFLAGS += -m64
4
LOCAL_LDFLAGS += -m64
5
endif
1
$ gvim ~/.bashrc
在.bashrc中新增或整合PATH变量,如下:
01
#java 程序开发/运行的一些环境变量
02
JAVA_HOME=/usr/lib/jvm/java-
6
-sun
03
JRE_HOME=${JAVA_HOME}/jre
04
export ANDROID_JAVA_HOME=$JAVA_HOME
05
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
06
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
07
export JAVA_HOME;
08
export JRE_HOME;
09
export CLASSPATH;
10
HOME_BIN=~/bin/
11
export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
保存后,同步更新:
1
source ~/.bashrc
创建~/bin目录,用来存放repo程序,如下:
1
$ cd ~
2
$ mkdir bin
并加到环境变量PATH中,在第2步中已经加入
下载repo脚本并使其可执行:
1
$ curl http:
//android.git.kernel.org/repo >~/bin/repo
2
$ chmod a+x ~/bin/repo
repo是android对git的一个封装,简化了一些git的操作。
创建工程目录:
1
$ mkdir android
2
$ cd android
repo初始化
1
$ repo init -u git:
//android.git.kernel.org/platform/manifest.git
在此过程中需要输入名字和email地址。初始化成功后,会显示:
repo initialized in /android
在~/android下会有一个.repo的隐藏目录。
1
$ repo sync
这一步要很久很久
1
$ cd ~/andoird
2
$ make
这一过程很久,我是看了部一个多小时的电影之后编译完成的,具体看电脑配置了~
编译好android之后,
1
$ cd ~/android/out/host/linux-x86/bin
增加环境变量
1
$ gvim ~/.bashrc
在.bashrc中新增环境变量,如下
1
#java 程序开发/运行的一些环境变量
2
export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic
3
ANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/bin
4
export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};
1
$ source ~/.bashrc
2
$ cd ~/android/out/target/product/generic
3
$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img
最后进入android桌面,就说明成功了。
android中的一个应用程序可以单独编译,编译后要重新生成system.img
在源码目录下执行
1
$ . 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来编译指定目录的模块,如编译联系人:
1
$ mmm packages/apps/Contacts/
编完之后生成两个文件:
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/Contacts.apk
可以使用
1
$ make snod
重新生成system.img,再运行模拟器
直接执行make是不包括make sdk的。make sdk用来生成SDK,这样,我们就可以用与源码同步的SDK来开发android了。
‘UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024’ 改为 ‘UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024’
原因是eclipse编译工程需要大于1.3M的buffer;
本人没有进行这步;
注意,这里需要的javadoc版本为1.5,所以你需要在步骤1中同时安装sun-java5-jdk
1
$ 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移出来
此后的应用开发,就在该SDK上进行,所以把7)对于~/.bashrc
的修改注释掉,增加如下一行:
1
export PATH=${PATH}:~/android/out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86/tools
注意要把xxx换成真实的路径;
目前的android工具有:
A、我们从网上下载的SDK,如果你下载过的话( tools下有许多android工具,lib/images下有img映像)
B、我们用make sdk编译出来的SDK( tools下也有许多android工具,lib/images下有img映像)
C、我们用make编译出来的out目录( tools下也有许多android工具,lib/images下有img映像)
那么我们应该用那些工具和img呢?
首
先,我们一般不会用A选项的工具和img,因为一般来说它比较旧,也源码不同步。其次,也不会用C选项的工具和img,因为这些工具和img没有经过
SDK的归类处理,会有工具和配置找不到的情况;事实上,make
sdk产生的很多工具和img,在make编译出来out目录的时候,已经编译产生了,make sdk只是做了copy而已。
略过;
编译出来的SDK是没有AVD(Android Virtual Device)的,我们可以通过android工具查看:
1
$ android list
创建AVD:
1
$ android create avd -t
1
-n myavd
可以android –help来查看上面命令选项的用法。创建中有一些选项,默认就行了
再执行android list,可以看到AVD存放的位置
以后每次运行emulator都要加-avd myavd或@myavd选项:
1
$ emulator -avd myavd
a)准备交叉编译工具链
android代码树中有一个prebuilt项目,包含了我们编译内核所需的交叉编译工具。
1
$ gvim ~/.bashrc
增加如下两行:
1
export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-
4.4
.
0
/bin
2
export ARCH=arm
保存后,同步变化:
1
$ source ~/.bashrc
1
$ cd ~/android
获得内核源代码仓库
1
$ git clone git:
//android.git.kernel.org/kernel/common.git kernel
2
$ cd kernel
3
$ git branch
显示
* android-2.6.27
说明你现在在android-2.6.27这个分支上,也是kernel/common.git的默认主分支。
显示所有head分支:
1
$ git branch -a
显示
* android-2.6.27
remotes/origin/HEAD -> origin/android-2.6.27
remotes/origin/android-2.6.25
remotes/origin/android-2.6.27
remotes/origin/android-2.6.29
remotes/origin/android-goldfish-2.6.27
remotes/origin/android-goldfish-2.6.29
我们选取最新的android-goldfish-2.6.29,其中goldfish是android的模拟器模拟的CPU。
1
$ git checkout -b android-goldfish-
2.6
.
29
origin/android-goldfish-
2.6
.
29
2
$ git branch
显示
android-2.6.27
* android-goldfish-2.6.29
我们已经工作在android-goldfish-2.6.29分支上了。
打开kernel目录下的Makefile文件,把CROSS_COMPILE指向刚才下载的prebuilt中的arm-eabi编译器
CROSS_COMPILE ?= arm-eabi-
把
1
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
2
$(call ld-option, -Wl$(comma)–build-id,))
这一行注释掉,并且添加一个空的LDFLAGS_BUILD_ID定义,如下:
1
LDFLAGS_BUILD_ID =
1
$ cd ~/android/kernel
2
$ make goldfish_defconfig
3
$ make
1
$ emulator -avd myavd -kernel ~/android/kernel/arch/arm/boot/zImage
发表评论
-
3gp文件格式研究 (转windcao的专栏)
2011-08-17 10:01 1001序言 06我开始做3gp文件的播放器,但是关于3gp ... -
android视频采集客户端的资料整理
2011-08-17 09:58 1006Android 的视频编码 H263(3gp)的文件传输到 ... -
UDP数据包大小问题
2011-08-16 11:03 2591在进行UDP编程的时候,我们最容易想到的问题就是,一次发送 ... -
Android消息处理机制②
2011-08-15 13:58 830内容回顾: (1)UI thread 通常就是mai ... -
Android消息处理机制①
2011-08-15 13:58 655一、 角色描述 1.Looper: 一个线程可以产 ... -
android中的像素单位dp、px、pt、sp
2011-08-15 13:55 1016dp(dip): device independent pix ... -
google map APIKEY
2011-08-15 13:54 1083先找到keystore (解释:是一个密码保护的文件,用 ... -
Android开发必备和常用的代码素材
2011-08-13 15:58 814http://www.eoeandroid.com/threa ... -
android2.3源码下载编译全过程(附图及文档)修改版
2011-08-13 15:55 841http://www.eoeandroid.com/threa ... -
精品Android源码
2011-08-13 15:44 1201从零开始Android游戏编程 五子棋源码 Read RSS ... -
Android四大组件介绍
2011-07-26 22:38 1479Android组件 横看成岭侧成峰,远近高低各不同。 -- ... -
众多Android 开源项目推荐,给力工作给力学习
2011-04-19 09:22 1035转自:http://www.cnblogs.com ... -
Android平台下实现一个进程管理器
2011-04-12 15:34 750http://www.cnblogs.com/crazypeb ... -
没有被墙,可以正常访问的android网址
2010-11-28 21:34 856没有被墙,可以正常访问的android网址: http:// ...
相关推荐
在开始编译Android源码之前,首先需要确保获取完整的Android源代码。这一部分将详细介绍如何使用Git和Repo脚本完成这一任务。 ##### Git简介 Git是一种分布式版本控制系统,由Linux之父Linus Torvalds开发,旨在更...
### Ubuntu环境下编译Android源码及安装的知识点详解 #### 实验环境介绍 - **操作系统**: Ubuntu 10.04 - **Android版本**: 2.1 - **开发板**: ARM9 Mini6410 - **目标**: 在Ubuntu环境下编译Android 2.1源码并进行...
在不同操作系统下编译Android源码需要更改一些Android源码的配置项,脚本用于自动化更改配置项.zip 在不同操作系统下编译Android源码需要更改一些Android源码的配置项,脚本用于自动化更改配置项.zip 在不同操作系统...
### Mac 下编译 Android 源代码的关键步骤与注意事项 #### 一、磁盘分区 在 Mac 上编译 Android 源代码之前,首先要解决的一个问题是磁盘分区问题。这是因为 Mac 的默认文件系统(APFS 或 HFS+)通常设置为不区分...
Android 源码单独编译模块是指在 Android 源代码工程中编译指定的模块,而不需要重新编译整个 Android 系统。这种方法可以节省大量的时间和资源,因为编译整个 Android 系统需要漫长的等待时间。 在 Android 源代码...
本文档详细介绍了如何在Ubuntu 8.04环境下获取并编译Android源代码的全过程。从Git和Repo脚本的使用,到编译前的环境配置,再到具体的编译步骤,均给出了明确的操作指导。这对于希望深入学习Android系统底层原理的...
在 Android 源代码工程中,单独编译某个模块是一件很有必要的事情。尤其是在我们修改了某个模块或新增了自己的模块时,重新编译整个 Android 系统镜像 system.img 是非常耗时的。这时,我们可以使用 Android 提供的...
在 Ubuntu 环境中编译 Android 源码并运行 Emulator 2 需要经过多个步骤,包括安装环境、设置环境变量、安装 repo、下载 Android 源码、编译 Android 源码等。 一、安装环境 在 Ubuntu 中,需要安装一些基本的环境...
### Ubuntu系统中下载并编译Android源代码 #### 一、Ubuntu操作系统简介 Ubuntu是一款流行的开源操作系统,基于Linux内核,主要面向桌面用户。它的名字来源于非洲南部祖鲁语或豪萨语中的“ubuntu”一词,含义为...
`repo init`命令指定了源码仓库的位置,而`repo sync`则会下载所有必需的源代码。 #### 三、编译Android源码 完成了以上步骤之后,就可以开始编译Android源码了。具体的编译命令和选项取决于您的需求,例如是否...
### Ubuntu 10.04下编译Android源码技术文档 #### 一、环境准备与配置 在Ubuntu 10.04环境下编译Android源码是一项复杂但极具价值的任务。为了确保编译过程顺利进行,首先需要完成一系列准备工作。 1. **系统更新...
#### 一、获取 Android 源代码 **Git与集中式版本控制系统对比** - **Git**:由 Linux Torvalds 开发,是一种分布式版本控制系统。与 Subversion 和 CVS 这样的集中式版本控制系统不同,在 Git 中,每个开发者的...
总的来说,`.ipr`和`.iml`文件在Android P源码编译过程中起着关键作用,它们帮助开发者在Android Studio环境中高效地管理和编译大规模的源代码项目。通过理解这些文件的作用,开发者可以更流畅地进行源码级别的调试...
在Ubuntu 10.04环境下编译Android源码的过程是一项复杂的任务,涉及到多个步骤和技术。首先,要了解Git,这是一个分布式版本控制系统,由Linux Torvalds创建,用于管理Linux内核开发。与传统的集中式版本控制系统如...
【Ubuntu 10.04下编译Android源码实用指南】 在Ubuntu 10.04系统中编译Android源码是一项复杂的过程,需要掌握Git版本控制系统以及Android的Repo工具。Git是Linux Torvalds为管理Linux内核开发而创建的分布式版本...
在深入探讨如何编译Android独立源代码之前,我们先来了解下整个过程的基本框架。Android作为一个开源项目,其源代码包含了操作系统的核心部分以及一系列应用程序和服务。对于开发者而言,能够独立编译Android的某个...
#### 一、获取 Android 源代码 1. **Git 的介绍与安装**: - Git 是一种分布式版本控制系统,由 Linux Torvalds 为了更好地管理 Linux 内核开发而创建。 - **集中式版本控制系统**(如 Subversion 和 CVS)与 **...