:Linux环境构筑
1) Linux版本
Ubuntu 9.10
可通过[cat /etc/issue]查看
2) 安装git包
首先下载git包
wget http://www.kernel.org/pub/software/scm/git/git-1.6.0.2.tar.gz
解压:
tar xvzf git-1.6.0.2.tar.gz
Build git:
$ cd git-1.6.0.2
$ ./configure --prefix=/usr/bin
$ make
可能会出现"zlib.h No such file or directory",“rand.h No such file or directory”的错误,说明系统缺少该文件,
zlib.h 包含在 zlibg1-dev中,openssl/rand.h 包含在 libssl-dev中,所以安装对应文件
$ sudo apt-get install zlib1g-dev libssl-dev
$ make
$ sudo make install
安装过程中,使用apt-get时,可能会出现package找不到的错误提示,原因是配置链接不对,可通过如下方法修改
$sudo gedit /etc/apt/sources.list
将sources.list中的内容替换为如下内容
deb http://mirrors.163.com/ubuntu/ karmic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ karmic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ karmic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ karmic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ karmic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic-backports main restricted universe multiverse
deb http://run.hit.edu.cn/ubuntu/ jaunty main restricted universe multiverse
deb-src http://run.hit.edu.cn/ubuntu/ jaunty main restricted universe multiverse
deb http://run.hit.edu.cn/ubuntu/ jaunty-updates main restricted universe multiverse
deb-src http://run.hit.edu.cn/ubuntu/ jaunty-updates main restricted universe multiverse
deb http://run.hit.edu.cn/ubuntu/ jaunty-backports main restricted universe multiverse
deb-src http://run.hit.edu.cn/ubuntu/ jaunty-backports main restricted universe multiverse
deb http://run.hit.edu.cn/ubuntu/ jaunty-security main restricted universe multiverse
deb-src http://run.hit.edu.cn/ubuntu/ jaunty-security main restricted universe multivers
替换后,文件保存,执行
$sudo apt-get update
然后再重新执行先前出错的命令
3) repo安装
$curl http://android.git.kernel.org/repo > /root/bin/repo
$ cd /root/bin
$ chmod +x repo (可执行权限添加)
4) 安装编译所需的库文件
$ 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 sun-java6-jdk
这里一下安装了很多库文件,安装过程中,如果有的库文件找不到,可先剔除,待其他安装好后再进行调查和安装,库找不到一般是source.list文件中没有对应的链接
:源码下载
1) 初始化代码仓库:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
该步执行后可能会出错repo error,原因是公司的局域网ISP把Git的端口9418封
掉了,可以将命令改为
$ repo init -u http://android.git.kernel.org/platform/manifest.git
重新执行,执行完后需修改.repo文件
$ gedit ./repo/repo/repo
将里面的
REPO_URL='git://android.git.kernel.org/tools/repo.git' 改成
REPO_URL='http://android.git.kernel.org/tools/repo.git'
接着修改.repo/manifests/default.xml文件
$ gedit ./repo/manifests/default.xml
同样将
fetch="git://android.git.kernel.org/" 改成
fetch=http://android.git.kernel.org/
注:repo init -u git://android.git.kernel.org/platform/manifest.git是默认下载最新版
的源码,如果需要指定版本,可以用
(Android 1.5, 1.6, 2.0,2.1 的代号分别为 Cupcake,Donut ,Éclair, Flan)
repo init -u git://android.git.kernel.org/platform/manifest.git -b Flan
2) 获取代码:
$ repo sync
这个过程的时间可能很长,中间如果出错了,可以重复进行,直到下好为止,一般需要4个小时以上。
:源码编译
1) 源码下好后就可直接编译
$make
但是马上会报错,提示2.2版源码只能在64位系统上运行,要对付他,得修改如下文件
a) build/ core/main.mk(73行左右)
ifneq (64,$(findstring 64,$(build_arch)))改成
ifneq (i686,$(findstring i686,$(build_arch)))
b) external/clearsilver/ cgi/Android.mk
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
改成
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32
c) external/clearsilver/ cs/Android.mk
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
改成
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32
d) external/clearsilver/ java-jni/Android.mk
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
改成
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32
e) external/clearsilver/util/Android.mk
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
改成
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32
修改完成后,再执行make命令,就不会出错
2) 模拟器运行
编译完成后,模拟器emulator在/out/host/linux-x86/bin 下,ramdisk.img,system.img和userdata.img则在/out/target/product /generic
运行
$ out/host/linux-x86/bin/
$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img
至此,模拟器就可以正确运行了。
:SDK编译
在源码根目录下,执行
$make PRODUCT-sdk-sdk
即可,编译好的sdk就可以拿来使用,路径out/host/linux-x86/sdk
直接用make sdk编译的sdk无法使用
编译