Android 系统初探

时 间:2009年7月

姓 名:赵舜东

 

实验目的:针对Google 的Android 系统进行初步的分析

实验环境:Red Hat Enterprise Linux Server release 5.3+Android 0.2

实验步骤:

一、android系统简介及下载

二、在虚拟机中运行使用

三、对系统进行初步分析

 

实验内容:


一、android系统简介及下载

(一)Android系统简介(摘自百度百科)

  android一词的本义指机器人,同时也是Google2007115日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
  2008922日,美国运营商T-Mobile USA在纽约正式发布第一款Google手机——T-Mobile G1。该款手机为台湾宏达电代工制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi

Android Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序 —— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google开放手机联盟合作开发了 Android,这个联盟由包括中国移动摩托罗拉、高通、宏达电和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
  Android 作为谷歌企业战略的重要组成部分,将进一步推进"随时随地为每个人提供信息"这一企业目标的实现。我们发现,全球为数众多的移动电话用户从未使用过任何基于 Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。
  开放手机联盟的成立和 Android 的推出是对现状的重大改变,在带来初步效益之前,还需要不小的耐心和高昂的投入。但是,我们认为全球移动用户从中能获得的潜在利益是值得付出这些努力的。



 

(二)Andriod 软件层次结构







(三)应用程序架构

Android 运行在 Linux 内核上。Android 应用程序是用 Java 编程语言编写的,它们在一个虚拟机(VM)中运行。需要注意的是,这个 VM 并非您想象中的 JVM,而是 Dalvik Virtual Machine,这是一种开源技术。每个 Android 应用程序都在 Dalvik VM 的一个实例中运行,这个实例驻留在一个由 Linux 内核管理的进程中,如下图所示。






二、在虚拟机中运行

 


界面还是很漂亮的,打开一个项目后,退出是Esc键


三、对系统进行初步分析

(一)查看系统构成

[root@UnixHot ~]# mount -o loop liveandroidv0.2.iso /mnt

[root@UnixHot ~]# cd /mnt

[root@UnixHot mnt]# ls 该LiveCD共10个文件

boot.cat cmdline data.sqs initlogo.rle isolinux.bak isolinux.bin isolinux.cfg kernel ramdisk system.sqs

[root@UnixHot mnt]# mkdir /usr/local/src/android

[root@UnixHot mnt]# cp -r * /usr/local/src/android/

[root@UnixHot mnt]# cd /usr/local/src/android/

[root@UnixHot android]# ls -l

total 178976

-r-xr-xr-x 1 root root 2048 Jul 27 23:40 boot.cat

-r-xr-xr-x 1 root root 86 Jul 27 23:40 cmdline

-r-xr-xr-x 1 root root 1396736 Jul 27 23:40 data.sqs

-r-xr-xr-x 1 root root 49756 Jul 27 23:40 initlogo.rle

-r-xr-xr-x 1 root root 76 Jul 27 23:40 isolinux.bak

-r-xr-xr-x 1 root root 14336 Jul 27 23:40 isolinux.bin

-r-xr-xr-x 1 root root 162 Jul 27 23:40 isolinux.cfg

-r-xr-xr-x 1 root root 2191184 Jul 27 23:40 kernel

-r-xr-xr-x 1 root root 2113331 Jul 27 23:40 ramdisk

-r-xr-xr-x 1 root root 177246208 Jul 27 23:40 system.sqs

1.[root@UnixHot android]# file boot.cat

boot.cat: data

2.[root@UnixHot android]# file cmdline

cmdline: ASCII text

3.[root@UnixHot android]# file data.sqs

data.sqs: Squashfs filesystem, little endian, version 3.1, 0 bytes, 8 inodes, blocksize: 131072 bytes, created: Tue May 19 00:24:03 2009

4.[root@UnixHot android]# file initlogo.rle

initlogo.rle:

5.[root@UnixHot android]# file isolinux.bak

isolinux.bak: ASCII text, with CRLF line terminators

6.[root@UnixHot android]# file isolinux.bin

isolinux.bin: data

7.[root@UnixHot android]# file isolinux.cfg

isolinux.cfg: ASCII text, with CRLF line terminators

8.[root@UnixHot android]# file kernel

kernel: Linux kernel x86 boot executable RO-rootFS, root_dev 0x801, swap_dev 0x2, Normal VGA

9.[root@UnixHot android]# file ramdisk

ramdisk: gzip compressed data, from Unix, last modified: Fri Jul 3 00:35:37 2009, max compression

10.[root@UnixHot android]# file system.sqs

system.sqs: Squashfs filesystem, little endian, version 3.1, 0 bytes, 321 inodes, blocksize: 131072 bytes, created: Fri Jul 3 19:17:43 2009

通过使用file命令查看文件类型,发现三个文本文件

1.[root@UnixHot android]# cat isolinux.bak

default android 引导启动项

label android

kernel kernel

append initrd=ramdisk

2.[root@UnixHot android]# cat isolinux.cfg

default android

label android

kernel kernel

append initrd=ramdisk console=tty0 console=ttyS1,115200n8 console=tty0 androidboot.hardware=eee_701 vga=788

3.[root@UnixHot android]# cat cmdline

console=tty0 console=ttyS1,115200n8 console=tty0 androidboot.hardware=eee_701 vga=788

设置了ttyS1串口的波特率等信息

 

(二)查看squashfs 压缩格式的文件

system.sqs和data.sqs为squashfs 类型文件,下面我们把这两个压缩文件解开:

1.下载squashfs4.0.tar.ga

[root@UnixHot ~]# wget http://ncu.dl.sourceforge.net/project/squashfs/squashfs/ \

squashfs4.0/squashfs4.0.tar.gz

[root@UnixHot ~]# mv squashfs4.0.tar.gz /usr/local/src

[root@UnixHot ~]#cd /usr/local/src

2.解压软件包[root@UnixHot ~]#tar xvf squashfs4.0.tar.gz

[root@UnixHot ~]# cd squashfs4.0/squashfs-tools/

3.编译软件包

[root@UnixHot squashfs-tools]# make

4.编译好会生成mksquashfs和unsquashfs两个命令,下面使用unsquashfs解压包

[root@UnixHot android]#/usr/local/src/squashfs4.0/squashfs-tools/unsquashfs data.sqs

[root@UnixHot android]# ls -R squashfs-root/

squashfs-root/:

app location

squashfs-root/app:

ApiDemos.apk

squashfs-root/location:

gps

squashfs-root/location/gps:

location nmea properties

5.解压system.sqs

[root@UnixHot android]# mv squashfs-root/ data

[root@UnixHot android]# /usr/local/src/squashfs4.0/squashfs-tools/unsquashfs system.sqs

[root@UnixHot android]# mv squashfs-root/ system 该目录是系统启动后的根目录

(三)查看initrd 这个img文件

[root@UnixHot android]# gunzip < ramdisk > init

[root@UnixHot android]# mkdir initrd

[root@UnixHot android]# cd initrd

[root@UnixHot initrd]# cpio -ivmd < ../init

[root@UnixHot initrd]# ls

bin default.prop init init.goldfish.rc init.rc init.rc.bk2 lib sbin system data dev init.eee_701.rc initlogo.rle init.rc.back init.rc.bk3 proc sys

实验答疑:zhaoshundong@hotmail.com

相关作品:http://www.unixhot.com http://www.bosshot.com

更多相关文章

  1. Android4.1.1下关于采用File.createTempFile创建的临时文件存放
  2. Android:StatFs类 获取系统/sdcard存储空间信息
  3. Android手机隐藏命令大全
  4. android—AOSP、AOKP、CM的区别
  5. 【源代码】基于Android和蓝牙的单片机温度採集系统
  6. adb shell 查看系统属性(用来判断特殊的操作系统)
  7. Android(安卓)6.0运行时权限 (危险权限)
  8. Android+本地记事本(上)------实现登陆注册
  9. Android(安卓)危险权限、权限组列表和所有普通权限

随机推荐

  1. android socket 百度地图 实时定位
  2. Android AudioTrack实时播放
  3. Android书签
  4. Android程序开发:简单电话拨号器
  5. Android 实现图片闪烁效果
  6. Load bitmap from file Android
  7. Android 同时监听多个Button事件
  8. android中实现对多个EditText的监听
  9. android 相对布局例子代码
  10. Android sdk manager 下载安装中的错误收