本帖最后由 諫山黄泉 于 2013-3-16 14:22 编辑

/**
*
[渣翻] xda: http://forum.xda-developers.com/showthread.php?t=2010338
*
*
转载请注明出处: http://bbs.gfan.com/android-5576468-1-1.html
*
*
略长, 懒得翻请自行Crtl+F
* 不定时更新...
*
*
科普向教程第二部分: http://bbs.gfan.com/android-5795118-1-1.html
*/

FAQ:

1, 什么是android?
Android(读音:['ændrɔid],中文俗称安卓)是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google成立的Open Handset Alliance(OHA,开放手持设备联盟)持续领导与开发中。
wiki: http://zh.wikipedia.org/wiki/Android

2, 什么是SDK, 我必须安装吗?
SDK = "software development kit" , 除非你是开发者, 不然这东西完全是浪费空间, 你所需要的只是SDK中提供的有关FASTBOOT与ADB的几个文件和驱动而已.

3, 什么是驱动, 我为什么要安装呢...?
知道什么是驱动就知道为什么了, wiki: http://zh.wikipedia.org/wiki/%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F

4, 我从哪儿能搞到驱动?
这个: http://forum.xda-developers.com/showthread.php?t=1992345
或者这个: http://forum.xda-developers.com/showthread.php?t=1996051
作者推荐第二个

5, 为什么要安装两次驱动?
android和PC有两种主要的通信方式: FASTBOOT和ADB, 两种接入方式的驱动是不同的, 所以需要安装两次. 以FASTBOOT方式( bootloader) 启动手机, 链接电脑后安装一次驱动; 而ADB模式需要android内核的支持, 所以正常启动手机( 或者某些自制recovery, 例如CWM) , 打开USB调试( USB debugging) , 然后连接电脑, 安装ADB驱动.

6, 怎么进入bootloader (FASTBOOT模式) ?
关掉手机, 摁住音量-键, 然后再摁住电源键, 直到开机.

7, 什么是命令行?
Windows下的命令行( Linux/MacOS下的终端), 是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。
wiki: http://zh.wikipedia.org/wiki/%E5%91%BD%E4%BB%A4%E8%A1%8C
TIPS: 在文件夹里, 摁住SHIFT键, 然后右键, 会看到: 在此处打开命令行窗口的选项

8, 什么是bootloader?
Bootloader(引导加载程序)是系统加电后运行的第一段代码, 一般运行的时间非常短, 但是对于嵌入式系统来说, 这段代码非常重要. 在我们的台式电脑当中, 引导加载程序由BIOS(固件程序)和位于硬盘MBR中的操作系统引导加载程序(比如NTLOADER,GRUB和LILO)一起组成.
在一般的典型系统中,整个系统的加载启动任务全由bootloader来完成. 在ARM中,系统上电或复位时通常从地址0x00000000处开始执行,而在这个位置,通常安排的就是系统的bootloader。通过这小段程序可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境设置到一个合适的状态!以为最终调用操作系统内核准备好正确的环境.

9, bootloader 有锁/解锁( locked/unlocked)?
你从厂家得到的设备大多是处于有锁状态. 出于安全考虑, 锁定的bootloader只能刷写拥有官方签名的镜像, 这意味着你很难改变或者修改操作系统. 解锁bootloader并不会增加设备的功能, 但是解锁后你可以随心所欲的刷写自制镜像与程序, 方便折腾...

10, 什么是root?
root本质上来说就是你获得了对系统文件与分区的root权限, 类似于Windows的管理员权限. root跟bootloader没半毛钱关系, root的是系统本身.

11, 怎么root?
root的实现过程是: 向系统目录下写入 一个叫做 su的可执行文件(功能为获得root权限), 并安装一个控制该权限开启与关闭的APP.

( PS: 每个命令都有对应的二进制可执行文件, 执行命令, 就是执行相应的二进制文件的过程, 而%PATH%保存的就是这些执行文件所在的目录...比方说常见的: cd, ls, cp, ifconfig 这几个命令的执行文件保存在 /system/bin下; su, 和busybox的命令, 习惯上, 安装在 /system/xbin 下...)

N4可用的是Chainfire的SuperSU: http://forum.xda-developers.com/showthread.php?t=1538053

非常详细的, 刷工厂镜像, root, 解锁教程: http://bbs.gfan.com/android-5795118-1-1.html

12, 解锁bootloader和root是一个意思吗?
不是, 解锁bootloader的作用是方便刷写; root的作用是获得最高权限, 可以随意操作系统文件.

13, 解锁bootloader之后必须root吗?
No.

14, 解锁bootloader后必须刷自制ROM吗?
No.

15, root之后才能刷ROM吗?
No.

16, 什么是ROM?
这里指android刷机包.

17, 不同版本android的区别是什么? 4.2 和 JOP40C有什么区别?
看这个: http://source.android.com/source/build-numbers.html

18, 原生镜像和自制镜像的区别是什么?
由Google开发编译的镜像为原生镜像( stock ROM), 其他的都是自制镜像.

19, 总听到AOSP这个词, 啥意思?
AOSP = Android Open Source Project, 他们负责android的源码编写与修改, 详情点击这里: http://source.android.com/

20, 什么是FASTBOOT?
三个意思 : 1, 用来设备和PC间通信的一个命令行工具 2, fastboot.exe 3, 设备的一种启动模式.
FASTBOOT是一个特殊的工程模式, 通过fastboot界面, 连接电脑后, 我们可以在电脑端通过特殊的指令来操作手机.
使用FASTBOOT命令, 需要PC上要安装有FASTBOOT驱动, 当前目录下必须存在fastboot.exe, 手机需要以FASTBOOT模式启动, 然后连接电脑.

22, FASTBOOT命令
在fastboot.exe所在的文件夹下打开命令行, 输入fastboot, 可以看到fastboot的命令格式.

  1. fastboot
  2. usage: fastboot [ <option> ] <command>
  3. commands:
  4. update <filename>                        reflash device from update.zip
  5. flashall                                 flash boot + recovery + system
  6. flash <partition> [ <filename> ]         write a file to a flash partition
  7. erase <partition>                        erase a flash partition
  8. format <partition>                       format a flash partition
  9. getvar <variable>                        display a bootloader variable
  10. boot <kernel> [ <ramdisk> ]              download and boot kernel
  11. flash:raw boot <kernel> [ <ramdisk> ]    create bootimage and flash it
  12. devices                                  list all connected devices
  13. continue                                 continue with autoboot
  14. reboot                                   reboot device normally
  15. reboot-bootloader                        reboot device into bootloader
  16. help                                     show this help message
  17. options:
  18. -w                                       erase userdata and cache
  19. -s <serial number>                       specify device serial number
  20. -p <product>                             specify product name
  21. -c <cmdline>                             override kernel commandline
  22. -i <vendor id>                           specify a custom USB vendor id
  23. -b <base_addr>                           specify a custom kernel base address
  24. -n <page size>                           specify the nand page size. default: 2048

复制代码

除去上面那些, 还有一个oem命令.

这些命令, 在FASTBOOT模式下, 不管有没有解锁bootloader都可以使用:

oem: 用来解锁或者锁定bootloader, 例如: fastboot oem unlock 是解锁bootloader的命令, fastboot oem lock, 是重新锁定bootloader的命令.
devices: 这命令用来检查设备是否已经正确的以FASTBOOT模式连接电脑, 例如: fastboot devices
reboot: 重启命令, 例如: fastboot reboot
reboot-bootloader: 这命令将会让你的设备重启到bootloader模式, 例如: fastboot reboot-bootloader

下面这些命令只有在解锁bootloader后才有效:

flash: 用来刷写镜像, 不能用来刷写来路不明的文件或者zip, 例如, 刷写系统区块的命令: fastboot flash system system.img
boot: 用来让核心从设备储存外的某镜像启动, 比方说你文件夹里的CMW RECOVERY镜像叫做: recovery.img, 输入: fastboot boot recovery.img, 便可让设备由recovery.img启动, 而不用将CWM刷写到设备flash之后启动.
erase: 用来擦除某些指定的区块, 例如: fastboot erase cache

以上就是会常常用到的fastboot命令啦.

23, 什么是ADB?
ADB = Android Debug Bridge, 用来设备和PC间通信的另一个工具. 使用ADB命令, 需要手机要启动到recovery模式, 或者正常启动. 一般来说, 正常启动的话, 需要打开USB调试. 当前目录下必须存在ADB相关的几个文件, PC上也必须安装有ADB驱动.

24, ADB命令.

在adb.exe所在的目录下打开命令行, 输入adb可以查看adb的命令格式.

  1. Android Debug Bridge version 1.0.29
  2. -d                            - directs command to the only connected USB device
  3. returns an error if more than one USB device is present.
  4. -e                            - directs command to the only running emulator.
  5. returns an error if more than one emulator is running.
  6. -s <serial number>            - directs command to the USB device or emulator with
  7. the given serial number. Overrides ANDROID_SERIAL
  8. environment variable.
  9. -p <product name or path>     - simple product name like 'sooner', or
  10. a relative/absolute path to a product
  11. out directory like 'out/target/product/sooner'.
  12. If -p is not specified, the ANDROID_PRODUCT_OUT
  13. environment variable is used, which must
  14. be an absolute path.
  15. devices                       - list all connected devices
  16. connect <host>[:<port>]       - connect to a device via TCP/IP
  17. Port 5555 is used by default if no port number is specified.
  18. disconnect [<host>[:<port>]]  - disconnect from a TCP/IP device.
  19. Port 5555 is used by default if no port number is specified.
  20. Using this command with no additional arguments
  21. will disconnect from all connected TCP/IP devices.
  22. device commands:
  23. adb push <local> <remote>    - copy file/dir to device
  24. adb pull <remote> [<local>]  - copy file/dir from device
  25. adb sync [ <directory> ]     - copy host->device only if changed
  26. (-l means list but don't copy)
  27. (see 'adb help all')
  28. adb shell                    - run remote shell interactively
  29. adb shell <command>          - run remote shell command
  30. adb emu <command>            - run emulator console command
  31. adb logcat [ <filter-spec> ] - View device log
  32. adb forward <local> <remote> - forward socket connections
  33. forward specs are one of:
  34. tcp:<port>
  35. localabstract:<unix domain socket name>
  36. localreserved:<unix domain socket name>
  37. localfilesystem:<unix domain socket name>
  38. dev:<character device name>
  39. jdwp:<process pid> (remote only)
  40. adb jdwp                     - list PIDs of processes hosting a JDWP transport
  41. adb install [-l] [-r] [-s] <file> - push this package file to the device and install it
  42. ('-l' means forward-lock the app)
  43. ('-r' means reinstall the app, keeping its data)
  44. ('-s' means install on SD card instead of internal storage)
  45. adb uninstall [-k] <package> - remove this app package from the device
  46. ('-k' means keep the data and cache directories)
  47. adb bugreport                - return all information from the device
  48. that should be included in a bug report.
  49. adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>]
  50. - write an archive of the device's data to <file>.
  51. If no -f option is supplied then the data is written
  52. to "backup.ab" in the current directory.
  53. (-apk|-noapk enable/disable backup of the .apks themselves
  54. in the archive; the default is noapk.)
  55. (-shared|-noshared enable/disable backup of the device's
  56. shared storage / SD card contents; the default is noshared.)
  57. (-all means to back up all installed applications)
  58. (-system|-nosystem toggles whether -all automatically includes
  59. system applications; the default is to include system apps)
  60. (<packages...> is the list of applications to be backed up.  If
  61. the -all or -shared flags are passed, then the package
  62. list is optional.  Applications explicitly given on the
  63. command line will be included even if -nosystem would
  64. ordinarily cause them to be omitted.)
  65. adb restore <file>           - restore device contents from the <file> backup archive
  66. adb help                     - show this help message
  67. adb version                  - show version num
  68. scripting:
  69. adb wait-for-device          - block until device is online
  70. adb start-server             - ensure that there is a server running
  71. adb kill-server              - kill the server if it is running
  72. adb get-state                - prints: offline | bootloader | device
  73. adb get-serialno             - prints: <serial-number>
  74. adb status-window            - continuously print device status for a specified device
  75. adb remount                  - remounts the /system partition on the device read-write
  76. adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program
  77. adb reboot-bootloader        - reboots the device into the bootloader
  78. adb root                     - restarts the adbd daemon with root permissions
  79. adb usb                      - restarts the adbd daemon listening on USB
  80. adb tcpip <port>             - restarts the adbd daemon listening on TCP on the specified port
  81. networking:
  82. adb ppp <tty> [parameters]   - Run PPP over USB.
  83. Note: you should not automatically start a PPP connection.
  84. <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
  85. [parameters] - Eg. defaultroute debug dump local notty usepeerdns
  86. adb sync notes: adb sync [ <directory> ]
  87. <localdir> can be interpreted in several ways:
  88. - If <directory> is not specified, both /system and /data partitions will be updated.
  89. - If it is "system" or "data", only the corresponding partition
  90. is updated.

复制代码

有关 backup 和 restore 命令请看这篇非常给力的帖子: http://forum.xda-developers.com/showthread.php?t=1420351

devices: 这命令用来检查设备是否已经正确的以adb模式连接, 例如: adb devices
reboot: 用来重启设备, 例如:  adb reboot
reboot-bootloader: 重启设备到bootloader模式, 例如: adb reboot bootloader
push: 用来向设备复制文件, 比如将c:\junk.jpg 拷贝到手机 /sdcard文件夹: adb push c:\junk.jpg /sdcard/ ( 执行前, 确保/sdcard已经挂载)
shell: 打开一个一个可以直接向android系统发送命令的终端, 命令: adb shell, 你会发现提示符变成了 $ ( 基本都是常见的Linux shell 命令)

25, N4的区块.

  1. /dev/block/platform/msm_sdcc.1/by-name:
  2. lrwxrwxrwx root root 2012-11-13 19:02 DDR -> /dev/block/mmcblk0p24
  3. lrwxrwxrwx root root 2012-11-13 19:02 aboot -> /dev/block/mmcblk0p12
  4. lrwxrwxrwx root root 2012-11-13 19:02 abootb -> /dev/block/mmcblk0p15
  5. lrwxrwxrwx root root 2012-11-13 19:02 boot -> /dev/block/mmcblk0p6
  6. lrwxrwxrwx root root 2012-11-13 19:02 cache -> /dev/block/mmcblk0p22
  7. lrwxrwxrwx root root 2012-11-13 19:02 grow -> /dev/block/mmcblk0p25
  8. lrwxrwxrwx root root 2012-11-13 19:02 m9kefs1 -> /dev/block/mmcblk0p8
  9. lrwxrwxrwx root root 2012-11-13 19:02 m9kefs2 -> /dev/block/mmcblk0p9
  10. lrwxrwxrwx root root 2012-11-13 19:02 m9kefs3 -> /dev/block/mmcblk0p10
  11. lrwxrwxrwx root root 2012-11-13 19:02 metadata -> /dev/block/mmcblk0p18
  12. lrwxrwxrwx root root 2012-11-13 19:02 misc -> /dev/block/mmcblk0p19
  13. lrwxrwxrwx root root 2012-11-13 19:02 modem -> /dev/block/mmcblk0p1
  14. lrwxrwxrwx root root 2012-11-13 19:02 persist -> /dev/block/mmcblk0p20
  15. lrwxrwxrwx root root 2012-11-13 19:02 recovery -> /dev/block/mmcblk0p7
  16. lrwxrwxrwx root root 2012-11-13 19:02 rpm -> /dev/block/mmcblk0p11
  17. lrwxrwxrwx root root 2012-11-13 19:02 rpmb -> /dev/block/mmcblk0p16
  18. lrwxrwxrwx root root 2012-11-13 19:02 sbl1 -> /dev/block/mmcblk0p2
  19. lrwxrwxrwx root root 2012-11-13 19:02 sbl2 -> /dev/block/mmcblk0p3
  20. lrwxrwxrwx root root 2012-11-13 19:02 sbl2b -> /dev/block/mmcblk0p13
  21. lrwxrwxrwx root root 2012-11-13 19:02 sbl3 -> /dev/block/mmcblk0p4
  22. lrwxrwxrwx root root 2012-11-13 19:02 sbl3b -> /dev/block/mmcblk0p14
  23. lrwxrwxrwx root root 2012-11-13 19:02 system -> /dev/block/mmcblk0p21
  24. lrwxrwxrwx root root 2012-11-13 19:02 tz -> /dev/block/mmcblk0p5
  25. lrwxrwxrwx root root 2012-11-13 19:02 tzb -> /dev/block/mmcblk0p17
  26. lrwxrwxrwx root root 2012-11-13 19:02 userdata -> /dev/block/mmcblk0p23

复制代码

来自这里: http://forum.xda-developers.com/showthread.php?t=1993036

嵌入式系统, 区块的大小与配置基本都是固定的...
比方说: lrwxrwxrwx root root 2012-11-13 19:02 system -> /dev/block/mmcblk0p21, 你会发现: /system 下挂载的是 mmcblc0p21这个区块...
recovery -> /dev/block/mmcblk0p7
userdata -> /dev/block/mmcblk0p23
cache -> /dev/block/mmcblk0p22
boot -> /dev/block/mmcblk0p6

26, 挂载.
这东西自己理解吧, Linux的目录结构和Windows不同, Windows是先有分区, 然后在分区上再产生目录, Linux下是先有目录结构, 将某分区挂载到某目录下, 那么该目录就指向这个分区, 目录可以理解成指针嘛...

27, 什么是recovery?
recovery是一个特殊的启动模式, 它提供向设备刷写文件, 升级, 或者备份等等功能. 原装recovery功能稀少坑爹, 但我们有两个非常给力的自制recovery: CMW和TWRP.

28, 我为什么在recovery模式下会看到一个仰面朝天的小绿人?
这是原版recovery, 按下电源键, 再按音量+ 来打开recovery菜单.

29, 我刚刷了CMW, 但是每次我想要启动CMW都会发现原版recovery阴魂不散, 怎么回事?
有两个文件会在你每次载入recovery时重新刷写recovery:

/system/etc/install-recovery.sh
/system/recovery-from-boot.p

PS: 这两个文件只有在OTA升级之后才会出现
删除或者将它们重命名, 然后重新刷写CMW, 就能固定CMW了.
这帖子提供了一个 recovery disabler : http://forum.xda-developers.com/showthread.php?t=1995440

传送门: http://bbs.gfan.com/android-5795118-1-1.html

>>> 长帖的坏处就是: 看到最后, 就没有力气回帖了...
>>> 觉着有用, 记得 回帖, 加分, 收藏...

科普向】Nexus 4 必读与常见问题解答【Android入门读相关推荐

  1. 【Oracle认证必读】常见问题解答

    Oracle认证都有哪些种类? Oracle认证目前分为三个层次OCA.OCP.OCM. OCA即Or acle Certified Associate(只有 Oracle9i有此级认证),OCP即O ...

  2. CP20常见问题解答

    CP20常见问题解答 CP20常见问题解答 注:若您对CP20用途不十分了解,请参考前面HC10的问答 Q)基于服务器的解决方案都有哪几种?各有什么特点? Q)CP20的usb端口是否会成为资料外泄的 ...

  3. Delphi XE5 常见问题解答

    Delphi XE5 常见问题解答 有关于新即时试用的问题吗?请看看 RAD Studio 即时试用常见问答. 常见问题 什么是 Delphi? Embarcadero? Delphi? XE5 是易 ...

  4. Internet Explorer 8 Beta2 常见问题解答

    Internet Explorer 8 Beta2 常见问题解答<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:o ...

  5. 海康威视摄像头安装插件检测不到_海康威视摄像机常见问题解答

    海康威视摄像机常见问题解答 1.忘记摄像机IP地址怎么办? ①可以通过设备网络搜索工具SADP在线搜索 ②可以使用客户端4200在线搜索功能 ③在设备和PC开启UPNP功能时,可以通过PC中网络发现查 ...

  6. abaqus python二次开发攻略_Abaqus有限元分析常见问题解答与实用技巧 12天后上架...

    Abaqus有限元分析常见问题解答与实用技巧已印刷完毕,1-2天后上架,先睹为快.现在某些网站上的售卖信息,不靠谱.温馨提示:封底无防伪标均为盗版! 序  言 Abaqus是是国际上先进的大型通用非线 ...

  7. PhpExcel中文帮助手册|PhpExcel基本使用方法及常见问题解答

    为什么80%的码农都做不了架构师?>>>    一.介绍一下PHPExcel的基本使用方法 include 'PHPExcel.php'; include 'PHPExcel/Wri ...

  8. c语言中removeDir的相反函数,C语言编程常见问题解答之常用函数的包括文件.doc

    C语言编程常见问题解答之常用函数的包括文件 C语言编程常见问题解答之常用函数的包含文件(1) 作者:unknown 更新时间: 2005-05-10 函数 包含 类别 功能 _atold math.h ...

  9. MPLS是如何工作?MPLS的完整指南和常见问题解答

    MPLS是如何工作?MPLS的详细手册和常见问题解答 MPLS代表什么? MPLS代表多协议标签交换. 什么是MPLS? 当数据从一个网络节点传输到另一个网络节点时,它是一种在电信网内路由流量的机制. ...

最新文章

  1. 修改所有列_多人编辑,自动汇总,领导可见所有?用 SeaTable 表格更简单
  2. jconsole工具使用----jvm内存泄漏问题
  3. Hadoop 分布式文件系统 - HDFS
  4. C#反射技术之一动态读取和设置对象的属性值
  5. proxifier访问https错误_教你实现IE访问https网站不出错方法
  6. HDU 1203 I NEED A OFFER! (动态规划、01背包、概率)
  7. 技术大神有话说,别让新业绩为旧设备背锅
  8. python该怎样使用_Python 应该怎么去练习和使用?
  9. iphone7 无法连接计算机看照片,教你iphone7一键导出照片至电脑方法及iPhone7连接电脑itunes没反应怎么办...
  10. css 下拉 小箭头
  11. 路由器上网流程以及nat内网ip
  12. 隔壁老王的iptables防火墙
  13. 1.2.1 数据库系统特点
  14. c语言中handle的用法,handle什么意思_handle的用法和短语例句
  15. LeetCode 340. 至多包含 K 个不同字符的最长子串 (滑动窗口)
  16. python 服务端渲染_客户端渲染与服务端渲染
  17. MTK之Flash篇一
  18. JCTF 2014 -小试身手
  19. vscode 网易云音乐插件
  20. mysql学生表选课表课程表_mysql查询(学生表、课程表、选课表)

热门文章

  1. 计算机卡顿cmd,电脑运行时经常卡顿?只需3步操作,就跟新买的一样流畅!
  2. 3GPP TS和TR
  3. Angular 5 子组件与父组件实现数据双向绑定
  4. linux常用查看进程,Linux常用的进程管理和查看指令
  5. C++毕业设计——基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现(毕业论文+程序源码)——车牌定位和识别系统
  6. php 长图切成多张图片,长图打印,图片平均切割
  7. iOS AR之视频特效挂件(GPUImage)
  8. 家用环境下Cisco vWLC配置
  9. 分布式缓存架构(3)-Redis事务主从复制哨兵机制
  10. 算法,16瓶水,有一瓶有毒,假设一只小白鼠喝一滴水,一个小时后会死亡,一个小时找出那瓶有毒的水至少需要几只小白鼠?