Android学习笔记5

上次的问题果然是jdk的问题。

我以前自己有一个误解,以为cupcake里面包含了kernel,其实没有包括,这只是一个sdk而已,

里面可能有kernel的已经编译好的印象,检查你编写的application,是否正确。

就是在模拟器中,把该kernel的印象和文件系统(包括你写的application)运行起来,

从而达到检测的目的。(不知道这样的理解对不对?)


ECLAIR(目前的master,主线)目录:

bionic    cts          device      hardware  out       sdk
bootable  dalvik       external    Makefile  packages  system
build     development  frameworks  ndk       prebuilt  vendor


cupcake的目录:

bionic    build   development  frameworks  Makefile  packages  system
bootable  dalvik  external     hardware    out       prebuilt  vendor



    --bionic  --Android编译过程所需要的一些库
    --bootable  --负责启动和备份的一些文件
    --build  --最主要的一些makefile和编译配置文件
    --dalvik  --经过Google优化了的java虚拟机
    --development  --开发用的一些文件夹,包括模拟器和工具等
    --external  --Android工程中引入的外部功能库
    --frameworks  --中间件部分
    --hardware  --和硬件有关的一些支持文件,包括wifi,电信模块等
    --packages  --所有的上层应用包
    --prebuild  --Android编译工具所在目录
    --system  --一些系统级文件

 

关于kernel的下载:

git clone git://android.kernel.org/kernel/common.git kernel

 

1:编译sdk工具:

运行make sdk

 

会看到:

[root@liyi sdk]# ls
android-sdk_eng.root_linux-x86      sdk_deps.mk
android-sdk_eng.root_linux-x86.zip

进到android-sdk_eng.root_linux-x86/platforms/android-1.5/images中:

[root@liyi images]# ls -l
total 47844
-rwxrwxr-x 1 root root  1322572 2010-04-15 10:05 kernel-qemu
-rw-rw---- 1 root root   240824 2010-04-15 10:07 NOTICE.txt
-rw-rw-r-- 1 root root   145741 2010-04-15 10:05 ramdisk.img
-rw-rw---- 1 root root 47207424 2010-04-15 10:05 system.img
-rw-rw---- 1 root root     2112 2010-04-15 10:05 userdata.img

 

2:编译:

make    这 一步编译出system.img、userdata.img、ramdisk.img三个镜像,位于
out/target/product /generic目录下。但是这里并没有编译最关键的kernel。

[root@liyi generic]# ll *.img
-rw-r--r-- 1 root root   145741 2010-04-15 12:41 ramdisk.img
-rw------- 1 root root 47879040 2010-04-15 12:41 system.img
-rw------- 1 root root     2112 2010-04-15 12:41 userdata.img
[root@liyi generic]# pwd
/home/liyi/android/out/target/product/generic

 

3:编译kernel

    # cd kernel
    # export ARCH=arm
    # export CROSS_COMPILE=arm-eabi-
    # make goldfish_defconfig

    # make

 

4:关于编译出来的文件说明

a、android文件系统的结构
android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。

其中, ramdisk.img是emulator的文件系统,

system.img包括了主要的包、库等文件,

userdata.img包括了一些用户数 据,

emulator加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和 userdata目录下。

因此,我们可以把ramdisk.img里的所有文件复制出来,

system.img和userdata.img分别解压到 ramdisk文件系统中的system和 userdata目录下。

b、分离android文件系统出来
system.img,ramdisk.img,userdata.img映像文件是采用cpio打包、gzip压缩的,

可以通过file命令验证:
file ramdisk.img,输出:
ramdisk.img: gzip compressed data, from Unix, last modified: Thu Apr 14 17:16:10 2010
Android源码编译后除了生成system.img,userdata.img之外还生成system和 userdata文件夹,因此不需要解压它们。

Android源码编译后还生成root文件夹,其实root下的文件与 ramdisk.img 里的文件是一样的,

不过这里还是介绍怎样把 ramdisk.img解压出来:
将ramdisk.img复制一份到任何其他目录下,将其名称改为ramdisk.img.gz,并使用命令
gunzip ramdisk.img.gz
然后新建一个文件夹,叫ramdisk吧,进入,输入命令
cpio -i -F ../ramdisk.img
这下,你就能看见并操作ramdisk里面的内容了。
然后把Android源码编译后生成的system和 userdata里的文件复制到 ramdisk/system和 ramdisk/userdata下。这样就得到一个文件系统了.

 

5:如何在emulator里面运行:

#cd /home/liyi/android/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools

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

[root@liyi tools]# ./android list
Available Android targets:
id: 1
     Name: Android 1.5
     Type: Platform
     API level: 3
     Skins: QVGA-P, HVGA-P, QVGA-L, HVGA (default), HVGA-L
Available Android Virtual Devices:
    Name: NO1
    Path: /root/.android/avd/NO1.avd
  Target: Android 1.5 (API level 3)
    Skin: HVGA

#./emulator –avd NO1 -scale 0.8


执行上述命令之前:export ANDROID_PRODUCT_OUT=/home/liyi/android/out/target/product/generic

也可以不指定路径:

但是你在执行emulator的时候,需要如下:

./emulator –avd NO1 –sysdir /home/liyi/android/out/target/product/generic –data /home/liyi/android/out/target/product/generic/userdata.img  -ramdisk /home/liyi/android/out/target/product/generic/ramdisk.img –kernel /home/liyi/android/prebuild/android-arm/kernel/kernel-qemu -scale 0.8

   启动刚才创建的名为NO1的模拟器,使用的内核,文件系统等均使用 /home/liyi/android/out/target/product/generic 路径下的内核和文件系统。没什么问题的话,我们就可以看到Android操作系统的虚拟界面了。

 

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值