您的位置:首页 > 移动开发 > Android开发

搭建Android环境

2009-06-29 15:12 211 查看
第一步:

首先安装Fedora操作系统和必要的基础环境,包括git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6
-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind g++ sun-javadb-javadoc。这些可以用Fedora的软件包管理器就可以安装了,建议不要自己下载源代码安装,可以免去环境变量的设置。

第二步:

下载源代码。

git是源码管理工具,但如果大家使用过的话,会觉得并不方便,git是一个个项目来下的,而android中包含了N多个子项目,所以得用一个脚本来一起来。我们用的是python写的repo程序。

$cd ~

$mkdir bin

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

$sudo chmod a+x ~/bin/repo

注:这些是将repo下载到根目录下的bin下,然后让repo有可执行权限。

$echo $PATH

注:查看一下~/bin目录在不在这个PATH里,因为我们要在其他目录位置执行这个repo程序,如果不在可以执行$sudo gedit
~/.bashrc 这是用文本编辑器打开配置工具,在里面加上export $PATH=$PATH:~/bin ,然后重启机器即可。

$mkdir mydroid

$cd mydroid

注:创建源码目录,可自己随便定。

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

注:这里是调协repo要下载源码的网址,设置成功后会看到一句:repo initialized in /mydroid,如果你使用的是vmware共享目录的话,这段命令会执行不成功,会报main.py里的一些错误,所以只能用虚拟机里面的空间。

$repo sync

注:同步源码。

完工,就慢慢等着下载吧,目前是android1.5版,源码大约1.9G。下载过程中可能看不到有文件出现,别急,git下载里是放到交换分区里的,等下载完后源码就全出现了。

下载后的主要目录如下:

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

--bionic --Android编译过程所需要的一些库

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

--build --最主要的一些makefile和编译配置文件

--dalvik --经过Google优化了的java虚拟机

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

--external --Android工程中引入的外部功能库

--frameworks --中间件部分

--hardware --和硬件有关的一些支持文件,包括wifi,电信模块等

--kernel --经过了优化和修改的linux内核

--packages --所有的上层应用包

--prebuild --Android编译工具所在目录

--system --一些系统级文件

第三步:

系统和开发工具编译

libs/surfaceflinger/SurfaceFlinger.cpp, 加入 limits.h 的引用

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.模拟器使用

export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic

cd out/host/linux-x86/bin

./emulator


进入~/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 –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下的文件权限就有问题,需要修改,否则生成的映像在模拟器中加载后,键盘等无法正常使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: