ANDRIOD学习笔记之nand、root以及主要调试工具篇
昨天写了Android的开发如何初始化环境配置,今天继续说说Android开发调试的几大工具,主要是adb fastboot 和emulator。一般使用eclipse进行开发的Android开发者也许完全不需要用到这几个命令,但是,若要了解到系统内部,工具无疑就是解剖Android的手术刀。
Android的NAND结构与Root的过程
system、userdata分区在Android文件系统中被挂载为/system和/data目录,这两个目录在使用调试工具adb的时候可以看得到,/data允许进行读写,主要存放用户自安装的程序以及使用设备产生的用户个人数据,system目录存放系统的文件以及预装的重要的系统应用,挂载到文件系统中不允许读写(除非设备被Root)。boot分区则存放操作系统的内核和initrd。recovery分区包含了一套后备的系统,主要在设备升级、备份、维护的时候使用,简单的说,要刷ROM需要进入recovery模式。
在设备的正常工作状态(即是设备没有被Root的时候)下,只有userdata和cache分区是可读写的,其他分区则一般处在只读状态。这种设计的本意是保护系统以及系统的重要程序不被恶意纂改,保证系统的安全性,但是,当recovery分区上的recovery.img被覆盖成另一个版本(例如ClockWorkMod recovery image),recovery分区上的NAND保护机制被破坏了,NAND的分区就完全失去了保护,可以自由的更新system.img和boot.img,此时,可以说设备被Root了,或者说Nand处在"解锁(unlocked)"状态。因此,Android智能手机用户自己动手Root手机设备以及使用网上下载的手机文件来更新Nand(刷机),这是危险的举动。
fastboot的用法
fastboot flash userdata data.img
fastboot flash system system.img
fastboot flash boot boot.img
fastboot reboot
3、刷写recovery分区并重启
fastboot flash recovery /path/to/<recovery>.img
fastboot reboot
fastboot erase boot
fastboot erase recovery
List of devices attached
0A3AABB70502A00Adevice
# ls
acct init sd-ext
cache init.c8500.rc sdcard
config init.goldfish.rc sys
d init.rc system
data mnt ueventd.goldfish.rc
default.prop proc ueventd.huawei.rc
dev root ueventd.rc
etc sbin vendor
adb push <local> <remote>
04-12 16:01:03.482 1262 1290 I ActivityManager: Displayed activity com.android.settings/.ApplicationSettings: 323 ms (total 323 ms)
# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions
.... enter commands, then quit...
sqlite> .exit
Android 2.3.3 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD 'my_android2.3' based on Android 2.3.3, ARM (armeabi) processor,
with the following hardware config:
hw.lcd.density=240
vm.heapSize=24
hw.ramSize=256