现在的位置: 首页 > 综合 > 正文

CUPCAKE 编译(转)

2013年01月20日 ⁄ 综合 ⁄ 共 8180字 ⁄ 字号 评论关闭


.PC

工作环境准备 


   
1.



Ubuntu

官方主页
www.ubuntn.com.cn


下载
Ubuntu8.04

桌面版,然后完全安装。

   
2.


打开
ubuntu

终端,输入
sudo
apt-get install


命令来通过
ubuntu

服务器在线安装需要使用的软件,这里不需要选    
择软件版本,

ubuntu

服务器会做自动的版本匹配。待安装的软件有
flex


bison


gperf


libsdl-
dev



libesd0-      
dev



libwxgtk2.6-dev


build-essential


python


valgrind


curl


git

。执行命令后使用

which

命令验证是否     
安装成功,注意,如果缺少部分软件,或者安装没有成功,编译通常都会遇到问题,无法完成。


   
3.



www.java.sun.com




JDK_1.5.0_18.bin

,在
ubuntu

终端中直接执行该程序,默认会被安装                    

/usr/JDK_1.5.0_18

路径下。在终端中输入
#java–version,

如果显示出
java

版本信息,说明
java

安装成功。

   


这里没有选择
ubuntu

的自动安装,原因主要是有时候下载速度很慢,而且安装过程有时候会出现问题,反正这样从    

SUN

的官网下载安装也很简单,呵呵。   


   
4


.使用
export

来设置环境变量:

   
#export JAVA_HOME=/usr/jdk1.5.0_18
    #export
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
   
#export PATH=$PATH:$JAVA_HOME/bin
   


由于因为其它工作需要的原因,这里我还安装了
1.6


JDK

,所以使用
export

的方式来动态改变环境变量,而没有直    
接写到

/etc/bash.bashrc

中,这个大家可以根据自己的具体情况来选择。

   
#export
PATH=/usr/local/git/bin:/usr/local/git/libexec/git-core:$PATH(



git

工具进行设置,否则无法正     
常使用

)
   



.

代码下载

   


这里的所有代码指定为
Android


cupcake

版本,更新日期为
2009


4


8

日,这个版本是
Android

一个相对比较新的     
版本。


   
1.


创建工作目录:

   
#mkdir /home/android
    #cd /home/android
   
#mkdir bin
    2


.下载安装
repo

版本管理工具:

   
#curl http://android.git.kernel.org/repo
> /home/android /bin/repo
    #cd bin
   
#chmod a+x repo
   


由于
Android

项目官方采用
repo

来做同步管理,所以这里只有使用
repo

才可以做代码同步。

   
3.


准备下载
Android



   
#cd /home/android
    #./bin/repo init -u
git://android.git.kernel.org/platform/manifest.git –cupcake
   


通常情况下会出现
error

提示(如果是以前没有创建过
repo

账户的话),这个错误可以忽略。最后的
-cupcake

就是     
为了下载

cupcake

版本,如果不加的话,下载的是
master

版本,
master

版本属于开发测试版本,很多功能还不稳定

   
4


.配置
repo

帐户:

   
#git config --global user.email "xxxxx@xxxxxxx
"
    #git config --global user.name
"xxxxxx"
   


邮箱地址填有效邮箱即可,我试过,其实这步跳过也没有问题。

   
5


.下载源码:

   
#repo sync
   


这个操作就是下载整个
Android

的源码到本地,具体花费时间和网速有关,
cupcake

版本源码大概
1.3G

左右。进        

/home/android/

可以看到
Android

的源码目录如下:

   
--repo  --


主要是同步管理所用到的一系列文件

   
--bionic  --Android


编译过程所需要的一些库

   
--bootable  --


负责启动和备份的一些文件

   
--build  --


最主要的一些
makefile

和编译配置文件

   
--dalvik  --


经过
Google

优化了的
java

虚拟机

   
--development  --


开发用的一些文件夹,包括模拟器和工具等

   
--external  --Android


工程中引入的外部功能库

   
--frameworks  --


中间件部分

   
--hardware  --


和硬件有关的一些支持文件,包括
wifi

,电信模块等

   
--kernel  --


经过了优化和修改的
linux

内核

   
--packages  --


所有的上层应用包

   
--prebuild  --Android


编译工具所在目录

   
--system  --


一些系统级文件

   



.

系统和开发工具编译

   
1.


系统编译

   
Android


文件系统由于已经自带了经过优化的交叉编译工具,并且为所有的源码都提供了经过验证的
makefile

,所     
以系统的整体编译相对简单,官方发布的版本中基本功能都已经包含进了

makefile

中,但是我下载的版本的中文      
的输入法没有被引入,这里做适当修改:


   
#cd /home/android/build/target/product/
    #gedit
generic.mk
   


打开这个文件后,在
PRODUCT_PACKAGES

中,加入
PinyinIME,

然后保存退出。这样在整体编译的时候就会把中文输入    
法也编译进

system

中了。

   


修改完成后:

   
#cd /home/android/
    #make
   


第一次进行整体编译,这个过程大概持续
2


3

小时,默认情况下,会在
/home/android/

目录下生成一个
out

文件夹     
,所有的编译生成物都在这一目录下。如果想更改生成文件的目录,请参考

/build/buildspec.mk.default

文件中     
的说明和选项,很简单,相信大家都能看懂。如果编译过程中出现问题,请自行检查上面

PC

工作环境准备部分中是    
否哪里 出了问题,就不要在论坛里反复问了,因为这样的问题应该是自己参考这个帖子后可以完全自己解决的。


   

    2.


开发工具的编译

   
Android


提供了完整的开发工具和交叉编译工具,这些都包含在了源码内,所以只要对源码正确编译,就可以获得     
丰富的开发工具,并且

Android

的移植工作也需要这些工具的支持。

   


编译
Android

开发工具的步奏如下:

   
#cd /home/android/
    #make sdk
   


如果出现无法正常编译的情况,请检查
JDK1.5.0_18

的环境变量配置是否成功。正常情况下最后在
/home/android/     


目录下会生长一个
out

文件夹。

   
#cd /out/host/linux-x86/sdk/
   


可以看到这里有了一个名叫
android-sdk_eng.root_linux-x86

的文件夹,这个文件夹基本包含了
Android

的模拟器     
和所有的开发调试工具。打开这个文件夹,可以看到这里主要由以下几部分组成:


   
--add-ones  --


需要增加的新工具路径

   
--docs  --


关于模拟器和各种开发工具的说明等

   
--platform  --


模拟器和开发工具需要的文件

   
--tools  --


模拟器和开发工具的应用程序

   



.

模拟器使用和文件系统提取

   
1.


模拟器使用

   


进入
~/android-sdk_eng.root_linux-x86/tools

目录下,这里有很多
Android

的工具,其中模拟器对应的应用程       
序是

emulator

。下面是正确使用模拟器的步奏:

   
#./android create avd –n NO1 –t 1
   


这个命令会进入创建
avd

的过程,按自己的需要做出一些选择后,名称为
NO1


avd

就创建成功了,以后可以通过这     
个创建的

avd

来使用模拟器。
1.4

之前的版本不需要这样创建,
1.5

版本后不正确创建是无法使用的。

   
#./android list avd
   


输入命令来检查创建是否成功
,

如果成功会列出来。

   
#./emulator./android create avd –n NO1 –t 1 –avd NO1
   


启动刚才创建的名为
NO1

的模拟器,使用的内核,文件系统等均使用默认的,即
~/android-sdk_eng.root_linux-      
x86/platform/


路径下的内核和文件系统。没什么问题的话,我们就可以看到
Android

操作系统的虚拟界面了。

   
2.


使用自己编译的系统

   
Android


可以运行在开发板上的文件系统的提取需要依靠模拟器,具体的操作步奏如下:

   
#cd /home/android/out/ android-sdk_eng.root_linux-x86/tools/
   
#./mksdcard –l 200M /home/sdcard.img
   


这里使用
mksdcard

开放工具在
/home

目录下建立一个
200M


sdcard.img

,用于模拟器中数据和外部数据的交互,虚     

SD

卡的大小不应该小于
100M

,否则在后期的文件系统打包过程中,有可能会有
SD

卡存储空间不够的问题。

   
#./android create avd –n cupcake –t –c /home/sdcard.img 1
   


创建一个名为
cupcake

的,附带有
sdcard

的虚拟设备。

   
#./emulator –avd cupcake –sysdir
/home/android/out/target/product/generic –data                    
/home/android/out/target/product/generic/userdata.img 
-ramdisk                    
/home/android/out/target/product/generic/ramdisk.img –kernel
/home/android/prebuild/android-           
arm/kernel/kernel-qemu
   


使用名为
cupcake

的虚拟设备启动模拟器,并规定系统,数据等的映象文件路径,模拟器内核采用                   

prebuild/android-arm/kernel/kernel-qemu

。当然也可以使用自己编译的内核镜像,关于如果编译内核的问题
会      在以后陆续发贴说明。


   


打开一个新的终端进行操作:

   
#cd /home/android/out/ android-sdk_eng.root_linux-x86/tools/
   
#./adb remount
   


这里使用
adb

工具的
remount

选项来使模拟器中的
system

目录权限改为可读写。

   
#./adb push tar /system/bin
   


这里使用
adb

工具的
push

指令将提前使用
busybox

做好的
tar

应用程序加入到模拟器的
/system/bin

目录下。关于        

busybox

的使用这里不作介绍,网上太多了,呵呵

   
#./adb shell
   


这里使用
adb

工具进入到模拟器的
shell

中。

   


进入到
Android

模拟器的
shell

中操作如下:

   
#tar xvf /sdcard/system.tar /system
    #tar xvf
/sdcard/userdata.tar /data
   


这里使用前面加入到模拟器中的
tar

应用程序来对
system


data

目录下所有内容进行打包,并存储到
sdcard

里。操     
作结束后,进入

sdcard

目录下查看是否有了
system.tar


userdata.tar

文件,如果有,则证明打包成功。          


   
#exit
   


退出
shell

,并关闭模拟器。

   
#mount –o loop sdcard.img /mnt
    #cd /mnt
   


这里将虚拟
SD

卡挂载在
/mnt

目录下,进入
/mnt

目录后,就可以将
system.tar


userdata.tar

拷贝出来,文件系统的    
提取完成。


   

   


经过测试,发现其实使用
android

提供的
mkyaffsimage

直接对
/out/target/product/generic/system

目录
进行打包     
,制作出

system.img

也完全可以使用,不过不知道
userdata.img

如何制作,希望有人可能指点。使用       

mkyaffs2image

制作文件系统映像时要注意的是一些配置文件的权限问题,比如
/system/usr/keylayout

下的文件      
权限就有问题,需要修改,否则生成的映像在模拟器中加载后,键盘等无法正常使用。


   


最后,要说的是,新加入
android

的朋友们遇到问题我个人建议最好不要立刻就问,毕竟是个
80

%以上都开源的系     
统,不妨自己尝试解决问题,到论坛逛逛,在网上搜索下,或者自己读下源码,都是一种提高。拿到的资源其实都    
是一样的,学到的东西,得到的锻炼却是不同的。

昏天暗地的花了两天时间
,

终于在
Fedora
8


上成功编译了
android
1.5,


和大家分享一下编译的经验
:)


准备编译环境

Fedora 8

已经包含了编译
android

时所需的大部分开发包
,


我们还需要安装
git


gperf.

开始终端
,

敲入下面的命令
:

$
yum install git-core






$
yum install gperf






Fedora 8

自带的
java

开发包是
JDK6,


而编译
nadroid

时需要
JDK5,

否则在
make
sdk


时会出现错误
.

可以从
sun




网站下载
jdk-1_5_0_18-linux-i586-rpm.bin

,



我下载到了
opt




目录下
.



在终端上敲入如下命令
:

$
cd /opt






$ chmod
a+x jdk-1_5_0_18-linux-i586-rpm.bin






$ ./jdk-1_5_0_18-linux-i586-rpm.bin





文件会在
/opt

下自动生成
jdk1.5.0_18

子目录
,

并解压
.

然后需要设置
JAVA

主目录
,

编辑
/etc/bashrc

文件
:

$ vi
/etc/bashrc






点击
insert


i


,

进入
insert

模式
,

在文件末尾添加

export
JAVA_HOME=/opt/jdk.1.5.0_18


export
PATH=$JAVA_HOME/bin:$PATH


export
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH


点击
esc,

进入命令模式
,

输入
":wq",

然后敲入
reboot

重新启动
.

启动后
,

开启终端
,

输入
"java
-version",


如果提示当前版本为

1.5.0_18,


则安装成功

.

二 下载源代码

先要下载
repo,

如果以
root

用户登陆
,

则可以将
repo

下载
/root/bin

目录下
(

也可以下载
/home/bin

目录下
,

但要将目

录加入到
PATH


):

$ curl
http://android.git.kernel.org/repo > /root/bin/repo






$ chmod
a+x /root/bin/repo






然后在
home

下建立
mydroid

文件夹
,

当然可以在其他你喜欢的目录下建立
:

$ cd
/home






$ mkdir
mydroid






$ cd
mydroid






输入以下命令
:

$ repo
init -u git://android.git.kernel.org/platform/manifest.git






不出意外的话
,

完成后应该显示
"repo
initialized in /mydroid".

最后输入
"repo
sync"


开始下载源代码
.

工程很大
,

只是下载代码的话需要留出
2G

以上的空间
,

如果还要编译那就需要留出
6G

以上的空间
.

三 编译

下载完成后进入源代码目录
,

开始编译
,

如下
:

$ cd
/home/mydroid






$ make





完成后会生成
system.img

等文件
.

由于
android1.5

版本
SDK

的目录结构有所变化
,

所以
ADT0.8.0

不能再使用了
,

我们需要自己编译
ADT:

$ ./development/tools/eclipse/scripts/build_server.sh
/home






"/home"




是编译好

ADT




后的输出目录

,




可以指定其他你喜欢的目录

,

在这个过程中可能会自动下载

eclipse,




貌似是由于没有设定

ECLIPSE_HOME




环境变量的原因

,




不过没有细究

:). 


最后需要
生成



linux






SDK,



如下


:


$ make
sdk






成功后
,

会在
./out/host/linux-x86

下生成
sdk

文件夹
,

其中包含了我们需要的
SDK.

注意将
SDK

目录加入到
PATH


,

修改
/etc/bashrc,

加入

export
PATH=/home/mydroid/out/host/linux-x86sdk/android-sdk_eng.root_linux-x86/tools:$PATH



linux

上运行

需要卸载
eclipse

上原来的
ADT0.8.0(

如何卸载就不说了
,

不过要注意卸载干净
,ADT
Editor


也一并卸载
).

启动
android1.5


emulator

时需要
avd

文件
,


先输入
"android
list targets"


取得
target
ID,


例如为
1,

然后
,

$ android
create avd -n my_avd -t 1






创建
avd

文件后
,

即可启动
emulator,

$ emulator
-avd my_avd






启动很慢
,

要耐心等待
.

五 生成
window


SDK

需要将
mydroid




目录和编译的
ADT,




复制到
windows





,




我是在
window
xp




下使用
explore2fs




读取
linux




分区进行的

复制
.

然后安装

cygwin,


注意默认的文本类型要设置为

DOS/text,


这些开发包

autoconf,
bison, curl, flex, gcc,

g++,git,gnupg,
make, mingw-zlib, python, zip, unzip


都要选上

,


不要选择

readline.

打开
development/build/tools/make_windows_sdk.sh

文件
,

找到
"SDK_NUMBER=`echo
$filename | sed -n 's/^.*_/([^_./]/+/)_[^_.]*/..*$//1/p'`",


修改为

#SDK_NUMBER=`echo
$filename | sed -n 's/^.*_/([^_./]/+/)_[^_.]*/..*$//1/p'`


 SDK_NUMBER=1.5


 然后在
cygwin

中输入以下命令
:

 
$ cd mydroid






 $ mkdir
-p out/host/windows-x86/sdk
 $ development/ build /
tools / make_windows_sdk.sh  out / host / linux - x86 / sdk /
android-sdk_eng.root_linux-x86.zip  out / host / windows - x86 /
sdk



同样在
eclipse

中安装我们编译的
ADT,

指定
sdk

目录
.

启动
emulator

之前还要生成
avd

文件
.

六 我上传了
,
可以下载

我将我编译的版本
android1.5




压缩后上传到了
rayfile





,




大家可以下载
.


文件中的

android-eclipse-v200904252140.zip


就是编译好的

ADT.

抱歉!评论已关闭.