32位Ubuntu 10.10下android2.3.7源码下载及编译
1、我是在vmware下安装ubuntu10.10的,这个网上资料很多,不多说了。我给ubuntu分了30g硬盘和1g内存
2、检查一下包是否安装:
Python2.4-2.7
Git1.5.4或更高版本
没有话可以sudoapt-getinstall..安装一下
JDK6因为是编译android2.3以上,如果编译2.2以下需要JDK5
其他需要安装的包:
我安装了如下包:官网上那是64位需要安装的包,我是32位的有些不一样。
$ sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev x11proto-core-dev libx11-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils
3、下面开始下载源码
首先安装repo(是一个便于git管理的工具)
root@ubuntu:/# mkdir work_dir root@ubuntu:/# cd work_dir root@ubuntu:/# mkdir bin root@ubuntu:/# PATH=~/bin:$PATH root@ubuntu:/# curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > /work_dir/bin/repo root@ubuntu:/# chmod a+x /work_dir/bin/repo
初始化repoclient
root@ubuntu:/# mdkir android2.3.7_r1 root@ubuntu:/# cd android2.3.7_r1
初始化repo,我是使用的下面的地址,使用官网地址时出现了网络错误
$ repo init -u http://android.googlesource.com/platform/manifest.git -b android-2.3.7_r1
-b后面可以加你想要下载的源码分支
按照提示输入用户名和邮箱。
接着
$ repo sync
开始同步源码,根据你的网速,持续很长时间。
还有一步验证gittags可参照官网。下完后就可以在刚才创建的android2.3.7文件夹下看见已下载的源码。
4、开始编译
初始化:
$ source build/envsetup.sh $ lunch full-eng
上面代表编译的一个target,full是针对emulator编译全部包括app、输入法等,eng是指针对开发者编译,有最高权限。具体可参见官网。
接着就可以编译了,在源码目录下直接make就行,需要一段时间。
$make
网上说,32位系统的Ubuntu编译前要修改下文件,如下,但我编译时不需要,不知道原因
./external/clearsilver/cgi/Android.mk
./external/clearsilver/java-jni/Android.mk
./external/clearsilver/util/Android.mk
./external/clearsilver/cs/Android.mk
四个文件中的
LOCAL_CFLAGS+=-m64
LOCAL_LDFLAGS+=-m64
注释掉,或者将“64”换成“32”
LOCAL_CFLAGS+=-m32
LOCAL_LDFLAGS+=-m32
然后,将./build/core/main.mk中的
ifneq(64,$(findstring64,$(build_arch)))
改为:
ifneq(i686,$(findstringi686,$(build_arch)))
至此编译完毕。
make编译的并不是所有内容,不包含内核和SDK。
映像生成在out/target/product/generic下:android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中,ramdisk.img是一个分区映像文件,在kernel启动时,ramdisk被用来调用init,以及把真正的rootfilesystemmount起来。system.img包括了主要系统,系统app等,会被挂载到/下,可对应查看./system该目录,可以发现在其下app/下有一些系统自带的应用程序。userdata.img包括了一些用户数据,被挂载到/data下,对应可查看./data/目录,emulator加载这3个映像文件。
5、编译SDK
编译SDK可以得到与源码同步的SDK,还会生成一些tools,在源码根目录下:
$sudomakePRODUCT-sdk-sdk
编译生成的SDK在out/host/linux-x86/SDK下。之后如果在ubuntu下使用eclipse进行开发,可以使用你编译的SDK。
下面就在模拟器中运行镜像
切换到编译生成的SDK所在目录
$cd/work_dir/android2.3.7_r1/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools
使用-system-data-ramdisk加载编译好的img,要加载自己编译的kernel的话可以再加-kernel选项,启动模拟器
-system/work_dir/android2.3.7/out/target/product/generic/system.img
-data/work_dir/android2.3.7/out/target/product/generic/userdata.img
-ramdisk/work_dir/android2.3.7/out/target/product/generic/ramdisk.img