转载请指明出处:草帽的后花园

文件1:下载

Android Tools详解

aapt

aapt即Android Asset Packaging Tool , 在SDK的platform-tools目录下. 该工具可以查看, 创建, 更新ZIP格式的文档附件(zip, jar, apk). 也可将资源文件编译成二进制文件.尽管你可能没有直接使用过aapt工具, 但是build scripts和IDE插件会使用这个工具打包apk文件构成一个Android 应用程序.

  aapt工具也支持很多子命令。

  aapt l[ist]:列出资源压缩包里的内容。

  aapt d[ump]:查看APK包内指定的内容。

  aapt p[ackage]:打包生成资源压缩包。

  aapt r[emove]:从压缩包中删除指定文件。

  aapt a[dd]:向压缩包中添加指定文件。

  aapt v[ersion]:打印aapt的版本。

acp

acp Android提供的CP檔案複製工具.

Android 也提供自己的檔案複製工具acp, 在此僅附上Source Code build/tools/acp 前面的說明,供參考

The GNU/Linux "cp" uses O_LARGEFILE in its open() calls, utimes() instead of utime(), and getxattr()/setxattr() instead of chmod().  These are probably "better", but are non-portable, and not necessary for our

purposes.

adb

 adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。

  adb是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机). 它的主要功能有:

  * 运行设备的shell(命令行)

  * 管理模拟器或设备的端口映射

  * 计算机和设备之间上传/下载文件

  * 将本地apk软件安装至模拟器或android设备

  ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.

ADB常用的几个命令

  1. 查看设备 * adb devices

  这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示

  2. 安装软件

  * adb install <apk文件路径>

  这个命令将指定的apk文件安装到设备上

  3. 卸载软件

  * adb uninstall <软件名>

  * adb uninstall -k <软件名>

  如果加 -k 参数,为卸载软件但是保留配置和缓存文件.

  4. 登录设备shell

  * adb shell

  * adb shell <command命令>

  这个命令将登录设备的shell.

  后面加<command命令>将是直接运行设备命令, 相当于执行远程命令

  5. 从电脑上发送文件到设备

  * adb push <本地路径> <远程路径>

  用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)

  6. 从设备上下载文件到电脑

  * adb pull <远程路径> <本地路径>

  用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

  7. 显示帮助信息

  * adb help

  这个命令将显示帮助信息

  删除Android系统Rom自带的软件

  Android系统没有卸载Rom自带软件的功能.可能有些同学很想删除废了武功的Youtube,想删除墙那边的Twitter.

  加上Android的快捷方式没法修改没法自己排序没法分页.

  安装的程序太多就会发现原来找到自己想要的东西很难.

  综上所述,我觉得告知各位菜鸟同学如何删除自带的程序是很有必要的一件事情.

  1.确定手机root了,取得了root权限才能删除系统文件呀.

  2.下载Android_db.rar,解压到%windir/%System32下.

  3.手机连接数据线,在电脑上打开cmd,然后输入命令

  adb remount

  adb shell

  su

  执行完成之后,你会看到:

  * daemon not running. starting it now *

  * daemon started successfully *

  4.接着就是Linux命令行模式了,输入

  cd system/app

  你会发现没啥变化,然后输入ls回车.

  这时候列表显示了system/app里面的所有文件,也就是Rom集成的一些软件了.

  5.开始删除吧.比如删除Youtube,他的文件名是Youtube.odex和Youtube.apk

  我们要删除这2个文件,敲入以下命令:

  adb shell rm -f system/app/Youtube.odex

  adb shell rm -f system/app/Youtube.apk

aidl

AIDL:Android Interface Definition Language,即Android接口描述语言。

  Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。

为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。我们知道4个Android应用程序组件中的3个(Activity、Broadcast和Content Provider)都可以进行跨进程访问,另外一个Android应用程序组件Service同样可以。因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。

建立AIDL服务要比建立普通的服务复杂一些,具体步骤如下:

  (1)在Eclipse Android工程的Java包目录中建立一个扩展名为aidl的文件。该文件的语法类似于Java代码,但会稍有不同。详细介绍见实例的内容。

  (2)如果aidl文件的内容是正确的,ADT会自动生成一个Java接口文件(*.java)。

  (3)建立一个服务类(Service的子类)。

  (4)实现由aidl文件生成的Java接口。

  (5)在AndroidManifest.xml文件中配置AIDL服务,尤其要注意的是,<action>标签中android:name的属性值就是客户端要引用该服务的ID,也就是Intent类的参数值。

android

android增量升级工具

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/android.html

android is an important development tool that lets you:

·         Create, delete, and view Android Virtual Devices (AVDs). See Managing AVDs from the Command Line.

·         Create and update Android projects. See Managing Projects from the Command Line.

·         Update your Android SDK with new platforms, add-ons, and documentation. See Exploring the SDK.

If you are using Eclipse, the android tool's features are integrated into ADT, so you should not need to use this tool directly.

Note: The documentation of options below is not exhaustive and may be out of date. For the most current list of options, execute android --help.

Syntax


android [global options] action [action options]

Global Options

-s

Silent mode: only errors are printed out

-h

Usage help

-v

Verbose mode: errors, warnings and informational messages are printed.

AVD actions and options

Action

Option

Description

Comments

avd

None

Launch the AVD Manager

sdk

None

Launch the Android SDK Manager

create avd

-n <name>

The name for the AVD.

Required

-t <targetID>

Target ID of the system image to use with the new AVD. To obtain a list of available targets, useandroid list targets

Required

-c <path>|<size>[K|M]

The path to the SD card image to use with this AVD or the size of a new SD card image to create for this AVD. For example, -c path/to/sdcardor -c 1000M.

-f

Force creation of the AVD

-p <path>

Path to the location at which to create the directory for this AVD's files.

-s <name>|<width>-<height>

The skin to use for this AVD, identified by name or dimensions. The android tool scans for a matching skin by name or dimension in theskins/ directory of the target referenced in the -t <targetID> argument. For example, -s HVGA-L

delete avd

-n <name>

The name of the AVD to delete

Required

move avd

-n <name>

The name of the AVD to move

Required

-p <path>

Path to the location at which to create the directory for this AVD's files.

-r <new-name>

New name of the AVD if you want to rename it

update avd

-n <name>

The name of the AVD to move

Required

Project actions and options

Action

Option

Description

Comments

create project

-n <name>

The name for the project

Required

-t <targetID>

Target ID of the system image to use with the new AVD. To obtain a list of available targets, useandroid list targets

Required

-k <path>|<size>[K|M]

Package namespace

Required

-a

Name for the default Activity class

Required

-p <path>

Location of your project directory

Required

update project

-n <name>

The name of the project to update

-p <path>

Location path of the project

Required

-l <library path>

Location path of an Android Library to add, relative to the main project

-s <subprojects>

Update any projects in subfolders such as test projects

-t <targetID>

Target id to set for the project

create-test-project

-n <name>

The name of the project

-p <path>

Location path of the project

Required

-m <main>

The name of the project

Required

update-test-project

-p <path>

Location path of the project to test, relative to the new project

Required

-m <main>

The main class of the project to test

Required

create-lib-project

-k <packageName>

(Required) Package name of the library project

Required

-p <path>

Location path of the project

Required

-t <targetID>

Target ID of the library project

Required

-n <name>

The name of the project

Required

update-lib-project

-p <path>

Location path of the project

Required

-l <libraryPath>

Location path of an Android Library to add, relative to the main project

-t <name>

Target ID of the library project

Update actions

update adb

Updates adb to support the USB devices declared in the SDK add-ons.

update sdk

Updates the SDK by suggesting new platforms to install if available.

apicheck

Apicheck的本质是比较当前生成的api.xml(和frameworks/api/下面的文件相同)。 其执行的命令如下:

out/host/linux-x86/bin/apicheck -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 frameworks/base/api/8.xml out/target/common/obj/PACKAGING/public_api.xml || ( cat build/core/apicheck_msg_last.txt ; exit 38 )

out/host/linux-x86/bin/apicheck -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 -error 25 frameworks/base/api/current.xml out/target/common/obj/PACKAGING/public_api.xml || ( cat build/core/apicheck_msg_current.txt ; exit 38 )

即 本次编译生成的out/target/common/obj/PACKAGING/public_api.xml与(视为正确的)frameworks /base/api/8.xml和(视为正确的)frameworks/base/api/current.xml进行比较。

apkcheck

/***

* Checks an APK's dependencies against the published API specification.

*

* We need to read two XML files (spec and APK) and perform some operations

* on the elements.  The file formats are similar but not identical, so

* we distill it down to common elements.

*

* We may also want to read some additional API lists representing

* libraries that would be included with a "uses-library" directive.

*

* For performance we want to allow processing of multiple APKs so

* we don't have to re-parse the spec file each time.

*/

aprotoc

Usage: ./aprotoc [OPTION] PROTO_FILES

Parse PROTO_FILES and generate output based on the options given:

-IPATH, --proto_path=PATH   Specify the directory in which to search for

imports.  May be specified multiple times;

directories will be searched in order.  If not

given, the current working directory is used.

--version                   Show version info and exit.

-h, --help                  Show this text and exit.

--encode=MESSAGE_TYPE       Read a text-format message of the given type

from standard input and write it in binary

to standard output.  The message type must

be defined in PROTO_FILES or their imports.

--decode=MESSAGE_TYPE       Read a binary message of the given type from

standard input and write it in text format

to standard output.  The message type must

be defined in PROTO_FILES or their imports.

--decode_raw                Read an arbitrary protocol message from

standard input and write the raw tag/value

pairs in text format to standard output.  No

PROTO_FILES should be given when using this

flag.

-oFILE,                     Writes a FileDescriptorSet (a protocol buffer,

--descriptor_set_out=FILE defined in descriptor.proto) containing all of

the input files to FILE.

--include_imports           When using --descriptor_set_out, also include

all dependencies of the input files in the

set, so that the set is self-contained.

--error_format=FORMAT       Set the format in which to print errors.

FORMAT may be 'gcc' (the default) or 'msvs'

(Microsoft Visual Studio format).

--plugin=EXECUTABLE         Specifies a plugin executable to use.

Normally, protoc searches the PATH for

plugins, but you may specify additional

executables not in the path using this flag.

Additionally, EXECUTABLE may be of the form

NAME=PATH, in which case the given plugin name

is mapped to the given executable even if

the executable's own name differs.

--cpp_out=OUT_DIR           Generate C++ header and source.

--java_out=OUT_DIR          Generate Java source file.

--javamicro_out=OUT_DIR     Generate Java source file micro runtime.

--python_out=OUT_DIR        Generate Python source file.

atree

./atree: At least one -f option must be supplied.

Usage: atree OPTIONS

Options:

-f FILELIST    Specify one or more files containing the

list of files to copy.

-I INPUTDIR    Specify one or more base directories in

which to look for the files

-o OUTPUTDIR   Specify the directory to copy all of the

output files to.

-l             Use hard links instead of copying the files.

-m DEPENDENCY  Output a make-formatted file containing the list.

of files included.  It sets the variable ATREE_FILES.

-v VAR=VAL     Replaces ${VAR} by VAL when reading input files.

-d             Verbose debug mode.

FILELIST file format:

The FILELIST files contain the list of files that will end up

in the final OUTPUTDIR.  Atree will look for files in the INPUTDIR

directories in the order they are specified.

In a FILELIST file, comment lines start with a #.  Other lines

are of the format:

[rm|strip] DEST

SRC [strip] DEST

-SRCPATTERN

DEST should be path relative to the output directory.

'rm DEST' removes the destination file and fails if it's missing.

'strip DEST' strips the binary destination file.

If SRC is supplied, the file names can be different.

SRCPATTERN is a pattern for the filenames.

bb2sym

./sdk/emulator/qtools/bb2sym.cpp

./bb2sym: invalid option -- 'h'

Usage: ./bb2sym [options] trace_file elf_file

-e :kernel exclude all kernel symbols

-e :libs   exclude all library symbols

-e <func>  exclude function <func>

-e <pid>   exclude process <pid>

-i :kernel include all kernel symbols

-i :libs   include all library symbols

-i <func>  include function <func>

-i <pid>   include process <pid>

-l :kernel lump all the kernel symbols together

-l :libs   lump all the library symbols together

-m         do not demangle C++ symbols (m for 'mangle')

-r <root>  use <root> as the path for finding ELF executables

bb_dump

./sdk/emulator/qtools/bb_dump.cpp

./bb_dump: invalid option -- 'h'

Usage: ./bb_dump [options] trace_file elf_file

-e :kernel exclude all kernel symbols

-e :libs   exclude all library symbols

-e <func>  exclude function <func>

-e <pid>   exclude process <pid>

-i :kernel include all kernel symbols

-i :libs   include all library symbols

-i <func>  include function <func>

-i <pid>   include process <pid>

-l :kernel lump all the kernel symbols together

-l :libs   lump all the library symbols together

-m         do not demangle C++ symbols (m for 'mangle')

-r <root>  use <root> as the path for finding ELF executables

bbprof

./sdk/emulator/qtools/bbprof.cpp

bison

Bison是一种通用目的的分析器生成器。它将LALR(1)上下文无关文法的描述转化成分析该文法的C程序。 一旦你精通Bison,你可以用它生成从简单的桌面计算器到复杂的程序设计语言等等许多语言的分析器。

  Bison向上兼容Yacc;所有书写正确的Yacc语法都应该可以不加更改地与Bison一起工作, 熟悉Yacc的人能毫不费力地使用Bison。

bsdiff

bsdiff是二进制差分工具

/**-

* Copyright 2003,2004 Colin Percival

* All rights reserved

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted providing that the following conditions

* are met:

* 1. Redistributions of source code must retain the above copyright

*    notice, this list of conditions and the following disclaimer.

* 2. Redistributions in binary form must reproduce the above copyright

*    notice, this list of conditions and the following disclaimer in the

*    documentation and/or other materials provided with the distribution.

*

* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR

* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED

* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

* ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY

* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,

* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING

* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

* POSSIBILITY OF SUCH DAMAGE.

*

* Changelog:

* 2005-04-26 - Define the header as a C structure, add a CRC32 checksum to

*              the header, and make all the types 32-bit.

*                --Benjamin Smedberg <benjamin@smedbergs.us>

* 2009-03-31 - Change to use Streams.  Move CRC code to crc.{h,cc}

*              Changed status to an enum, removed unused status codes.

*                --Stephen Adams <sra@chromium.org>

*/

bspatch

bspatch是补丁合成工具

cfassembler

check_stack

Usage: ./check_stack [options] trace_name elf_file

-e :kernel exclude all kernel symbols

-e :libs   exclude all library symbols

-e <func>  exclude function <func>

-e <pid>   exclude process <pid>

-i :kernel include all kernel symbols

-i :libs   include all library symbols

-i <func>  include function <func>

-i <pid>   include process <pid>

-l :kernel lump all the kernel symbols together

-l :libs   lump all the library symbols together

-m         do not demangle C++ symbols (m for 'mangle')

-r <root>  use <root> as the path for finding ELF executables

check_trace

Usage: ./check_trace [options] trace_file elf_file

-e :kernel exclude all kernel symbols

-e :libs   exclude all library symbols

-e <func>  exclude function <func>

-e <pid>   exclude process <pid>

-i :kernel include all kernel symbols

-i :libs   include all library symbols

-i <func>  include function <func>

-i <pid>   include process <pid>

-l :kernel lump all the kernel symbols together

-l :libs   lump all the library symbols together

-m         do not demangle C++ symbols (m for 'mangle')

-r <root>  use <root> as the path for finding ELF executables

clang

clang是苹果公司开发的C语言、C++、Objective C、Objective C++语言的轻量级编译器。源代码发布于BSD协议下。

OVERVIEW: clang "gcc-compatible" driver

USAGE: clang [options] <inputs>

OPTIONS:

-###                    Print the commands to run for this compilation

--analyze               Run the static analyzer

--help                  Display available options

--relocatable-pch       Build a relocatable precompiled header

-E                      Only run the preprocessor

-ObjC++                 Treat source input files as Objective-C++ inputs

-ObjC                   Treat source input files as Objective-C inputs

-Qunused-arguments      Don't emit warning for unused driver arguments

-S                      Only run preprocess and compilation steps

-Wa,<arg>               Pass the comma separated arguments in <arg> to the assembler

-Wl,<arg>               Pass the comma separated arguments in <arg> to the linker

-Wp,<arg>               Pass the comma separated arguments in <arg> to the preprocessor

-Xanalyzer <arg>        Pass <arg> to the static analyzer

-Xassembler <arg>       Pass <arg> to the assembler

-Xclang <arg>           Pass <arg> to the clang compiler

-Xlinker <arg>          Pass <arg> to the linker

-Xpreprocessor <arg>    Pass <arg> to the preprocessor

-arcmt-migrate-emit-errors

Emit ARC errors even if the migrator can fix them

-arcmt-migrate-report-output <value>

Output path for the plist report

-c                      Only run preprocess, compile, and assemble steps

-emit-ast               Emit Clang AST files for source inputs

-emit-llvm              Use the LLVM representation for assembler and object files

-fcatch-undefined-behavior

Generate runtime checks for undefined behavior.

-flimit-debug-info      Limit debug information produced to reduce size of debug binary

-ftrap-function=<value> Issue call to specified function rather than a trap instruction

-o <file>               Write output to <file>

-pipe                   Use pipes between commands, when possible

-print-file-name=<file> Print the full library path of <file>

-print-libgcc-file-name Print the library path for "libgcc.a"

-print-prog-name=<name> Print the full program path of <name>

-print-search-dirs      Print the paths used for finding libraries and programs

-rewrite-objc           Rewrite Objective-C source to C++

-save-temps             Save intermediate compilation results

-time                   Time individual commands

-verify                 Verify output using a verifier.

-v                      Show commands to run and use verbose output

-working-directory <value>

Resolve file paths relative to the specified directory

-x <language>           Treat subsequent input files as having type <language>

clang-tblgen

USAGE: clang-tblgen [options] <input file>

OPTIONS:

-I=<directory>                     - Directory of include files

-d=<filename>                      - Dependency filename

Action to perform:

-gen-opt-parser-defs             - Generate option definitions

-gen-opt-parser-impl             - Generate option parser implementation

-gen-clang-attr-classes          - Generate clang attribute clases

-gen-clang-attr-impl             - Generate clang attribute implementations

-gen-clang-attr-list             - Generate a clang attribute list

-gen-clang-attr-pch-read         - Generate clang PCH attribute reader

-gen-clang-attr-pch-write        - Generate clang PCH attribute writer

-gen-clang-attr-spelling-list    - Generate a clang attribute spelling list

-gen-clang-attr-late-parsed-list - Generate a clang attribute LateParsed list

-gen-clang-diags-defs            - Generate Clang diagnostics definitions

-gen-clang-diag-groups           - Generate Clang diagnostic groups

-gen-clang-diags-index-name      - Generate Clang diagnostic name index

-gen-clang-decl-nodes            - Generate Clang AST declaration nodes

-gen-clang-stmt-nodes            - Generate Clang AST statement nodes

-gen-clang-sa-checkers           - Generate Clang Static Analyzer checkers

-gen-arm-neon                    - Generate arm_neon.h for clang

-gen-arm-neon-sema               - Generate ARM NEON sema support for clang

-gen-arm-neon-test               - Generate ARM NEON tests for clang

-help                              - Display available options (-help-hidden for more)

-o=<filename>                      - Output filename

-version                           - Display the version of this program

cmu2nuance

//

// This converts the data found at http://www.speech.cs.cmu.edu/cgi-bin/cmudict

// into the *.ok format used by Nuance.

// We use the file c0.6, which corresponds to (v. 0.6).

//

// to run: make cmu2nuance && ./cmu2nuance <c0.6 >c0.6.ok

//

// TODO: look at generation of 'L', ')', and ','

//

coverage

// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -analyzer-store=region -analyzer-max-loop 4 -verify %s

./external/clang/test/Analysis/coverage.c

./sdk/emulator/qtools/coverage.cpp

Usage: ./coverage [options] trace_file elf_file

-e :kernel exclude all kernel symbols

-e :libs   exclude all library symbols

-e <func>  exclude function <func>

-e <pid>   exclude process <pid>

-i :kernel include all kernel symbols

-i :libs   include all library symbols

-i <func>  include function <func>

-i <pid>   include process <pid>

-l :kernel lump all the kernel symbols together

-l :libs   lump all the library symbols together

-m         do not demangle C++ symbols (m for 'mangle')

-r <root>  use <root> as the path for finding ELF executables

dalvik

Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。

dalvik/vm/dalvik

dalvikvm

/*

* Command-line invocation of the Dalvik VM.

*/

dalvik/dalvikvm/Main.cpp

当Android启动时,DalvikVM监视所有的程序(APK文件)和框架,并且为他们创建一个依存关系树。DalvikVM通过这个依存关系树来为每个程序优化代码并存储在Dalvik缓存中。这样,所有程序在运行时都会使用优化过的代码。这就是当你刷一个新的ROM时,有时候第一次启动时间非常非常长的原因。当一个程序(或者框架库)发生变更,DalvikVM将会重新优化代码并且再次将其存在缓存中。在cache/dalvik-cache是存放system上的程序生成的dex文件,而data/dalvik-cache则是存放data/app生成的dex文件。

dasm

/**

* This class represents the public API for Dasm. It has two main methods (readD

* and write) and few utility methods. To compile .d file: -create DAsm instance

* -call readD() to read and parse content of .d file -call write() to write out

* binary representation of .d file. .d file can contain several classes and/or

* intefaces declarations.

*/

ddms

 DDMS 的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。

  DDMS将搭建起IDE与测试终端(Emulator或者connected device)的链接,他们应用各自独立的端口监听调试信息,DDMS可以实时监测到测试终端的连接情况.当有新的测试终端连接后,DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的;

  DDMS监听第一个终端APP进程的端口为8600,App进程将分配8601,如果有更多的终端或者更多App进程将按照这个顺序依次类推.DDMS通过8700端口接收所有终端的指令.

dexdeps

dexdeps -- DEX external dependency dump

This tool dumps a list of fields and methods that a DEX file uses but does

not define.  When combined with a list of public APIs, it can be used to

determine whether an APK is accessing fields and calling methods that it

shouldn't be.  It may also be useful in determining whether an application

requires a certain minimum API level to execute.

Basic usage:

dexdeps [options] <file.{dex,apk,jar}> ...

For zip archives (including .jar and .apk), dexdeps will look for a

"classes.dex" entry.

Supported options are:

--format={brief,xml}

Specifies the output format.

"brief" produces one line of output for each field and method.  Field

and argument types are shown as descriptor strings.

"xml" produces a larger output file, readable with an XML browser.  Types

are shown in a more human-readable form (e.g. "[I" becomes "int[]").

--just-classes

Indicates that output should only include a list of classes, as

opposed to also listing fields and methods.

dexdump

/*

* The "dexdump" tool is intended to mimic "objdump".  When possible, use

* similar command-line arguments.

*

* TODO: rework the "plain" output format to be more regexp-friendly

* Differences between XML output and the "current.xml" file:

* - classes in same package are not all grouped together; generally speaking

*   nothing is sorted

* - no "deprecated" on fields and methods

* - no "value" on fields

* - no parameter names

* - no generic signatures on parameters, e.g. type="java.lang.Class&lt;?&gt;"

* - class shows declared fields and methods; does not show inherited fields

*/

dalvik/dexdump/DexDump.cpp

dexlist

/* List all methods in all concrete classes in one or more DEX files.*/

dalvik/dexlist/DexList.cpp

dexopt

/*

* Command-line DEX optimization and verification entry point.

*

* There are three ways to launch this:

* (1) From the VM.  This takes a dozen args, one of which is a file

*     descriptor that acts as both input and output.  This allows us to

*     remain ignorant of where the DEX data originally came from.

* (2) From installd or another native application.  Pass in a file

*     descriptor for a zip file, a file descriptor for the output, and

*     a filename for debug messages.  Many assumptions are made about

*     what's going on (verification + optimization are enabled, boot

*     class path is in BOOTCLASSPATH, etc).

* (3) On the host during a build for preoptimization. This behaves

*     almost the same as (2), except it takes file names instead of

*     file descriptors.

*

* There are some fragile aspects around bootclasspath entries, owing

* largely to the VM's history of working on whenever it thought it needed

* instead of strictly doing what it was told.  If optimizing bootclasspath

* entries, always do them in the order in which they appear in the path.

*/

dictTest

external-srec/tools/dictTest/dictTest.c

dmtracedump

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/dmtracedump.html

dmtracedump is a tool that gives you an alternate way of generating graphical call-stack diagrams from trace log files (instead of using Traceview).

This document is a reference to the available command line options. For more information on generating trace logs, seeProfiling with Traceview and dmtracedump.

The usage for dmtracedump is:

dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] <trace-base-name>

The tool then loads trace log data from <trace-base-name>.data and <trace-base-name>.key. The table below lists the options for dmtracedump.

Option

Description

-d <trace-base-name>

Diff with this trace name

-g <outfile>

Generate output to <outfile>

-h

Turn on HTML output

-o

Dump the trace file instead of profiling

-d <trace-base-name>

URL base to the location of the sortable javascript file

-t <percent>

Minimum threshold for including child nodes in the graph (child's inclusive time as a percentage of parent inclusive time). If this option is not used, the default threshold is 20%.

使用细节:

http://www.kuqin.com/mobile/20110828/264079.html

draw9patch

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/draw9patch.html

The Draw 9-patch tool allows you to easily create a NinePatch graphic using a WYSIWYG editor.

For an introduction to Nine-patch graphics and how they work, please read the section about Nine-patch in the 2D Graphics document.

Here's a quick guide to create a Nine-patch graphic using the Draw 9-patch tool. You'll need the PNG image with which you'd like to create a NinePatch.

1.       From a terminal, launch the draw9patch application from your SDK /tools directory.

2.       Drag your PNG image into the Draw 9-patch window (or File >Open 9-patch... to locate the file). Your workspace will now open.

The left pane is your drawing area, in which you can edit the lines for the stretchable patches and content area. The right pane is the preview area, where you can preview your graphic when stretched.

3.       Click within the 1-pixel perimeter to draw the lines that define the stretchable patches and (optional) content area. Right-click (or hold Shift and click, on Mac) to erase previously drawn lines.

4.       When done, select File > Save 9-patch...

Your image will be saved with the .9.png file name.

Note: A normal PNG file (*.png) will be loaded with an empty one-pixel border added around the image, in which you can draw the stretchable patches and content area. A previously saved 9-patch file (*.9.png) will be loaded as-is, with no drawing area added, because it already exists.

Optional controls include:

·         Zoom: Adjust the zoom level of the graphic in the drawing area.

·         Patch scale: Adjust the scale of the images in the preview area.

·         Show lock: Visualize the non-drawable area of the graphic on mouse-over.

·         Show patches: Preview the stretchable patches in the drawing area (pink is a stretchable patch).

·         Show content: Highlight the content area in the preview images (purple is the area in which content is allowed).

·         Show bad patches: Adds a red border around patch areas that may produce artifacts in the graphic when stretched. Visual coherence of your stretched image will be maintained if you eliminate all bad patches.

在另一份文档中有比较详细的说明

使用细节:http://blog.sina.com.cn/s/blog_7501670601010mfl.html

dumpeventlog

# Set up prog to be the path of this script, including following symlinks,
# and set up progdir to be the fully-qualified pathname of its directory.

sdk/dumpeventlog/etc/dumpeventlog

dump_regions

sdk/emulator/qtools/dump_regions.cpp

dx

http://blog.csdn.net/electricity/article/details/6543676

dx是将java的classes文件编译为字节码dex文件


dx --dex --output=<要生成的classes.dex路径> <要处理的类文件的路径>

dx --dex --output=D:/HelloWorld/bin/classes.dex D:/HelloWorld/bin

dx-tests

cts/tools/dx-tests/dx-tests.html

edify

刷机脚本http://productbbs.it168.com/thread-511466-1-1.html

Edify语法简介(Updater-Script) 
这是Android系统来运行updater-scripts的Edify语言的基本介绍(常说的刷机脚本)。
大部分的Edify命名都是函数,当调用这些函数结束的时候,会返回数据给脚本。当然,你也可以使用这些函数的返回值来确认成功与否,例如:
ifelse(mount("yaffs2", "MTD", "system", "/system") == "system", ui_print("Successfully Mounted!"), ui_print("Mount Failed!");
这个命令会尝试去挂载命名为“system”的“MTD”分区到“/system”。如果挂载成功,脚本会显示“Successfully Mounted!”,否则会显示“Mount Failed!”。
现面是用在Edify的Updater-script中的函数例子:
1:函数名称: mount
   函数语法: mount(fs_type, partition_type, location, mount_point)
   参数详解: fs_type-----------------"yaffs2"或 "ext4"
   partition_type----------"MTD" 或 "EMMC"
   location-----------------分区(partition)或驱动器(device)
   mount_poin------------挂载文件系统的目标文件夹(target folder to mount FS)
   作用解释:挂载一个文件系统到指定的挂载点
   返回值:挂载成功则返回挂载点,失败返回null
   函数示例: mount("MTD", "system", "/system");挂载system分区,设置返回指针"/system”
    mount("vfat", "/dev/block/mmcblk1p2", "/system");挂载/dev/block/mmcblk1p2,返回指针"/system”
2:函数名称: is_mounted
   函数语法: is_mounted(mount_point)
   参数详解: mount_point-----------字符串,检查是否已经挂载的挂载点
   作用解释:检查文件系统是否挂载
   返回值:挂载成功则返回挂载点,失败返回null
   函数示例:
3:函数名称: unmount
   函数语法: unmount(mount_point)
   参数详解: mount_point-----------字符串,要解除挂载的挂载点
   作用解释:解除文件系统挂载
   返回值:解除挂载成功则返回挂载点,失败返回null
   函数示例: unmount("/system");卸载/system分区
4:函数名称: format
   函数语法: format(fs_type, partition_type, location)
   参数详解: fs_type-----------------字符串,数据为"yaffs2"或 "ext4"
   partition_type----------字符串, "MTD"或 "EMMC"
   location-----------------字符串,分区(partition)或驱动器(device)
   作用解释:格式化为指定的文件系统
   函数示例: format("MTD", "system");格式化system分区
5:函数名称: delete
   函数语法: delete(file1, file2, ..., fileN)
   参数详解:字符串,要删除的文件
   作用解释:删除一个文件。最少指定一个文件;多个文件可以做为多个参数指定
   函数示例: delete("/data/zipalign.log");删除文件/data/zipalign.log
6:函数名称: delete_recursive
   函数语法: delete_recursive(dir1, dir2,...,dirN)
   参数详解:字符串,要递归删除的目录
   作用解释:删除文件夹及其包含的所有内容。最少指定1个目录;多个目录可以做为多个参数指定
   函数示例: delete_recursive("/data/dalvik-cache");删除文件夹/data/dalvik-cache
7:函数名称: show_progress
   函数语法: show_progress(frac, sec)
   参数详解: frac----------------------进度完成数值
   Sec----------------------总秒数
   作用解释:显示在Recovery系统中进度
   函数示例: show_progress(0.1, 10);show_progress下面的操作可能进行10s,完成后进度条前进0.1(也就是10%)
8:函数名称: set_progress
   函数语法: set_prograss(frac)
   参数详解: frac---------------------进度数值
   函数示例: 
9:函数名称:
package_extract_dir
   函数语法: package_extract_dir(package_path, destination_path)
   参数详解: package_path----------字符串,升级包内要提取的目录
   destination_path--------字符串,提取文件的目标目录
   作用解释:提取升级包内目录中的所有文件到指定的目标目录
   函数示例: package_extract_dir("system", "/system");释放ROM包里system文件夹下所有文件和子文件夹至/system
10:函数名称: package_extract_file
     函数语法: package_extract_file(package_path)或 package_extract_file(package_path, destination_path)
     参数详解: package_path----------字符串,升级包内要提取的文件
     destination_path-------字符串,提取文件的目标目录
     作用解释:提取升级包内的单个文件到指定的目标目录
     函数示例: package_extract_file("my.zip", "/system");解压ROM包里的my.zip文件至/system
11:函数名称: file_getprop
     函数语法: file_getprop(file, key)
     参数详解: file----------------------字符串,要检查的文件名
     Key----------------------字符串,返回数据中的文件的键名字
     作用解释:在格式"key"="value"的文件中取得文件属性值
     函数示例: 
12:函数名称: symlink
     函数语法: symlink(target, src1, src2, ..., srcN)
     参数详解: target-------------------字符串,符号链接的目标
     srcX ---------------------字符串,要创建的符号链接的目标点
     作用解释:在创建新的符号链接之前,要断开已经存在的符号链接
     函数示例: symlink("toolbox", "/system/bin/ps");建立指向toolbox的符号链接/system/bin/ps
13:函数名称: set_perm
     函数语法: set_perm(uid, gid, mode, file1, file2, ..., fileN)
     参数详解: uid----------------------用户ID(user id)
     Gid----------------------用户组ID(group id)
     Mode--------------------权限模式(permission mode)
     fileX---------------------要设置许可的文件(file to set permission on)
     作用解释:设置单个文件或一系列文件的权限,最少指定1个文件,前4个参数是必须的
     函数示例: set_perm(0,2000,0550, "system/etc/init.goldfish.sh");设置手机system中的etc/init.goldfish.sh的用户为root,用户组为shell,所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限)
这里0代表用户为root
2000代表用户组为shell
我们来说明0550这组数据,这组数据的最后三位550,分别代表“所有者\组用户\其他用户”的权限,也就是我们在RE管理中“用户\群组\其他”三行。我们以XXX来表示这三组权限,其中:
×=4读的权限
×=2写的权限
×=1执行的权限
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7
的八进制数。
例如,如果想让某个文件的属主有"读/写"二种权限,需要把4(可读)+2(可写)=6(读/写)。若要rwx属性则4+2+1=7;若要rw-属性则4+2=6;若要r-x属性则
4+1=5。
常用修改权限的命令:
Set_perm 0 0 0600 ××× (只有所有者有读和写的权限)
Set_perm 0 0 0644 ××× (所有者有读和写的权限,组用户只有读的权限)
Set_perm 0 0 0700 ××× (只有所有者有读和写以及执行的权限)
Set_perm 0 0 0666 ××× (每个人都有读和写的权限)
Set_perm 0 0 0777 ××× (每个人都有读和写以及执行的权限)
14:函数名称: set_perm_recursive
     函数语法: set_perm_recursive(uid, gid, dirmode, filemode, dir1, dir2, ...dirN)
     参数详解: uid----------------------用户ID(user id)
     Gid----------------------用户组ID(group id)
     Dirmode----------------指定目录内的目录的权限
     Filemode---------------指定目录内的文件的权限
     dirX---------------------要设置权限的目标
     作用解释:设置单个目录或一系列目录的里面的所有文件的权限,最少指定1个目录,5个参数都是必须的
     函数示例: set_perm_recursive 0 0 0755 0644 SYSTEM:app;设置手机system/app文件夹及其中文件的用户为root,用户组为root,app文件夹权限为所有者可
以进行读、写、执行操作,其他用户可以进行读取和执行操作,其中的文件的权限为所有者可以进行读写操作,其他用户可以进行读取操作
15:函数名称: getprop
     函数语法: getprop(key)
     参数详解: key---------------------字符串,想要系统返回的属性
     作用解释:这个函数是用来返指定的属性的值。它是用来从build.props文件中查询手机的信息的。
     函数示例: 
16:函数名称: write_raw_image
     函数语法: write_raw_image(file, partition)
     参数详解: file----------------------字符串,要读取的Img源文件
     Partition-----------------字符串,要写入Img文件的目标分区
     作用解释:这个函数是用来写Img文件到分区
     函数示例: write_raw_image("/tmp/boot.img", "boot")将yaffs2格式的boot包直接写入boot分区
17:函数名称: apply_patch
     函数语法: apply_patch(srcfile, tgtfile, tgtsha1, tgtsize, sha1_1, patch_1, ..., sha1_x, patch1_x)
     参数详解: srcfile-------------------字符串,要打补丁的源文件(要读入的文件)
     Tgtfile-------------------字符串,补丁文件要写入的目标文件
     tgtsha1-----------------字符串,写入补丁文件的目标文件的sha1哈希值
     sha1_x------------------字符串,要写入目标文件的补丁数据的sha1哈希值      patch1_x----------------字符串,实际上应用到目标文件的补丁
     作用解释:这个函数是用来打补丁到文件。
     函数示例:
18:函数名称: apply_patch_check
     函数语法: apply_patch_check(file, sha1_1, ..., sha1_x)
     参数详解: file----------------------字符串,要检查的文件
     sha1_x------------------要检查的哈希值
     作用解释:检查文件是否已经被打补丁,或者能不能被打补丁。需要检查“applypatch_check”函数调用的源代码。
     函数示例:
19:函数名称: apply_patch_space
     函数语法: apply_patch_space(bytes)
     参数详解: bytes-------------------检查的字节的数字
     作用解释:检查缓存来确定是否有足够的空间来写入补丁文件并返回一些数据。
     函数示例:
20:函数名称: read_file
     函数语法: read_file(filename)
     参数详解: filename----------------字符串,要读取内容的文件名
     作用解释:这个函数返回文件的内容
     函数示例:
21:函数名称: sha1_check
     函数语法: sha1_check(data)或 sha1_check(data, sha1_hex, ..., sha1_hexN)
     参数详解: data---------------------要计算sha1哈希值的文件的内容-必须是只读文件格式
     sha1_hexN--------------文件数据要匹配的特定的十六进制sha1_hex哈希值字符串
     作用解释:如果只指定data参数,这个函数返回data参数的十六进制sha1_hex哈希值字符串。其他参数用来确认你检查的文件是不是列表中的哈希值的一个。它返回匹配的哈希值,或者在没有匹配任何哈希值时返回空。 
     函数示例:
22:函数名称: ui_print
     函数语法: ui_print(msg1, ..., msgN)
     参数详解: msg----------------------字符串,要处理过程中输出给用户的信息
     作用解释:在脚本运行的时候,在控制台显示的信息。最少要指定1个参数,你可以指定额外的msg参数,并且它们会连接起来输了
     函数示例: ui_print("It's ready!");屏幕打印It's ready!
23:函数名称: run_program
     函数语法: run_program(prog, arg1, .., argN)
     参数详解: prog--------------------字符串,要执行的程序
     argN--------------------字符串,要执行的程序的运行参数
     作用解释:以指定的参执行程序
     函数示例: run_program("/system/xbin/installbusybox.sh");运行installbusybox.sh脚本文件
24:函数名称: ifelse
     函数语法: ifelse(condition, truecondition, falsecondition)
     参数详解: condition----------------要运算的表达式
     Truecondition-----------当值为True时执行的 Edify脚本块
     Falsecodnition-----------当值为False时执行的 Edify脚本块
     作用解释:这是If-then结构的 Edify脚本语言。在真条件或非条件下语句可以是单条Edify命令或者脚本块。脚本块可以用圆括号来界定,用分号来隔开。
     函数示例:
25:函数名称: abort
     函数语法: abort()
     参数详解:没有参数
     作用解释:中止脚本执行
     函数示例:
26:函数名称: assert
     函数语法: assert(condition)
     参数详解: condition---------------boolean
     作用解释:如果condition参数的计算结果为False,则停止脚本执行,否则继续执行脚本
     函数示例: assert(package_extract_file("boot.img","/tmp/boot.img"),write_raw_image("/tmp/boot.img","boot"),delete("/tmp/boot.img"))
执行package_extract_file,如果不返回错误则执行write_raw_image,如果write_raw_image不出错则执行delete

http://blog.csdn.net/zxb452000/article/details/7917860

快捷方式  等效命令
2 --wipe_cache格式化cache
3 --wipe_userdata格式化用户数据
4 --wipe_udisk格式化U盘数据
6 --recover_image=BACKUP:update.img恢复出厂设置,从backup还原所有固件
7 --update_image=SDCARD:update.img默认路径,从SD卡根目录下固件update.img升级
9 --update_kernel单独升级kernel,从SD卡update.img中取得kernel固件
10 --update_boot单独升级boot,从SD卡update.img中取得boot固件
11 --update_system单独升级system,从SD卡update.img中取得system固件
12 --update_recovery单独升级recovery,从SD卡update.img中取得recovery固件
13 --update_backup单独升级backup分区,拷贝SD卡的update.img到backup
14 --update_parameter单独升级parameter,从SD卡update.img中取得parameter
15 --update_loader单独升级loader,从SD卡update.img中取得loader
16 (user define path name) 手动输入升级固件路径及固件名

elftree

development/tools/elftree/elftree.c

Usage: elftree [ -s | -h ] elf-file

-S  Duplicate entire subtree when a duplicate is found

-P  Show duplicates, but only include subtree once

-H  Show each library at most once, even if duplicated

-h  Show this help screen

emulator

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/emulator.html

The Android SDK includes a mobile device emulator — a virtual mobile device that runs on your computer. The emulator lets you develop and test Android applications without using a physical device.

This document is a reference to the available command line options and the keyboard mapping to device keys. For a complete guide to using the Android Emulator, see Using the Android Emulator.

Keyboard Commands


Table 1 summarizes the mappings between the emulator keys and the keys of your keyboard.

Table 1. Emulator keyboard mapping

Emulated Device Key

Keyboard Key

Home

HOME

Menu (left softkey)

F2 or Page-up button

Star (right softkey)

Shift-F2 or Page Down

Back

ESC

Call/dial button

F3

Hangup/end call button

F4

Search

F5

Power button

F7

Audio volume up button

KEYPAD_PLUS, Ctrl-F5

Audio volume down button

KEYPAD_MINUS, Ctrl-F6

Camera button

Ctrl-KEYPAD_5, Ctrl-F3

Switch to previous layout orientation (for example, portrait, landscape)

KEYPAD_7, Ctrl-F11

Switch to next layout orientation (for example, portrait, landscape)

KEYPAD_9, Ctrl-F12

Toggle cell networking on/off

F8

Toggle code profiling

F9 (only with -trace startup option)

Toggle fullscreen mode

Alt-Enter

Toggle trackball mode

F6

Enter trackball mode temporarily (while key is pressed)

Delete

DPad left/up/right/down

KEYPAD_4/8/6/2

DPad center click

KEYPAD_5

Onion alpha increase/decrease

KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/)

Command Line Parameters


The emulator supports a variety of options that you can specify when launching the emulator, to control its appearance or behavior. Here's the command-line syntax of the options available to the emulator program:

emulator -avd <avd_name> [-<option> [<value>]] ... [-<qemu args>]

Table 2. Emulator command line parameters

s

Category

Option

Description

Comments

AVD

-avd <avd_name> or 
@<avd_name>

Required. Specifies the AVD to load for this emulator instance.

You must create an AVD configuration before launching the emulator. For information, see Managing AVDs with AVD Manager.

Disk Images

-cache <filepath>

Use <filepath> as the working cache partition image.

An absolute or relative path to the current working directory. If no cache file is specified, the emulator's default behavior is to use a temporary file instead.

For more information on disk images, use-help-disk-images.

-data <filepath>

Use <filepath> as the working user-data disk image.

Optionally, you can specify a path relative to the current working directory. If -datais not used, the emulator looks for a file named userdata-qemu.img in the storage area of the AVD being used (see -avd).

-initdata <filepath>

When resetting the user-data image (through -wipe-data), copy the contents of this file to the new user-data disk image. By default, the emulator copies the<system>/userdata.img.

Optionally, you can specify a path relative to the current working directory. See also-wipe-data.

For more information on disk images, use-help-disk-images.

-nocache

Start the emulator without a cache partition.

See also -cache <file>.

-ramdisk <filepath>

Use <filepath> as the ramdisk image.

Default value is<system>/ramdisk.img.

Optionally, you can specify a path relative to the current working directory. For more information on disk images, use -help-disk-images.

-sdcard <filepath>

Use <file> as the SD card image.

Default value is <system>/sdcard.img.

Optionally, you can specify a path relative to the current working directory. For more information on disk images, use -help-disk-images.

-wipe-data

Reset the current user-data disk image (that is, the file specified by -datadir and -data, or the default file). The emulator deletes all data from the user data image file, then copies the contents of the file at -inidata data to the image file before starting.

See also -initdata.

For more information on disk images, use-help-disk-images.

Debug

-debug <tags>

Enable/disable debug messages for the specified debug tags.

<tags> is a space/comma/column-separated list of debug component names. Use -help-debug-tags to print a list of debug component names that you can use.

-debug-<tag>

Enable/disable debug messages for the specified debug tag.

Use -help-debug-tags to print a list of debug component names that you can use in <tag>.

-debug-no-<tag>

Disable debug messages for the specified debug tag.

-logcat <logtags>

Enable logcat output with given tags.

If the environment variable ANDROID_LOG_TAGS is defined and not empty, its value will be used to enable logcat output by default.

-shell

Create a root shell console on the current terminal.

You can use this command even if the adb daemon in the emulated system is broken. Pressing Ctrl-c from the shell stops the emulator instead of the shell.

-shell-serial <device>

Enable the root shell (as in -shell and specify the QEMU character device to use for communication with the shell.

<device> must be a QEMU device type. See the documentation for '-serial dev' athttp://wiki.qemu.org/download/qemu-doc.html for a list of device types.

Here are some examples:

·         -shell-serial stdio is identical to-shell

·         -shell-serial tcp::4444,server,nowait lets you communicate with the shell over TCP port 4444

·         -shell-serial fdpair:3:6 lets a parent process communicate with the shell using fds 3 (in) and 6 (out)

·         -shell-serial fdpair:0:1 uses the normal stdin and stdout fds, except that QEMU won't tty-cook the data.

-show-kernel <name>

Display kernel messages.

-trace <name>

Enable code profiling (press F9 to start), written to a specified file.

-verbose

Enable verbose output.

Equivalent to -debug-init.

You can define the default verbose output options used by emulator instances in the Android environment variable ANDROID_VERBOSE. Define the options you want to use in a comma-delimited list, specifying only the stem of each option: -debug-<tags>.

Here's an example showing ANDROID_VERBOSE defined with the -debug-init and -debug-modem options:

ANDROID_VERBOSE=init,modem

For more information about debug tags, use <-help-debug-tags>.

Media

-audio <backend>

Use the specified audio backend.

-audio-in <backend>

Use the specified audio-input backend.

-audio-out <backend>

Use the specified audio-output backend.

-noaudio

Disable audio support in the current emulator instance.

-radio <device>

Redirect radio modem interface to a host character device.

-useaudio

Enable audio support in the current emulator instance.

Enabled by default.

Network

-dns-server <servers>

Use the specified DNS server(s).

The value of <servers> must be a comma-separated list of up to 4 DNS server names or IP addresses.

-http-proxy <proxy>

Make all TCP connections through a specified HTTP/HTTPS proxy

The value of <proxy> can be one of the following:
http://<server>:<port>
http://<username>:<password>@<server>:<port>

The http:// prefix can be omitted. If the-http-proxy <proxy> command is not supplied, the emulator looks up thehttp_proxy environment variable and automatically uses any value matching the <proxy> format described above.

-netdelay <delay>

Set network latency emulation to <delay>.

Default value is none. See the table inNetwork Delay Emulation for supported<delay> values.

-netfast

Shortcut for -netspeed full -netdelay none

-netspeed <speed>

Set network speed emulation to <speed>.

Default value is full. See the table inNetwork Speed Emulation for supported<speed> values.

-port <port>

Set the console port number for this emulator instance to<port>.

The console port number must be an even integer between 5554 and 5584, inclusive.<port>+1 must also be free and will be reserved for ADB.

-report-console <socket>

Report the assigned console port for this emulator instance to a remote third party before starting the emulation.

<socket> must use one of these formats:

tcp:<port>[,server][,max=<seconds>]
unix:<port>[,server][,max=<seconds>]

Use -help-report-console

to view more information about this topic.

System

-cpu-delay <delay>

Slow down emulated CPU speed by <delay>

Supported values for <delay> are integers between 0 and 1000.

Note that the <delay> does not correlate to clock speed or other absolute metrics — it simply represents an abstract, relative delay factor applied non-deterministically in the emulator. Effective performance does not always scale in direct relationship with <delay> values.

-gps <device>

Redirect NMEA GPS to character device.

Use this command to emulate an NMEA-compatible GPS unit connected to an external character device or socket. The format of <device> must be QEMU-specific serial device specification. See the documentation for 'serial -dev' athttp://wiki.qemu.org/download/qemu-doc.html.

-nojni

Disable JNI checks in the Dalvik runtime.

-qemu

Pass arguments to the qemu emulator software.

Important: When using this option, make sure it is the last option specified, since all options after it are interpretted as qemu-specific options.

-qemu -enable-kvm

Enable KVM acceleration of the emulator virtual machine.

This option is only effective when your system is set up to use KVM-based VM acceleration. You can optionally specify a memory size (-m <size>) for the VM, which should match your emulator's memory size:

-qemu -m 512 -enable-kvm
-qemu -m 1024 -enable-kvm

-qemu -h

Display qemu help.

-gpu on

Turn on graphics acceleration for the emulator.

This option is only available for emulators using a system image with API Level 15, revision 3 and higher. For more information, see Using the Android Emulator.

-radio <device>

Redirect radio mode to the specified character device.

The format of <device> must be QEMU-specific serial device specification. See the documentation for 'serial -dev' athttp://wiki.qemu.org/download/qemu-doc.html.

-timezone <timezone>

Set the timezone for the emulated device to <timezone>, instead of the host's timezone.

<timezone> must be specified in zoneinfo format. For example:

"America/Los_Angeles"
"Europe/Paris"

-version

Display the emulator's version number.

UI

-dpi-device <dpi>

Scale the resolution of the emulator to match the screen size of a physical device.

The default value is 165. See also -scale.

-no-boot-anim

Disable the boot animation during emulator startup.

Disabling the boot animation can speed the startup time for the emulator.

-no-window

Disable the emulator's graphical window display.

-scale <scale>

Scale the emulator window.

<scale> is a number between 0.1 and 3 that represents the desired scaling factor. You can also specify scale as a DPI value if you add the suffix "dpi" to the scale value. A value of "auto" tells the emulator to select the best window size.

-raw-keys

Disable Unicode keyboard reverse-mapping.

-noskin

Don't use any emulator skin.

-keyset <file>

Use the specified keyset file instead of the default.

The keyset file defines the list of key bindings between the emulator and the host keyboard. For more information, use-help-keyset to print information about this topic.

-onion <image>

Use overlay image over screen.

No support for JPEG. Only PNG is supported.

-onion-alpha <percent>

Specify onion skin translucency value (as percent).

Default is 50.

-onion-rotation <position>

Specify onion skin rotation.

<position> must be one of the values 0, 1, 2, 3.

-skin <skinID>

This emulator option is deprecated.

Please set skin options using AVDs, rather than by using this emulator option. Using this option may yield unexpected and in some cases misleading results, since the density with which to render the skin may not be defined. AVDs let you associate each skin with a default density and override the default as needed. For more information, see Managing Virtual Devices with AVD Manager.

-skindir <dir>

This emulator option is deprecated.

See comments for -skin, above.

Help

-help

Print a list of all emulator options.

-help-all

Print help for all startup options.

-help-<option>

Print help for a specific startup option.

-help-debug-tags

Print a list of all tags for -debug <tags>.

-help-disk-images

Print help for using emulator disk images.

-help-environment

Print help for emulator environment variables.

-help-keys

Print the current mapping of keys.

-help-keyset-file

Print help for defining a custom key mappings file.

-help-virtual-device

Print help for Android Virtual Device usage.

基本介绍和使用:http://www.cnblogs.com/21510506zw/articles/1955846.html

emulator-arm

emulator-ui

emulator-x86

etc1tool

etc1tool is a command line utility that lets you encode PNG images to the ETC1 compression standard and decode ETC1 compressed images back to PNG.

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/etc1tool.html

The usage for etc1tool is:

etc1tool infile [--help | --encode | --encodeNoHeader | --decode] [--showDifference

diff-file] [-o outfile]

Option

Description

infile

The input file to compress

--help

Print usage information

--encode

Create an ETC1 file from a PNG file. This is the default mode for the tool if nothing is specified.

--encodeNoHeader

Create a raw ETC1 data file (without a header) from a PNG file.

--decode

Create a PNG file from an ETC1 file

--showDifferencediff-file

Write the difference between the original and encoded image to diff-file (only valid when encoding).

-o outfile

Specify the name of the output file. If outfile is not specified, the output file is constructed from the input filename with the appropriate suffix (.pkm or .png).

eventanalyzer

sdk/eventanalyzer/etc/ eventanalyzer

# Set up prog to be the path of this script, including following symlinks,
# and set up progdir to be the fully-qualified pathname of its directory.

exc_dump

sdk/emulator/qtools/exc_dump.cpp

fastboot

docs/source.android.com/src/source/building-devices.md

  在安卓手机中fastboot是一种比recovery更底层的刷机模式。

  fastboot是一种线刷,就是使用USB数据线连接手机的一种刷机模式。相对于某些系统(如小米)卡刷来说,线刷更可靠,安全。

recovery是一种卡刷,就是将刷机包放在sd卡上,然后在recovery中刷机的模式。

在另外一份文档中有比较详细的说明

fs_config

// This program takes a list of files and directories (indicated by a

// trailing slash) on the stdin, and prints to stdout each input

// filename along with its desired uid, gid, and mode (in octal).

// The leading slash should be stripped from the input.

// Example input:

//    system/etc/dbus.conf

//    data/app/

// Output:

//    system/etc/dbus.conf 1002 1002 440

//    data/app 1000 1000 771

// Note that the output will omit the trailing slash from

// directories.

build/tools/fs_config/fs_config.c

fs_get_stats

build/tools/fs_get_stats/fs_get_stats.c

genext2fs

external-genext2fs/ genext2fs.c

genext2fs generates an ext2 filesystem as a normal (non-root) user.

It does not require you to mount the image file to copy files on it,

nor does it require that you become the superuser to make device nodes.

http://genext2fs.sourceforge.net/

Please use the genext2fs-devel@lists.sourceforge.net mailing list to

contact the developers and/or report bugs.

See the included INSTALL file for instructions on installing genext2fs.

gpttool

system-core/gpttool/gpttool.c

grxmlcompile

external-srec/config/en.us/grammars/

hierarchyviewer

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/hierarchy-viewer.html

Hierarchy Viewer allows you to debug and optimize your user interface. It provides a visual representation of the layout's View hierarchy (the Layout View) and a magnified inspector of the display (the Pixel Perfect View).

To start Hierarchy Viewer, enter the following command from the SDK tools/ directory:

hierarchyviewer

For more information on how to use Hierarchy Viewer, see Debugging and Profiling UIs

hierarchyviewer1

和hierarchyviewer类似

hist_trace

sdk/emulator/qtools/hist_trace.cpp

hprof-conv

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/hprof-conv.html

The hprof-conv tool converts the HPROF file that is generated by the Android SDK tools to a standard format so you can view the file in a profiling tool of your choice.

 hprof-conv <infile> <outfile>

You can use "-" for <infile> or <outfile> to specify stdin or stdout.

icudata

external/icu4c/data/misc/icudata.rc

imgdiff

bootable-recovery/applypatch/imgdiff.c

/*

* This program constructs binary patches for images -- such as boot.img

* and recovery.img -- that consist primarily of large chunks of gzipped

* data interspersed with uncompressed data.  Doing a naive bsdiff of

* these files is not useful because small changes in the data lead to

* large changes in the compressed bitstream; bsdiff patches of gzipped

* data are typically as large as the data itself.

*

* To patch these usefully, we break the source and target images up into

* chunks of two types: "normal" and "gzip".  Normal chunks are simply

* patched using a plain bsdiff.  Gzip chunks are first expanded, then a

* bsdiff is applied to the uncompressed data, then the patched data is

* gzipped using the same encoder parameters.  Patched chunks are

* concatenated together to create the output file; the output image

* should be *exactly* the same series of bytes as the target image used

* originally to generate the patch.

*

* To work well with this tool, the gzipped sections of the target

* image must have been generated using the same deflate encoder that

* is available in applypatch, namely, the one in the zlib library.

* In practice this means that images should be compressed using the

* "minigzip" tool included in the zlib distribution, not the GNU gzip

* program.

*

* An "imgdiff" patch consists of a header describing the chunk structure

* of the file and any encoding parameters needed for the gzipped

* chunks, followed by N bsdiff patches, one per chunk.

*

* For a diff to be generated, the source and target images must have the

* same "chunk" structure: that is, the same number of gzipped and normal

* chunks in the same order.  Android boot and recovery images currently

* consist of five chunks:  a small normal header, a gzipped kernel, a

* small normal section, a gzipped ramdisk, and finally a small normal

* footer.

*

* Caveats:  we locate gzipped sections within the source and target

* images by searching for the byte sequence 1f8b0800:  1f8b is the gzip

* magic number; 08 specifies the "deflate" encoding [the only encoding

* supported by the gzip standard]; and 00 is the flags byte.  We do not

* currently support any extra header fields (which would be indicated by

* a nonzero flags byte).  We also don't handle the case when that byte

* sequence appears spuriously in the file.  (Note that it would have to

* occur spuriously within a normal chunk to be a problem.)

*

*

* The imgdiff patch header looks like this:

*

*    "IMGDIFF1"                  (8)   [magic number and version]

*    chunk count                 (4)

*    for each chunk:

*        chunk type              (4)   [CHUNK_{NORMAL, GZIP, DEFLATE, RAW}]

*        if chunk type == CHUNK_NORMAL:

*           source start         (8)

*           source len           (8)

*           bsdiff patch offset  (8)   [from start of patch file]

*        if chunk type == CHUNK_GZIP:      (version 1 only)

*           source start         (8)

*           source len           (8)

*           bsdiff patch offset  (8)   [from start of patch file]

*           source expanded len  (8)   [size of uncompressed source]

*           target expected len  (8)   [size of uncompressed target]

*           gzip level           (4)

*                method          (4)

*                windowBits      (4)

*                memLevel        (4)

*                strategy        (4)

*           gzip header len      (4)

*           gzip header          (gzip header len)

*           gzip footer          (8)

*        if chunk type == CHUNK_DEFLATE:   (version 2 only)

*           source start         (8)

*           source len           (8)

*           bsdiff patch offset  (8)   [from start of patch file]

*           source expanded len  (8)   [size of uncompressed source]

*           target expected len  (8)   [size of uncompressed target]

*           gzip level           (4)

*                method          (4)

*                windowBits      (4)

*                memLevel        (4)

*                strategy        (4)

*        if chunk type == RAW:             (version 2 only)

*           target len           (4)

*           data                 (target len)

*

* All integers are little-endian.  "source start" and "source len"

* specify the section of the input image that comprises this chunk,

* including the gzip header and footer for gzip chunks.  "source

* expanded len" is the size of the uncompressed source data.  "target

* expected len" is the size of the uncompressed data after applying

* the bsdiff patch.  The next five parameters specify the zlib

* parameters to be used when compressing the patched data, and the

* next three specify the header and footer to be wrapped around the

* compressed data to create the output chunk (so that header contents

* like the timestamp are recreated exactly).

*

* After the header there are 'chunk count' bsdiff patches; the offset

* of each from the beginning of the file is specified in the header.

*/

jdwpspy

evelopment/tools/jdwpspy/Main.cpp

layoutopt

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/layoutopt.html

layoutopt is a command-line tool that helps you optimize the layouts and layout hierarchies of your applications.

This document is a reference to the available command line options. For more information and sample output of the tool, see Optimizing layouts with layoutopt.

Usage

To run layoutopt against a given list of layout resources:

layoutopt <file_or_directory> ...

For example:

$ layoutopt res/layout-land
$ layoutopt res/layout/main.xml res/layout-land/main.xml

line_endings

# Copies files into the directory structure described by a manifest

development/tools/line_endings/line_endings.c

llvm-link

//===----------------------------------------------------------------------===//

//

// This utility may be invoked in the following manner:

//  llvm-link a.bc b.bc c.bc -o x.bc

//

//===----------------------------------------------------------------------===//

external-llvm/tools/llvm-link/llvm-link.cpp

llvm-rs-cc

frameworks/compile/slang/README.html

llvm-rs-cc: Compiler for Renderscript language

Introduction

llvm-rs-cc compiles a program in the Renderscript language to generate the following files:

Note that although Renderscript is C99-like, we enhance it with several distinct, effective features for Android programming. We will use some examples to illustrate these features.

llvm-rs-cc is run on the host and performs many aggressive optimizations. As a result, libbcc on the device can be lightweight and focus on machine-dependent code generation for some input bitcode.

llvm-rs-cc is a driver on top of libslang. The architecture of libslang and libbcc is depicted in the following figure:

libslang   libbcc
|   \   |
|    \  |
clang     llvm

Usage

·         -o $(PRIVATE_RS_OUTPUT_DIR)/res/raw

This option specifies the directory for outputting a .bc file.

·         -p $(PRIVATE_RS_OUTPUT_DIR)/src

The option -p denotes the directory for outputting the reflected Java files.

·         -d $(PRIVATE_RS_OUTPUT_DIR)

This option -d sets the directory for writing dependence information.

·         -MD

Note that -MD will tell llvm-rs-cc to output dependence information.

·         -a $(EXTRA_TARGETS)

Specifies additional target dependencies.

Example Command

First:

$ cd <Android_Root_Directory>

Using frameworks/base/tests/RenderScriptTests/Fountain as a simple app in both Java and Renderscript, we can find the following command line in the build log:

$ out/host/linux-x86/bin/llvm-rs-cc \
-o out/target/common/obj/APPS/Fountain_intermediates/src/renderscript/res/raw \
-p out/target/common/obj/APPS/Fountain_intermediates/src/renderscript/src \
-d out/target/common/obj/APPS/Fountain_intermediates/src/renderscript \
-a out/target/common/obj/APPS/Fountain_intermediates/src/RenderScript.stamp \
-MD \
-I frameworks/base/libs/rs/scriptc \
-I external/clang/lib/Headers \
frameworks/base/libs/rs/java/Fountain/src/com/android/fountain/fountain.rs

This command will generate:

The Script*.java files above will be documented below.

Example Program: fountain.rs

fountain.rs is in the Renderscript language, which is based on the standard C99. However, llvm-rs-cc goes beyond "clang -std=c99" and provides the following important features:

1. Pragma

·         #pragma rs java_package_name([PACKAGE_NAME])

The ScriptC_[SCRIPT_NAME].java has to be packaged so that Java developers can invoke those APIs.

To do that, a Renderscript programmer should specify the package name, so that llvm-rs-cc knows the package expression and hence the directory for outputting ScriptC_[SCRIPT_NAME].java.

In fountain.rs, we have:

#pragma rs java_package_name(com.android.fountain)

In ScriptC_fountain.java, we have:

package com.android.fountain

Note that the ScriptC_fountain.java will be generated inside ./com/android/fountain/.

·         #pragma version(1)

This pragma is for evolving the language. Currently we are at version 1 of the language.

2. Basic Reflection: Export Variables and Functions

llvm-rs-cc automatically exports the "externalizable and defined" functions and variables to Android's Java side. That is, scripts are accessible from Java.

For instance, for:

int foo = 0;

In ScriptC_fountain.java, llvm-rs-cc will reflect the following methods:

void set_foo(int v)...
 
int get_foo()...

This access takes the form of generated classes which provide access to the functions and global variables within a script. In summary, global variables and functions within a script that are not declared static will generate get, set, or invoke methods. This provides a way to set the data within a script and call its functions.

Take the addParticles function in fountain.rs as an example:

void addParticles(int rate, float x, float y, int index, bool newColor) {
  ...
}

llvm-rs-cc will genearte ScriptC_fountain.java as follows:

void invoke_addParticles(int rate, float x, float y,
                         int index, bool newColor) {
  ...
}

3. Export User-Defined Structs

In fountain.rs, we have:

typedef struct __attribute__((packed, aligned(4))) Point {
float2 delta;
float2 position;
uchar4 color;
} Point_t;
Point_t *point;

llvm-rs-cc generates one ScriptField*.java file for each user-defined struct. In this case, llvm-rs-cc will reflect two files, ScriptC_fountain.java and ScriptField_Point.java.

Note that when the type of an exportable variable is a structure, Renderscript developers should avoid using anonymous structs. This is because llvm-rs-cc uses the struct name to identify the file, instead of the typedef name.

For the generated Java files, using ScriptC_fountain.java as an example we also have:

void bind_point(ScriptField_Point v)

This binds your object with the allocated memory.

You can bind the struct(e.g., Point), using the setter and getter methods in ScriptField_Point.java.

After binding, you can access the object with this method:

ScriptField_Point get_point()

In ScriptField_Point_s.java:

...
// Copying the Item, which is the object that stores every
// fields of struct, to the *index*\-th entry of byte array.
//
// In general, this method would not be invoked directly
// but is used to implement the setter.
void copyToArray(Item i, int index)
// The setter of Item array,
// index: the index of the Item array
// copyNow: If true, it will be copied to the *index*\-th entry
// of byte array.
void set(Item i, int index, boolean copyNow)
// The getter of Item array, which gets the *index*-th element
// of byte array.
Item get(int index)
set_delta(int index, Float2 v, boolean copyNow)
// The following is the individual setters and getters of
// each field of a struct.
public void set_delta(int index, Float2 v, boolean copyNow)
public void set_position(int index, Float2 v, boolean copyNow)
public void set_color(int index, Short4 v, boolean copyNow)
public Float2 get_delta(int index)
public Float2 get_position(int index)
public Short4 get_color(int index)
// Copying all Item array to byte array (i.e., memory allocation).
void copyAll()
...

4. Summary of the Java Reflection above

This section summarizes the high-level design of Renderscript's reflection.

·         In terms of a script's global functions, they can be called from Java. These calls operate asynchronously and no assumptions should be made on whether a function called will have actually completed operation. If it is necessary to wait for a function to complete, the Java application may call the runtime finish() method, which will wait for all the script threads to complete pending operations. A few special functions can also exist:

o    The function init (if present) will be called once after the script is loaded. This is useful to initialize data or anything else the script may need before it can be used. The init function may not depend on globals initialized from Java as it will be called before these can be initialized. The function signature for init must be:

o  void init(void);

o    The function root is a special function for graphics. This function will be called when a script must redraw its contents. No assumptions should be made as to when this function will be called. It will only be called if the script is bound as a graphics root. Calls to this function will be synchronized with data updates and other invocations from Java. Thus the script will not change due to external influence in the middle of running root. The return value indicates to the runtime when the function should be called again to redraw in the future. A return value of 0 indicates that no redraw is necessary until something changes on the Java side. Any positive integer indicates a time in milliseconds that the runtime should wait before calling root again to render another frame. The function signature for a graphics root functions is as follows:

o  int root(void);

o    It is also possible to create a purely compute-based root function. Such a function has the following signature:

o  void root(const T1 *in, T2 *out, const T3 *usrData, uint32_t x, uint32_t y);

T1, T2, and T3 represent any supported Renderscript type. Any parameters above can be omitted, although at least one of in/out must be present. If both in and out are present, root must only be invoked with types of the same exact dimensionality (i.e. matching X and Y values for dimension). This root function is accessible through the Renderscript language construct forEach. We also reflect a Java version to access this function as forEach_root (for API levels of 14+). An example of this can be seen in the Android SDK sample for HelloCompute.

o    The function .rs.dtor is a function that is sometimes generated by llvm-rs-cc. This function cleans up any global variable that contains (or is) a reference counted Renderscript object type (such as an rs_allocation, rs_font, or rs_script). This function will be invoked implicitly by the Renderscript runtime during script teardown.

·         In terms of a script's global data, global variables can be written from Java. The Java instance will cache the value or object set and provide return methods to retrieve this value. If a script updates the value, this update will not propagate back to the Java class. Initializers, if present, will also initialize the cached Java value. This provides a convenient way to declare constants within a script and make them accessible to the Java runtime. If the script declares a variable const, only the get methods will be generated.

Globals within a script are considered local to the script. They cannot be accessed by other scripts and are in effect always 'static' in the traditional C sense. Static here is used to control if accessors are generated. Static continues to mean not externally visible and thus prevents the generation of accessors. Globals are persistent across invocations of a script and thus may be used to hold data from run to run.

Globals of two types may be reflected into the Java class. The first type is basic non-pointer types. Types defined in rs_types.rsh may also be used. For the non-pointer class, get and set methods are generated for Java. Globals of single pointer types behave differently. These may use more complex types. Simple structures composed of the types in rs_types.rsh may also be used. These globals generate bind points in Java. If the type is a structure they also generate an appropriate Field class that is used to pack and unpack the contents of the structure. Binding an allocation in Java effectively sets the pointer in the script. Bind points marked const indicate to the runtime that the script will not modify the contents of an allocation. This may allow the runtime to make more effective use of threads.

5. Vector Types

Vector types such as float2, float4, and uint4 are included to support vector processing in environments where the processors provide vector instructions.

On non-vector systems the same code will continue to run but without the performance advantage. Function overloading is also supported. This allows the runtime to support vector version of the basic math routines without the need for special naming. For instance,

localize

frameworks-base/tools/localize/localize.cpp

make_cfst

external-srec/tools/make_cfst/make_cfst.cpp

makedict

packages/inputmethods/LatinIME/tools/makedict/etc/makedict

# Set up prog to be the path of this script, including following symlinks,

# and set up progdir to be the fully-qualified pathname of its directory.

make_ext4fs

system-extras/ext4_utils/make_ext4fs.c

/* TODO: Not implemented:

Allocating blocks in the same block group as the file inode

Hash or binary tree directories

Special files: sockets, devices, fifos

*/

make_g2g

external-srec/tools/make_g2g/make_g2g.c

makekeycodes

frameworks-base/tools/makekeycodes/makekeycodes.cpp

// Copyright (C) 2008 The Android Open Source Project

//

// This file is generated by makekeycodes from the definitions.

// in includes/ui/KeycodeLabels.h.

//

// If you modify this, your changes will be overwritten.

pacakge android.os;

public class KeyEvent

{

public static final int KEYCODE_SOFT_LEFT = 0x00000001;

public static final int KEYCODE_SOFT_RIGHT = 0x00000002;

public static final int KEYCODE_HOME = 0x00000003;

public static final int KEYCODE_BACK = 0x00000004;

public static final int KEYCODE_CALL = 0x00000005;

public static final int KEYCODE_ENDCALL = 0x00000006;

public static final int KEYCODE_0 = 0x00000007;

public static final int KEYCODE_1 = 0x00000008;

public static final int KEYCODE_2 = 0x00000009;

public static final int KEYCODE_3 = 0x0000000a;

public static final int KEYCODE_4 = 0x0000000b;

public static final int KEYCODE_5 = 0x0000000c;

public static final int KEYCODE_6 = 0x0000000d;

public static final int KEYCODE_7 = 0x0000000e;

public static final int KEYCODE_8 = 0x0000000f;

public static final int KEYCODE_9 = 0x00000010;

public static final int KEYCODE_STAR = 0x00000011;

public static final int KEYCODE_POUND = 0x00000012;

public static final int KEYCODE_DPAD_UP = 0x00000013;

public static final int KEYCODE_DPAD_DOWN = 0x00000014;

public static final int KEYCODE_DPAD_LEFT = 0x00000015;

public static final int KEYCODE_DPAD_RIGHT = 0x00000016;

public static final int KEYCODE_DPAD_CENTER = 0x00000017;

public static final int KEYCODE_VOLUME_UP = 0x00000018;

public static final int KEYCODE_VOLUME_DOWN = 0x00000019;

public static final int KEYCODE_POWER = 0x0000001a;

public static final int KEYCODE_CAMERA = 0x0000001b;

public static final int KEYCODE_CLEAR = 0x0000001c;

public static final int KEYCODE_A = 0x0000001d;

public static final int KEYCODE_B = 0x0000001e;

public static final int KEYCODE_C = 0x0000001f;

public static final int KEYCODE_D = 0x00000020;

public static final int KEYCODE_E = 0x00000021;

public static final int KEYCODE_F = 0x00000022;

public static final int KEYCODE_G = 0x00000023;

public static final int KEYCODE_H = 0x00000024;

public static final int KEYCODE_I = 0x00000025;

public static final int KEYCODE_J = 0x00000026;

public static final int KEYCODE_K = 0x00000027;

public static final int KEYCODE_L = 0x00000028;

public static final int KEYCODE_M = 0x00000029;

public static final int KEYCODE_N = 0x0000002a;

public static final int KEYCODE_O = 0x0000002b;

public static final int KEYCODE_P = 0x0000002c;

public static final int KEYCODE_Q = 0x0000002d;

public static final int KEYCODE_R = 0x0000002e;

public static final int KEYCODE_S = 0x0000002f;

public static final int KEYCODE_T = 0x00000030;

public static final int KEYCODE_U = 0x00000031;

public static final int KEYCODE_V = 0x00000032;

public static final int KEYCODE_W = 0x00000033;

public static final int KEYCODE_X = 0x00000034;

public static final int KEYCODE_Y = 0x00000035;

public static final int KEYCODE_Z = 0x00000036;

public static final int KEYCODE_COMMA = 0x00000037;

public static final int KEYCODE_PERIOD = 0x00000038;

public static final int KEYCODE_ALT_LEFT = 0x00000039;

public static final int KEYCODE_ALT_RIGHT = 0x0000003a;

public static final int KEYCODE_SHIFT_LEFT = 0x0000003b;

public static final int KEYCODE_SHIFT_RIGHT = 0x0000003c;

public static final int KEYCODE_TAB = 0x0000003d;

public static final int KEYCODE_SPACE = 0x0000003e;

public static final int KEYCODE_SYM = 0x0000003f;

public static final int KEYCODE_EXPLORER = 0x00000040;

public static final int KEYCODE_ENVELOPE = 0x00000041;

public static final int KEYCODE_ENTER = 0x00000042;

public static final int KEYCODE_DEL = 0x00000043;

public static final int KEYCODE_GRAVE = 0x00000044;

public static final int KEYCODE_MINUS = 0x00000045;

public static final int KEYCODE_EQUALS = 0x00000046;

public static final int KEYCODE_LEFT_BRACKET = 0x00000047;

public static final int KEYCODE_RIGHT_BRACKET = 0x00000048;

public static final int KEYCODE_BACKSLASH = 0x00000049;

public static final int KEYCODE_SEMICOLON = 0x0000004a;

public static final int KEYCODE_APOSTROPHE = 0x0000004b;

public static final int KEYCODE_SLASH = 0x0000004c;

public static final int KEYCODE_AT = 0x0000004d;

public static final int KEYCODE_NUM = 0x0000004e;

public static final int KEYCODE_HEADSETHOOK = 0x0000004f;

public static final int KEYCODE_FOCUS = 0x00000050;

public static final int KEYCODE_PLUS = 0x00000051;

public static final int KEYCODE_MENU = 0x00000052;

public static final int KEYCODE_NOTIFICATION = 0x00000053;

public static final int KEYCODE_SEARCH = 0x00000054;

public static final int KEYCODE_MEDIA_PLAY_PAUSE = 0x00000055;

public static final int KEYCODE_MEDIA_STOP = 0x00000056;

public static final int KEYCODE_MEDIA_NEXT = 0x00000057;

public static final int KEYCODE_MEDIA_PREVIOUS = 0x00000058;

public static final int KEYCODE_MEDIA_REWIND = 0x00000059;

public static final int KEYCODE_MEDIA_FAST_FORWARD = 0x0000005a;

public static final int KEYCODE_MUTE = 0x0000005b;

public static final int KEYCODE_PAGE_UP = 0x0000005c;

public static final int KEYCODE_PAGE_DOWN = 0x0000005d;

public static final int KEYCODE_PICTSYMBOLS = 0x0000005e;

public static final int KEYCODE_SWITCH_CHARSET = 0x0000005f;

public static final int KEYCODE_BUTTON_A = 0x00000060;

public static final int KEYCODE_BUTTON_B = 0x00000061;

public static final int KEYCODE_BUTTON_C = 0x00000062;

public static final int KEYCODE_BUTTON_X = 0x00000063;

public static final int KEYCODE_BUTTON_Y = 0x00000064;

public static final int KEYCODE_BUTTON_Z = 0x00000065;

public static final int KEYCODE_BUTTON_L1 = 0x00000066;

public static final int KEYCODE_BUTTON_R1 = 0x00000067;

public static final int KEYCODE_BUTTON_L2 = 0x00000068;

public static final int KEYCODE_BUTTON_R2 = 0x00000069;

public static final int KEYCODE_BUTTON_THUMBL = 0x0000006a;

public static final int KEYCODE_BUTTON_THUMBR = 0x0000006b;

public static final int KEYCODE_BUTTON_START = 0x0000006c;

public static final int KEYCODE_BUTTON_SELECT = 0x0000006d;

public static final int KEYCODE_BUTTON_MODE = 0x0000006e;

public static final int KEYCODE_ESCAPE = 0x0000006f;

public static final int KEYCODE_FORWARD_DEL = 0x00000070;

public static final int KEYCODE_CTRL_LEFT = 0x00000071;

public static final int KEYCODE_CTRL_RIGHT = 0x00000072;

public static final int KEYCODE_CAPS_LOCK = 0x00000073;

public static final int KEYCODE_SCROLL_LOCK = 0x00000074;

public static final int KEYCODE_META_LEFT = 0x00000075;

public static final int KEYCODE_META_RIGHT = 0x00000076;

public static final int KEYCODE_FUNCTION = 0x00000077;

public static final int KEYCODE_SYSRQ = 0x00000078;

public static final int KEYCODE_BREAK = 0x00000079;

public static final int KEYCODE_MOVE_HOME = 0x0000007a;

public static final int KEYCODE_MOVE_END = 0x0000007b;

public static final int KEYCODE_INSERT = 0x0000007c;

public static final int KEYCODE_FORWARD = 0x0000007d;

public static final int KEYCODE_MEDIA_PLAY = 0x0000007e;

public static final int KEYCODE_MEDIA_PAUSE = 0x0000007f;

public static final int KEYCODE_MEDIA_CLOSE = 0x00000080;

public static final int KEYCODE_MEDIA_EJECT = 0x00000081;

public static final int KEYCODE_MEDIA_RECORD = 0x00000082;

public static final int KEYCODE_F1 = 0x00000083;

public static final int KEYCODE_F2 = 0x00000084;

public static final int KEYCODE_F3 = 0x00000085;

public static final int KEYCODE_F4 = 0x00000086;

public static final int KEYCODE_F5 = 0x00000087;

public static final int KEYCODE_F6 = 0x00000088;

public static final int KEYCODE_F7 = 0x00000089;

public static final int KEYCODE_F8 = 0x0000008a;

public static final int KEYCODE_F9 = 0x0000008b;

public static final int KEYCODE_F10 = 0x0000008c;

public static final int KEYCODE_F11 = 0x0000008d;

public static final int KEYCODE_F12 = 0x0000008e;

public static final int KEYCODE_NUM_LOCK = 0x0000008f;

public static final int KEYCODE_NUMPAD_0 = 0x00000090;

public static final int KEYCODE_NUMPAD_1 = 0x00000091;

public static final int KEYCODE_NUMPAD_2 = 0x00000092;

public static final int KEYCODE_NUMPAD_3 = 0x00000093;

public static final int KEYCODE_NUMPAD_4 = 0x00000094;

public static final int KEYCODE_NUMPAD_5 = 0x00000095;

public static final int KEYCODE_NUMPAD_6 = 0x00000096;

public static final int KEYCODE_NUMPAD_7 = 0x00000097;

public static final int KEYCODE_NUMPAD_8 = 0x00000098;

public static final int KEYCODE_NUMPAD_9 = 0x00000099;

public static final int KEYCODE_NUMPAD_DIVIDE = 0x0000009a;

public static final int KEYCODE_NUMPAD_MULTIPLY = 0x0000009b;

public static final int KEYCODE_NUMPAD_SUBTRACT = 0x0000009c;

public static final int KEYCODE_NUMPAD_ADD = 0x0000009d;

public static final int KEYCODE_NUMPAD_DOT = 0x0000009e;

public static final int KEYCODE_NUMPAD_COMMA = 0x0000009f;

public static final int KEYCODE_NUMPAD_ENTER = 0x000000a0;

public static final int KEYCODE_NUMPAD_EQUALS = 0x000000a1;

public static final int KEYCODE_NUMPAD_LEFT_PAREN = 0x000000a2;

public static final int KEYCODE_NUMPAD_RIGHT_PAREN = 0x000000a3;

public static final int KEYCODE_VOLUME_MUTE = 0x000000a4;

public static final int KEYCODE_INFO = 0x000000a5;

public static final int KEYCODE_CHANNEL_UP = 0x000000a6;

public static final int KEYCODE_CHANNEL_DOWN = 0x000000a7;

public static final int KEYCODE_ZOOM_IN = 0x000000a8;

public static final int KEYCODE_ZOOM_OUT = 0x000000a9;

public static final int KEYCODE_TV = 0x000000aa;

public static final int KEYCODE_WINDOW = 0x000000ab;

public static final int KEYCODE_GUIDE = 0x000000ac;

public static final int KEYCODE_DVR = 0x000000ad;

public static final int KEYCODE_BOOKMARK = 0x000000ae;

public static final int KEYCODE_CAPTIONS = 0x000000af;

public static final int KEYCODE_SETTINGS = 0x000000b0;

public static final int KEYCODE_TV_POWER = 0x000000b1;

public static final int KEYCODE_TV_INPUT = 0x000000b2;

public static final int KEYCODE_STB_POWER = 0x000000b3;

public static final int KEYCODE_STB_INPUT = 0x000000b4;

public static final int KEYCODE_AVR_POWER = 0x000000b5;

public static final int KEYCODE_AVR_INPUT = 0x000000b6;

public static final int KEYCODE_PROG_RED = 0x000000b7;

public static final int KEYCODE_PROG_GREEN = 0x000000b8;

public static final int KEYCODE_PROG_YELLOW = 0x000000b9;

public static final int KEYCODE_PROG_BLUE = 0x000000ba;

public static final int KEYCODE_APP_SWITCH = 0x000000bb;

public static final int KEYCODE_BUTTON_1 = 0x000000bc;

public static final int KEYCODE_BUTTON_2 = 0x000000bd;

public static final int KEYCODE_BUTTON_3 = 0x000000be;

public static final int KEYCODE_BUTTON_4 = 0x000000bf;

public static final int KEYCODE_BUTTON_5 = 0x000000c0;

public static final int KEYCODE_BUTTON_6 = 0x000000c1;

public static final int KEYCODE_BUTTON_7 = 0x000000c2;

public static final int KEYCODE_BUTTON_8 = 0x000000c3;

public static final int KEYCODE_BUTTON_9 = 0x000000c4;

public static final int KEYCODE_BUTTON_10 = 0x000000c5;

public static final int KEYCODE_BUTTON_11 = 0x000000c6;

public static final int KEYCODE_BUTTON_12 = 0x000000c7;

public static final int KEYCODE_BUTTON_13 = 0x000000c8;

public static final int KEYCODE_BUTTON_14 = 0x000000c9;

public static final int KEYCODE_BUTTON_15 = 0x000000ca;

public static final int KEYCODE_BUTTON_16 = 0x000000cb;

public static final int KEYCODE_LANGUAGE_SWITCH = 0x000000cc;

public static final int KEYCODE_MANNER_MODE = 0x000000cd;

public static final int KEYCODE_3D_MODE = 0x000000ce;

public static final int KEYCODE_CONTACTS = 0x000000cf;

public static final int KEYCODE_CALENDAR = 0x000000d0;

public static final int KEYCODE_MUSIC = 0x000000d1;

public static final int KEYCODE_CALCULATOR = 0x000000d2;

public static final int MODIFIER_WAKE = 0x00000001;

public static final int MODIFIER_WAKE_DROPPED = 0x00000002;

public static final int MODIFIER_SHIFT = 0x00000004;

public static final int MODIFIER_CAPS_LOCK = 0x00000008;

public static final int MODIFIER_ALT = 0x00000010;

public static final int MODIFIER_ALT_GR = 0x00000020;

public static final int MODIFIER_MENU = 0x00000040;

public static final int MODIFIER_LAUNCHER = 0x00000080;

public static final int MODIFIER_VIRTUAL = 0x00000100;

public static final int MODIFIER_FUNCTION = 0x00000200;

}

make_ve_grammar

external-srec/tools/make_ve_grammar/make_ve_grammar.c

minigzip

external-zlib/minigzip.c

/*

* minigzip is a minimal implementation of the gzip utility. This is

* only an example of using zlib and isn't meant to replace the

* full-featured gzip. No attempt is made to deal with file systems

* limiting names to 14 or 8+3 characters, etc... Error checking is

* very limited. So use minigzip only for testing; use gzip for the

* real thing. On MSDOS, use only on file names without extension

* or in pipe mode.

*/

mkbootfs

system-core/cpio/mkbootfs.c

/* NOTES

**

** - see buffer-format.txt from the linux kernel docs for

**   an explanation of this file format

** - dotfiles are ignored

** - directories named 'root' are ignored

** - device notes, pipes, etc are not supported (error)

*/

mkbootimg

system-core/mkbootimg/mkbootimg.c

usage: mkbootimg

--kernel <filename>

--ramdisk <filename>

[ --second <2ndbootloader-filename> ]

[ --cmdline <kernel-commandline> ]

[ --board <boardname> ]

[ --base <address> ]

[ --pagesize <pagesize> ]

-o|--output <filename>

/*

** +-----------------+

** | boot header     | 1 page

** +-----------------+

** | kernel          | n pages

** +-----------------+

** | ramdisk         | m pages

** +-----------------+

** | second stage    | o pages

** +-----------------+

**

** n = (kernel_size + page_size - 1) / page_size

** m = (ramdisk_size + page_size - 1) / page_size

** o = (second_size + page_size - 1) / page_size

**

** 0. all entities are page_size aligned in flash

** 1. kernel and ramdisk are required (size != 0)

** 2. second is optional (second_size == 0 -> no second)

** 3. load each element (kernel, ramdisk, second) at

**    the specified physical address (kernel_addr, etc)

** 4. prepare tags at tag_addr.  kernel_args[] is

**    appended to the kernel commandline in the tags.

** 5. r0 = 0, r1 = MACHINE_TYPE, r2 = tags_addr

** 6. if second_size != 0: jump to second_addr

**    else: jump to kernel_addr

*/

mksdcard

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/mksdcard.html

The mksdcard tool lets you quickly create a FAT32 disk image that you can load in the emulator, to simulate the presence of an SD card in the device. Because you can specify an SD card while creating an AVD in the AVD Manager, you usually use that feature to create an SD card. This tool creates an SD card that is not bundled with an AVD, so it is useful for situations where you need to share a virtual SD card between multiple emulators.

Usage

mksdcard -l <label> <size> <file>

Options

The following table describes the command-line options of mksdcard

Option

Description

-l

A volume label for the disk image to create.

size

An integer that specifies the size (in bytes) of disk image to create. You can also specify size in kilobytes or megabytes, by appending a "K" or "M" to <size>. For example, 1048576K1024M.

file

The path/filename of the disk image to create.

Once you have created the disk image file, you can load it in the emulator at startup using the emulator's -sdcard option. For more information, see Android Emulator.

The usage for the -sdcard option is as follows:

emulator -sdcard <file>

Example

mksdcard -l mySdCard 1024M mySdCardFile.img

mksnapshot

external-v8/src/mksnapshot.cc

// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

mkuserimg.sh

system-extras/ext4_utils/mkuserimg.sh

# To call this script, make sure make_ext4fs is somewhere in PATH

mkyaffs2image

external-yaffs2/yaffs2/utils/mkyaffsimage.c

/*

* YAFFS: Yet another FFS. A NAND-flash specific file system.

*

* makeyaffsimage.c

*

* Makes a YAFFS file system image that can be used to load up a file system.

*

* Copyright (C) 2002 Aleph One Ltd.

*   for Toby Churchill Ltd and Brightstar Engineering

*

* Created by Charles Manning <charles@aleph1.co.uk>

*

* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License version 2 as

* published by the Free Software Foundation.

*

*

* Nick Bane modifications flagged NCB

*

* Endian handling patches by James Ng.

*

*

*/

monkeyrunner

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/monkey.html

The Monkey is a program that runs on your emulator or device and generates pseudo-random streams of user events such as clicks, touches, or gestures, as well as a number of system-level events. You can use the Monkey to stress-test applications that you are developing, in a random yet repeatable manner.

Overview


The Monkey is a command-line tool that that you can run on any emulator instance or on a device. It sends a pseudo-random stream of user events into the system, which acts as a stress test on the application software you are developing.

The Monkey includes a number of options, but they break down into four primary categories:

·         Basic configuration options, such as setting the number of events to attempt.

·         Operational constraints, such as restricting the test to a single package.

·         Event types and frequencies.

·         Debugging options.

When the Monkey runs, it generates events and sends them to the system. It also watches the system under test and looks for three conditions, which it treats specially:

·         If you have constrained the Monkey to run in one or more specific packages, it watches for attempts to navigate to any other packages, and blocks them.

·         If your application crashes or receives any sort of unhandled exception, the Monkey will stop and report the error.

·         If your application generates an application not responding error, the Monkey will stop and report the error.

Depending on the verbosity level you have selected, you will also see reports on the progress of the Monkey and the events being generated.

Basic Use of the Monkey


You can launch the Monkey using a command line on your development machine or from a script. Because the Monkey runs in the emulator/device environment, you must launch it from a shell in that environment. You can do this by prefacing adb shell to each command, or by entering the shell and entering Monkey commands directly.

The basic syntax is:

$ adb shell monkey [options] <event-count>

With no options specified, the Monkey will launch in a quiet (non-verbose) mode, and will send events to any (and all) packages installed on your target. Here is a more typical command line, which will launch your application and send 500 pseudo-random events to it:

$ adb shell monkey -p your.package.name -v 500

Command Options Reference


The table below lists all options you can include on the Monkey command line.

Category

Option

Description

General

--help

Prints a simple usage guide.

-v

Each -v on the command line will increment the verbosity level. Level 0 (the default) provides little information beyond startup notification, test completion, and final results. Level 1 provides more details about the test as it runs, such as individual events being sent to your activities. Level 2 provides more detailed setup information such as activities selected or not selected for testing.

Events

-s <seed>

Seed value for pseudo-random number generator. If you re-run the Monkey with the same seed value, it will generate the same sequence of events.

--throttle <milliseconds>

Inserts a fixed delay between events. You can use this option to slow down the Monkey. If not specified, there is no delay and the events are generated as rapidly as possible.

--pct-touch <percent>

Adjust percentage of touch events. (Touch events are a down-up event in a single place on the screen.)

--pct-motion <percent>

Adjust percentage of motion events. (Motion events consist of a down event somewhere on the screen, a series of pseudo-random movements, and an up event.)

--pct-trackball <percent>

Adjust percentage of trackball events. (Trackball events consist of one or more random movements, sometimes followed by a click.)

--pct-nav <percent>

Adjust percentage of "basic" navigation events. (Navigation events consist of up/down/left/right, as input from a directional input device.)

--pct-majornav <percent>

Adjust percentage of "major" navigation events. (These are navigation events that will typically cause actions within your UI, such as the center button in a 5-way pad, the back key, or the menu key.)

--pct-syskeys <percent>

Adjust percentage of "system" key events. (These are keys that are generally reserved for use by the system, such as Home, Back, Start Call, End Call, or Volume controls.)

--pct-appswitch <percent>

Adjust percentage of activity launches. At random intervals, the Monkey will issue a startActivity() call, as a way of maximizing coverage of all activities within your package.

--pct-anyevent <percent>

Adjust percentage of other types of events. This is a catch-all for all other types of events such as keypresses, other less-used buttons on the device, and so forth.

Constraints

-p <allowed-package-name>

If you specify one or more packages this way, the Monkey will only allow the system to visit activities within those packages. If your application requires access to activities in other packages (e.g. to select a contact) you'll need to specify those packages as well. If you don't specify any packages, the Monkey will allow the system to launch activities in all packages. To specify multiple packages, use the -p option multiple times — one -p option per package.

-c <main-category>

If you specify one or more categories this way, the Monkey will only allow the system to visit activities that are listed with one of the specified categories. If you don't specify any categories, the Monkey will select activities listed with the category Intent.CATEGORY_LAUNCHER or Intent.CATEGORY_MONKEY. To specify multiple categories, use the -c option multiple times — one -c option per category.

Debugging

--dbg-no-events

When specified, the Monkey will perform the initial launch into a test activity, but will not generate any further events. For best results, combine with -v, one or more package constraints, and a non-zero throttle to keep the Monkey running for 30 seconds or more. This provides an environment in which you can monitor package transitions invoked by your application.

--hprof

If set, this option will generate profiling reports immediately before and after the Monkey event sequence. This will generate large (~5Mb) files in data/misc, so use with care. See Traceview for more information on trace files.

--ignore-crashes

Normally, the Monkey will stop when the application crashes or experiences any type of unhandled exception. If you specify this option, the Monkey will continue to send events to the system, until the count is completed.

--ignore-timeouts

Normally, the Monkey will stop when the application experiences any type of timeout error such as a "Application Not Responding" dialog. If you specify this option, the Monkey will continue to send events to the system, until the count is completed.

--ignore-security-exceptions

Normally, the Monkey will stop when the application experiences any type of permissions error, for example if it attempts to launch an activity that requires certain permissions. If you specify this option, the Monkey will continue to send events to the system, until the count is completed.

--kill-process-after-error

Normally, when the Monkey stops due to an error, the application that failed will be left running. When this option is set, it will signal the system to stop the process in which the error occurred. Note, under a normal (successful) completion, the launched process(es) are not stopped, and the device is simply left in the last state after the final event.

--monitor-native-crashes

Watches for and reports crashes occurring in the Android system native code. If --kill-process-after-error is set, the system will stop.

--wait-dbg

Stops the Monkey from executing until a debugger is attached to it.

obbtool

frameworks-base/tools/obbtool/Main.cpp

Opaque Binary Blob (OBB) Tool

Usage:

obbtool a[dd] [ OPTIONS ] FILENAME

Adds an OBB signature to the file.

Options:

-n <package name>      sets the OBB package name (required)

-v <OBB version>       sets the OBB version (required)

-o                     sets the OBB overlay flag

-s <8 byte hex salt>   sets the crypto key salt (if encrypted)

obbtool r[emove] FILENAME

Removes the OBB signature from the file.

obbtool i[nfo] FILENAME

Prints the OBB signature information of a file.

parseStringTest

external-srec/tools/parseStringTest/parseStringTest.c

post_trace

sdk/emulator/qtools/post_trace.cpp

profile_pid

sdk/emulator/qtools/profile_pid.cpp

profile_trace

sdk/emulator/qtools/profile_trace.cpp

q2dm

sdk/emulator/qtools/q2dm.cpp

q2g

sdk/emulator/qtools/q2g.cpp

qemu-android-arm

qemu-android-x86

read_addr

sdk/emulator/qtools/read_addr.cpp

read_method

sdk/emulator/qtools/read_method.cpp

read_pid

sdk/emulator/qtools/read_pid.cpp

read_trace

sdk/emulator/qtools/read_trace.cpp

rgb2565

build/tools/rgb2565/to565.c

rgb转565

rsg-generator

frameworks-base/libs/rs/rsg_generator.c

fprintf(f, "/*\n");

fprintf(f, " * Copyright (C) 2011 The Android Open Source Project\n");

fprintf(f, " *\n");

fprintf(f, " * Licensed under the Apache License, Version 2.0 (the \"License\");\n");

fprintf(f, " * you may not use this file except in compliance with the License.\n");

fprintf(f, " * You may obtain a copy of the License at\n");

fprintf(f, " *\n");

fprintf(f, " *      http://www.apache.org/licenses/LICENSE-2.0\n");

fprintf(f, " *\n");

fprintf(f, " * Unless required by applicable law or agreed to in writing, software\n");

fprintf(f, " * distributed under the License is distributed on an \"AS IS\" BASIS,\n");

fprintf(f, " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n");

fprintf(f, " * See the License for the specific language governing permissions and\n");

fprintf(f, " * limitations under the License.\n");

fprintf(f, " */\n\n");

rs-spec-gen

frameworks-compile-slang/RSSpec.mk

screenshot2

sdk/screenshot/etc/screenshot2

# Set up prog to be the path of this script, including following symlinks,
# and set up progdir to be the fully-qualified pathname of its directory.

sig

cts/tools/signature-tools/sig

__signature-tools__

This project contains the source code and tests for API signature comparison tools.

It consists roughly of five parts:

#Signature model : A generic model to represent the structure of an API

#Converters      : A dex -> signature model converter (utilizing the dex-tools parser)

A java source -> signature model converter (utilizing the doclet tools)

#Delta model     : A model to represent differences between two signature models

#Comparator      : Put two signature models into the comparator and you get a delta model

#Report engine   : Translates a delta model to a html output based on templates (utilizing the StringTemplate framework)

Since this folder contains a .project file, it can be imported directly into eclipse as a java project.

Feel free to improve!

_Structure_

dex.reader

|

src : source code

|  |

|   signature :  the driver classes

|                   |

|     compare : the comparator code

|     |   |

|     |   model : the delta model

|     |

|     converter : the converters

|     |

|     io : common io interfaces

|     |   |

|     |   html : html report generator

|     |

|     model : signature model

|

test : source code of the test suite

|

templates : templates for html output generation

|

launches : eclipse launches for the tools

|

lib : required libraries

|

spec : various input files to try the tool

|

README.txt : you are here

|

TODO.txt   : tasks which are still open

sig-check

cts/tools/signature-tools/sig-check

sig-create

cts/tools/signature-tools/sig-create

simg2img

system-extras/ext4_utils/simg2img.c

sqlite3

SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至今已经有12个年头,SQLite也迎来了一个版本 SQLite 3已经发布

stack_dump

sdk/emulator/qtools/stack_dump.cpp

tblgen

external-clang/utils/TableGen/TableGen.cpp

//===- TableGen.cpp - Top-Level TableGen implementation for Clang ---------===//

//

//                     The LLVM Compiler Infrastructure

//

// This file is distributed under the University of Illinois Open Source

// License. See LICENSE.TXT for details.

//

//===----------------------------------------------------------------------===//

//

// This file contains the main function for Clang's TableGen.

//

//===----------------------------------------------------------------------===//

test_algorithm_host

test_char_traits_host

test_functional_host

test_g2g

test_iomanip_host

test_ios_base_host

test_ios_pos_types_host

test_iostream_host

test_iterator_host

test_limits_host

test_list_host

test_memory_host

test_set_host

test_sstream_host

test_streambuf_host

test_string_host

test_swiarb

test_type_traits_host

test_uninitialized_host

test_vector_host

test_zipfile

traceview

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/traceview.html

Traceview is a graphical viewer for execution logs saved by your application. Traceview can help you debug your application and profile its performance.

To start Traceview, enter the following command from the SDK tools/ directory:

traceview

For more information on how to use Traceview, see Profiling with Traceview and dmtracedump

使用细节:http://www.kuqin.com/mobile/20110828/264079.html

usbtest

system-core/fastboot/usbtest.c

/*

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS

* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE

* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,

* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,

* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS

* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED

* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

* SUCH DAMAGE.

*/

vm-tests

cts/tools/vm-tests/vm-tests.html

Dalvik VM Test Suite

Version 1.0

Copyright © 2008 The Android Open Source Project

Overview

This directory contains a test suite for the Dalvik VM. It tests the capabilities of the Dalvik VM in a black-box manner, based on the Dalvik bytecode and .dex file format specifications. The suite does both functional and verifier tests. Regarding the latter, the Dalvik VM is supposed to perform bytecode verification equivalent to that done in other virtual machines. Please see

        docs/dalvik/dalvik-bytecode.html
        docs/dalvik/dalvik-constraints.html
        docs/dalvik/dex-format.html
        docs/dalvik/verifier.html
      

for further details.

How to build

The test suite is normally included in a full build of the Android project. If it needs to be built individually, a simple

        make vm-tests
      

or an

        mm
      

in this directory will do.

How to run

The suite can be invoked by executing

        vm-tests
      

from any location, assuming the suite has been built. This will run all tests. If you want to limit the suite to the test cases corresponding to a single instruction, you can specifiy the mnemonic as a parameter. For example

        vm-tests add-int/lit16
      

executes the tests for the add-int/lit16 instruction. Please see the Dalvik VM specification for all the mnemonics. Two additional parameters are possible that don't represent instructions. These run integrity tests for the DEX file format and general verifier tests, respectively:

        vm-tests format
        vm-tests verifier
      

The suite is normally run for the fast version of the interpreter. To run it for the portable interpreter, pass --portable as the first parameter. Passing --help results in a brief overview of the options.

The suite is compatible with both emulator and simulator builds. For an emulator build, please make sure you have either an emulator running or a device attached via USB before invoking the test suite.

The full suite might easily take 30 minutes or more for execution, depending on the environment. It will generate an HTML report with details on all test cases. While running, console output is produced to give a quick impression of the progress and results. For both types of output, each individual test result falls into one of the following categories:

Type in report

Type on console

Description

Success

.

The test case passed successfully.

Functional failure

F

A functional (normal or boundary) or an exception test case failed.

Verifier failure

V

A verifier test case failed. Either the verifier accepted some invalid piece of code or it rejected a valid one.

Console error

C

The process running the VM returned error messages on the standard output or error stream, but it is not clear what the nature of the problem is. The test case is considered a failure, though. This problem should only occur when running the suite on a simulator build.

wdsclient

external-webkit/Source/WebKit/android/wds/client/main.cpp

/*

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY

* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR

* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR

* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY

* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

webkitmerge

external-webkit/Tools/android/webkitmerge/webkitmerge.cpp

/*

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY

* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR

* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR

* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY

* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

yuv420sp2rgb

development/tools/yuv420sp2rgb/yuv420sp2rgb.c

/*

YUV 4:2:0 image with a plane of 8 bit Y samples followed by an interleaved

U/V plane containing 8 bit 2x2 subsampled chroma samples.

except the interleave order of U and V is reversed.

H V

Y Sample Period      1 1

U (Cb) Sample Period 2 2

V (Cr) Sample Period 2 2

*/

zipalign

http://web.mit.edu/zac/MacData/afs/sipb/project/android/docs/tools/help/zipalign.html

zipalign is an archive alignment tool that provides important optimization to Android application (.apk) files. The purpose is to ensure that all uncompressed data starts with a particular alignment relative to the start of the file. Specifically, it causes all uncompressed data within the .apk, such as images or raw files, to be aligned on 4-byte boundaries. This allows all portions to be accessed directly with mmap() even if they contain binary data with alignment restrictions. The benefit is a reduction in the amount of RAM consumed when running the application.

This tool should always be used to align your .apk file before distributing it to end-users. The Android build tools can handle this for you. When using Eclipse with the ADT plugin, the Export Wizard will automatically zipalign your .apk after it signs it with your private key. The build scripts used when compiling your application with Ant will also zipalign your .apk, as long as you have provided the path to your keystore and the key alias in your project ant.properties file, so that the build tools can sign the package first.

Caution: zipalign must only be performed after the .apk file has been signed with your private key. If you perform zipalign before signing, then the signing procedure will undo the alignment. Also, do not make alterations to the aligned package. Alterations to the archive, such as renaming or deleting entries, will potentially disrupt the alignment of the modified entry and all later entries. And any files added to an "aligned" archive will not be aligned.

The adjustment is made by altering the size of the "extra" field in the zip Local File Header sections. Existing data in the "extra" fields may be altered by this process.

For more information about how to use zipalign when building your application, please read Signing Your Application.

Usage

To align infile.apk and save it as outfile.apk:

zipalign [-f] [-v] <alignment> infile.apk outfile.apk

To confirm the alignment of existing.apk:

zipalign -c -v <alignment> existing.apk

The <alignment> is an integer that defines the byte-alignment boundaries. This must always be 4 (which provides 32-bit alignment) or else it effectively does nothing.

Flags:

·         -f : overwrite existing outfile.zip

·         -v : verbose output

·         -c : confirm the alignment of the given file

文件2: 下载

Android工具详解

Android调试工具:

http://www.blogjava.net/lihao336/archive/2010/10/02/333674.html

1.TraceView
1)功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等

2)方法:

a)在程序代码中加入追踪开关

import android.os.Debug;

……

android.os.Debug.startMethodTracing(“/data/tmp/test”);//先建/data/tmp目录

……// 被追踪的程序段

android.os.Debug.stopMethodTracing();

b)编译,运行后,设备端生成/data/tmp/test.trace文件

c)把trace文件复制到PC端

$ adb pull /data/tmp/test.trace ./

d)使用android自带工具分析trace文件

$ANDROID_SRC/out/host/linux-x86/bin/traceview test.trace

  此时可看到各个函数被调用的次数CPU占用率等信息

e)使用android自带工具分析生成调用关系类图

$ apt-get install graphviz#安装图片相关软件

$ANDROID_SRC/out/host/linux-x86/bin/dmtracedump -g test.png test.trace

  此时目录下生成类图test.png

3)注意

trace文件生成与libdvm模块DEBUG版本相冲突,所以此方法只适用于对非DEBUG版本模拟器的调试,否则在分析trace文件时会报错

2.HProf (Heap Profile)

1)功能:

  用于java层面的内存分析,显示详细的内存占用信息,指出可疑的内存泄漏对象

2)方法:

a)在代码中加入dump动作

import android.os.Debug;

import java.io.IOException;

……

try {

android.os.Debug.dumpHprofData(“/data/tmp/input.hprof”); //先建/data/tmp目录

} catch (IOException ioe) {

}

b)把hprof文件复制到PC端

$ adb pull /data/tmp/input.hprof ./

c)使用命令hprof-conv把hprof转成MAT识别的标准的hprof

$ $ANDROID_SRC/out/host/linux-x86/bin/hprof-conv input.hprof output.hprof

d)使用MAT工具看hprof信息

  下载MAT工具:http://www.eclipse.org/mat/downloads.php

  用工具打开output.hprof

3)注意:此工具只能显示java层面的,而不能显示C层的内存占用信息

3.SamplingProfile (android 2.0上版本使用)

1)功能

  每隔N毫秒对当前正在运行的函数取样,并输出到log中

2)在代码中加入取样设定

import dalvik.system.SamplingProfiler

……

SamplingProfile sp = SamplingProfiler.getInstance();

sp.start(n);// n为设定每秒采样次数

sp.logSnapshot(sp.snapshot());

……

sp.shutDown();

  它会启一个线程监测,在logcat中打印信息

4.用发系统信号的方式取当前堆栈情况和内存信息

1)原理

dalvik虚拟机对SIGQUIT和SIGUSR1信号进行处理(dalvik/vm/SignalCatcher.c),分别完成取当前堆栈和取当前内存情况的功能

2)用法

a)$ chmod 777 /data/anr -R#把anr目录权限设为可写

$ rm /data/anr/traces.txt#删除之前的trace信息

$ ps # 找到进程号

$ kill -3 进程号 #发送SIGQUIT信号给该进程,此时生成trace信息

$ cat /data/anr/traces.txt

  功能实现:遍历thread list(dalvik/vm/Thread.c:dvmDumpAllThreadEx()),并打印当前函数调用关系(dalvik/vm/interp/Stack.c:dumpFrames())

b)$ chmod 777 /data/misc -R

$ ps # 找到进程号

$ kill -10 进程号 #发送SIGQUIT信事信号给该进程,此时生成hprof信息

$ ls /data/misc/*.hprof

  此时生成hprf文件,如何使用此文件,见第二部分(HProf)

  注意:hprof文件都很大,注意用完马上删除,以免占满存储器

5.logcat及原理

1)android.util.Log利用println的标准java输出词句,并加前缀I/V/D….

2)dalvik利用管道加线程的方式,先利用dup2把stdout和stderr重定向到管理中(vm/StdioConverter.c:dvmstdioConverterStartup),然后再启动一个线程从管道另一端读出内容(dalvik/vm/StdioConverter.c:stdioconverterThreadSt art()),使用LOG公共工具(system/core/liblog/logd_write.c: __android_log_print())输出到/dev/log/*中去

3)logcat通过加不同参数看/dev/log/下的不同输入信息

# logcat -b main显示主缓冲区中的信息

# logcat -b radio显示无线缓冲区中的信息

# logcat -b events显示事件缓冲区中的信息

6.jdwp(java debug wire protocol)及原理

1)虚拟机(设备端)在启动时加载了Agent JDWP从而具备了调试功能。在调试器端(PC端)通过JDWP协议与设备连接,通过发送命令来获取的状态和控制Java程序的执行。JDWP是通过命令(command)和回复(reply)进行通信的。

2)JDK 中调试工具 jdb就是一个调试器,DDMS也提供调试器与设备相连。

3)dalvik为JDWP提供了两种连接方式:tcp方式和adb方式,tcp方式可以手工指定端口,adb方式自动设定为8700端口,通常使用DDMS调试就是通过adb方式

7.monkey

1)monkey是一个android自带的命令行工具。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。

2)方法

  在设备端打开setting界面

$ adb shell 
   # monkey -p com.android.settings -v 500

  此时可以看到界面不断被切换
8.其它小工具

 具体见android.os.Debug中提供的工具

1)取毫微秒级的时间,用于计算时间

threadCpuTimeNanos()

2)统计两点间的内存分配情况

startAllocCounting()

stopAllocCounting()

getGlobalAllocCount()

get…..

3)打印当前已load的class

getLoadedClassCount()

printLoadedClasses()它需要打开NDEBUG功能才能打开system/core/中Log功能

9.打印debug信息

$ adb bugreport

Android开发工具

http://mobile.51cto.com/hot-246458.htm

1. Android Honeycomb Stencils & Sketchsheets


谷歌发布了专用于平板电脑的Android 3.0 Honeycomb系统,这个工具用于Honeycomb界面原型设计。

下载地址

2. DroidDraw


DroidDraw可以帮助您轻松的建立Android平台的图形用户界面,可运行于Mac OS X,Windows和Linux平台。

下载地址

3. Sensor Simulator


Sensor simulator是个独立的Java应用程序,它模拟传感器的数据并将它们传送到Android模拟器。

下载地址

4. Fireworks template for Android


这是一个Android用户界面元素模板集,根据Android模块进行划分。

下载地址

5. App Inventor


App Inventor可以让你在你的浏览器中设计Android应用程序,通过您的电脑和手机实时连接,让您的应用程序出现在您的手机上。

下载地址

6. Android Phone GUI Kit


这是一个Android手机界面元素包,对于设计应用程序原型非常有用。

下载地址

7. Android Sketch Stencil


这是一个线框图模板集,帮助开发者制作出功能原型,这样可以更好的对应用程序的功能进行描述和讨论。

下载地址

关于fastboot的使用:

http://wiki.cyanogenmod.com/wiki/Fastboot

Fastboot

Fastboot is a command line tool used to directly flash the filesystem in Android devices from a host via USB. It allows flashing of unsigned partition images. It is disabled in production devices since USB support has been disabled in the bootloader. You must have an Engineering SPL, or an SPL that is S-OFF.

After installing the Android SDK or ADB Standalone you can use 'fastboot' in addition to the more common ADB.

Contents

[hide]

·         1 Verify SPL S-OFF

·         2 Access bootloader

·         3 fastboot --help

·         4 Typical Partition Layout

·         5 Examples

o    5.1 Manual Nandroid restore

o    5.2 Flash Custom Recovery.img

o    5.3 Flash Custom boot.img

o    5.4 Development

Verify SPL S-OFF

With the exception of the Google Nexus One (which has an OEM unlock), when you boot the device into the bootloader, you should see S-OFF (security off) on the top line. If you see S-ON, or you see a four-color rainbow background, the SPL does not support fastboot. You will need to install a fastboot compatable SPL, such as HardSPL or any of the Engineering SPLsfor various devices. See the device specific page for further instructions.

Access bootloader

1.    Make sure you have ADB or the SDK installed.

2.    Download fastboot for the appropriate operating system for your computer.

3.    Place the executable in the proper place, usually:

§  Linux: ~/android_sdk/tools/ or ~/bin/

§  OS X: ~/android-sdk-macosx/platform-tools/

§  Windows: C:\android-sdk-windows\tools

4.    Turn off the device.

5.    Boot device into bootloader

6.    Make sure the device is in FASTBOOT and not HBOOT

7.    Connect the device to the computer via USB.

8.    On your computer, open terminal and run (you may need elevated privileges for this):

fastboot devices

You should see something similar to:

List of devices attached 
HTXXXXXXXXXX       device

fastboot --help

usage: fastboot [ <option> ] <command>
 
commands:
 update <filename>                        reflash device from update.zip
 flashall                                 flash boot + recovery + system
 flash <partition> [ <filename> ]         write a file to a flash partion
 erase <partition>                        erase a flash partition
 getvar <variable>                        display a bootloader variable
 boot <kernel> [ <ramdisk> ]                     download and boot kernel
 flash:raw boot <kernel> [ <ramdisk> ]           create bootimage and flash it
 devices                                  list all connected devices
 continue                                 continue with autoboot
 reboot                                          reboot device normally
 reboot-bootloader                        reboot device into bootloader
 
options:
 -w                                       erase userdata and cache
 -s <serial number>                              specify device serial number
 -p <product>                                    specify product name
 -c <cmdline>                                    override kernel commandline
 -i <vendor id>                                  specify a custom USB vendor id
 -b <base_addr>                                  specify a custom kernel base address
 -n <page size>                                  specify the nand page size. default:2048

Typical Partition Layout

For Reference when flashing partitions

Name

Nandroid .img

Information Contained

Mount Point

Notes

splash1

N/A

Boot image ("T-mobile G1" image)

mtdblock0?

size: 320x480x2. Different from bootanimation.zip.

recovery

N/A

A 'backup' kernel, initrd, and OS 
for system recovery / maintenance

mtdblock1

Can flash custom recovery.img (Amon_Ra, ClockworkMod, etc). 
Accessed by holding [home] while booting.

boot

boot.img

The main kernel and initrd

mtdblock2

Can flash custom boot.img

system

system.img

The main OS

mtdblock3

This is the /system partition

cache

cache.img

Temp storage

mtdblock4

Unused. Can be re-partitioned.

userdata

data.img

User data and settings

mtdblock5

This is the /data partition

Examples

Manual Nandroid restore

Make a Nandroid backup, and copy the folder off your SD card to your desktop.

cd ~/Desktop/path/to/backup/

fastboot flash userdata data.img

fastboot flash system system.img

fastboot flash boot boot.img

fastboot reboot

Flash Custom Recovery.img

fastboot flash recovery /path/to/<recovery>.img

fastboot reboot

Flash Custom boot.img

You should make a Nandroid backup first, in case you need to recover your boot.img

fastboot flash boot /path/to/<boot>.img

fastboot reboot

Development

If you are developing a kernel, you may find it helpful to delete your boot.img and recovery.img to force booting into fastboot:

fastboot erase boot

fastboot erase recovery

You can then manually boot from your custom kernel and a ramdisk:

fastboot boot <kernel> <ramdisk>

Once you have a working kernel and ramdisk, you can automagically combine them within fastboot:

fastboot flash:raw boot <kernel> <ramdisk>

Category: Tools

Android开发必备的21个免费资源和工具

http://mobile.51cto.com/android-221953.htm

相比较其他的平台,Android不依赖于任何约束第三方应用程序的私有的操作系统(题外话:美国最近宣布对于iPhone的破解和越狱将会是违法行为),Android本身就是开源的。由于开源,Android有巨大的开发社区支持。各种个样的例子和教程,GUI素材,和开发工具下载。几乎所有的都是免费提供的。“A Useful Selection of Android Developer Tools and Resources”这篇文章选出21个可以免费或开源的工具、资源和开发指南。希望这些资源能给你的Android应用带来帮助。

Android开发外文书籍推荐

1、免费的Android开发人员电子书:andbook


 andbook

原文地址:http://andbook.anddev.org/

如果你刚步入Android的开发,那么对于第一次开发Android应用程序的你来说,这本书是非常适合的。这本只有62页的PDF电子书里,有简单易懂的入门教程,帮助你在没有任何Android开发知识的背景下,教你开发Android应用程序。

2、免费的Android开发人员电子书:专业Android应用程序开发


 免费的Android开发人员电子书

原文地址:http://kronox.org/documentacion/Professional_Android_Application_Development.pdf

专业Android应用程序开发PDF电子书,是一本创建移动手机应用程序的上手指南,这本书特点简洁,还有着能帮助你快速构建真实Android移动电话应用程序的典型的例子。本书覆盖了Android手机所有本质特性,并同时展示了Android手机的高级特性。

相关文章参看:

◆Android App Developers GUI Kits, Icons, Fonts and Tools

原文地址:

http://speckyboy.com/2010/05/10/android-app-developers-gui-kits-icons-fonts-and-tools/

◆iPhone and iPad Development GUI Kits, Stencils and Icons

原文地址:

http://speckyboy.com/2010/04/30/iphone-and-ipad-development-gui-kits-stencils-and-icons/

◆Mobile Web and App Development Testing and Emulation Tools

原文地址:

http://speckyboy.com/2010/04/12/mobile-web-and-app-development-testing-and-emulation-tools/

◆14 Free Mobile Application Development Icon Sets

原文地址:

http://speckyboy.com/2010/03/08/14-free-mobile-app-development-icon-sets/

Android开源开发工具

3、Windows上的Android


 Android on Windows

下载地址:http://developer.android.com/guide/developing/tools/emulator.html

对于那些想测试驱动Android的开发者,可以使用这个Android模拟器,这个模拟器以单独的应用程序的形式独立运行在Windows PC之上,使用这个模拟器不用下载和完全安装复杂的Android开发包。你甚至可以在这个模拟器上安装和测试Android系统兼容的应用程序。

4、来自应用程序开发入门的Android模拟器


 Android入门模拟器

原文地址:http://developer.android.com/guide/developing/tools/emulator.html

Android的开发包中包含了一个移动设备模拟器。这个模拟器模仿了典型移动设备的硬件和软件特性(当然,不包含打电话)。这个模拟器提供各种个样的导航和控制按键,可以使用你的鼠标和键盘来“按”下这些按键为你的应用程序生成事件。这个模拟器也提供一个屏幕为你显示应用程序。同时,SDK中提供了很多能在模拟器上运行的应用程序。

5、感应模拟器


 感应模拟器

原文地址:http://www.openintents.org/en/node/23

感应模拟器是一个JAVA独立应用程序,感应模拟器模拟感应数据并把数据传给Android模拟器。这个感应模拟器可以让你模拟加速度仪器,指南针,和方向感应,这些数据可以用于Android应用程序,并通过感应器进行控制。

6、DroidEx:大(巨)屏上的Android项目

原文地址:http://github.com/commonsguy/droidex

DroidEx 可以让你附加的Android设备的显示屏内容复制一份到你的开发机屏幕。使用DroidEx来做演示是非常有用的。因为你可以把你的Android设备连接到你的笔记本电脑上或投影仪上,你的客户就可以通过这些设备来看你Android设备上的内容。DroidEx还可以用来演示那些用模拟器不方便演示的内容,比如说GPS或加速度仪器等内容。

7、Android的App Inventor


 Android的App Inventor

原文地址:http://appinventor.googlelabs.com/about/

Android 的App Inventor是来自Google为非开发人员准备的新工具,通过这个工具,非开发人员可以非常容易地在里面创建应用程序。可以通过网站的视屏来预览这个工具的功能特性。

免费和开源的应用程序

8、apps-for-android (Open Source Applications)

查看地址:http://code.google.com/p/apps-for-android/

这个链接中包含了许多实用的开源的Android应用程序。这些应用程序展示了Android的许多特性。

9、List of Sample Android Apps

查看地址:http://developer.android.com/resources/samples/index.html

这个Web页面是一个Android开发包中的实例程序列表。使用这个页面上的链接,你可以通过你的浏览器来阅读这些例子程序的源代码。你也可以把这些实例程序下载下来,当你需要的时候,你可以修改并使用他们。

10、Android Cookbook (Examples in Cookbook Form)

查看地址:http://code.google.com/p/android-cookbook/

这个站点有很多实用的Android示例程序,你完全可以重用这些例子。

11、OpenIntents

查看地址:http://www.openintents.org/en/

OpenIntends 设计和实现了开放式 intents和接口,其使得Android移动应用程序能更紧密的结合在一起。同时OpenIntends免费的提供了更专业和复杂的实例应用程序来演示他们的用法。

12、Android Snippets (Share Useful Snippets of Source Code)

查看地址:http://www.androidsnippets.org/

Android Snippets 是一个Android的实用代码段库,这个库是用来分享实用和优秀的Android应用程序代码;如果没有特别的需求,我们可以大量的重用这些代码库。

Android开发任务工具

13、如何开发Android中的常用任务

如何开发Android中的常用任务

原文地址:http://developer.android.com/guide/appendix/faq/commontasks.html

这是一个关于Android开发可能遇到的常用任务列表集合,并提供了一个快速、 how-to方式的帮助,来帮助你完成这些任务。

14、快速启动小抄


 快速启动小抄

原文地址:http://andblogs.net/fastboot/

快速启动小抄是一个非常实用和快速的列表,这个列表中罗列一些关于快速启动的相关任务

AndroidUI设计

15、UI指导原则

原文地址:http://developer.android.com/guide/practices/ui_guidelines/index.html

在这里你可以找一些到官方文章的连接,这些连接来自于“The Developer’s Guide”。这些文章的内容描述了关于Android可视交互应用程序的UI设计开发的指导原则。

◆Icon Design Guidelines

原文地址:http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

Download the Android Icon Templates Pack

下载地址:http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#templatespack

图标指导原则描述每类图标的细节,并做关于尺寸,颜色,阴影其他的细节的规范,根据这些规范你的设计的图标可以适用于Android系统。你也可以下载Android图标模板包,这个包里面是一些Photoshop和Illustrator模板和滤镜文件,通过这个模板包你可以更简单的创建满足规范的图标。

◆Widget Design Guidelines

原文地址:http://developer.android.com/guide/practices/ui_guidelines/widget_design.html

控件设计指导描述了如何设计适合其他主页屏的控件。这个连接会连接到一些图形文件和模板,通过这些模板和文件可以使你设计更简单。

◆Activity and Task Design Guidelines

原文地址:http://developer.android.com/guide/practices/ui_guidelines/activity_task_design.html

Activity和Task设计指导描述了活动的工作方式,并用图解示例演示了Activity,并描述了其重要的底层机制和原理,如多任务系统,Activity重用,intents,Activity栈,和Task。以设计层面的角度覆盖了活动的所有内容。

◆Menu Design Guidelines

原文地址:http://developer.android.com/guide/practices/ui_guidelines/widget_design.html

菜单设计指导描述了上下文菜单和选项菜单的不同。如何放置菜单项,何时放置屏幕命令,和其他的一些菜单细节。

16、Android UI的各种要素

这4部分的文档来自于mobiforge.com,文档中包含了组成Android UI的各种要素。文档的第一部分讨论Android中各种各样的有效的的布局。

◆Understanding User Interface in Android – Part 1


 Android UI文档第一部分

原文地址:http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

◆Understanding User Interface in Android – Part 2


 Android UI文档第二部分

原文地址:http://mobiforge.com/designing/story/understanding-user-interface-android-part-2-views

◆Understanding User Interface in Android – Part 3


 Android UI文档第三部分

原文地址:http://mobiforge.com/designing/story/understanding-user-interface-android-part-3-more-views

◆Understanding User Interface in Android – Part 4


 Android UI文档第四部分

原文地址:http://mobiforge.com/designing/story/understanding-user-interface-android-part-4-even-more-views

17、Android UI模式


 Android UI模式

原文地址:http://www.androidpatterns.com/

18、DroidDraw:Android用户接口图形编辑器


 DroidDraw

原文地址:http://www.droiddraw.org/

DroidDraw是一个为Android创建图形用户界面的UI设计器。它是一个独立的可执行程序,可以运行在Mac OS X,Windows和Linux上。

19、Android GUI PSD 向量包


 Android GUI PSD

原文地址:http://www.smashingmagazine.com/2009/08/18/android-gui-psd-vector-kit/

Android GUI Starter Kit包里面包含了多个按钮元素和不同接口选项的AndroidGUI内容。这些元素是基于Android1.5 GUI的,并且这些包里面的被提供给开源社区的Android应用程序模型。大部分的GUI元素和手机图例都是使用向量路径制成,所以他们非常地容易被缩放。对于文本AndroidSans包被使用。

20、Android的Firworks Template


 Firworks Template

原文地址:http://unitid.nl/2009/11/fireworks-template-for-android/

在Fireworks模板中,Android的各种元素被以向量图形的方式被重绘。在目录中,这些元素的名称大多根据Android词汇表被命名。

21、Android线框模板

原文地址:http://www.tomhume.org/2010/01/android-wireframe-templates.html

线框PDF是信纸大小(8.5英寸 * 11英寸)并且各部件都被拉伸。因此你可以非常容易的以纸张原型或拉伸为真实尺寸的方式来使用。如果你没有信纸,你可以用A4纸来打印。

我们选出21个可以免费或开源的工具、资源和开发指南。希望这些资源能给你的Android应用带来帮助。

原文标题:A Useful Selection of Android Developer Tools and Resources

原文地址:http://speckyboy.com/2010/08/04/a-useful-selection-of-android-developer-tools-and-resources/

出处:http://coolshell.cn/articles/2853.html

android有用的命令相关推荐

  1. (转)Android 常用 adb 命令总结

    转载地址:https://www.cnblogs.com/bravesnail/articles/5850335.html 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常 ...

  2. Android 常用 adb 命令总结【转】

    原文链接 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中 ...

  3. android 通过adb命令控制wifi开关

    android 通过adb命令控制wifi开关 2017年08月23日 17:47:46 刘国栋 阅读数:14598 版权声明:本文为博主原创文章,转载请声明文章出处. https://blog.cs ...

  4. 【转官方】Android ADB调试命令、支持的命令、ADB文档

    ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具. 持续更新中,欢迎提 PR 和 Issue 补充指 ...

  5. [安卓逆向]android adb常用命令及使用案例

    [安卓逆向]android adb常用命令 一.调试相关 1.开启adb服务 adb start-server 2.关闭adb服务 adb stop-server 3.列出所有连接的设备 adb de ...

  6. Linux 新手非常有用的命令

    http://www.cnblogs.com/felix-/p/4341773.html Linux 新手非常有用的命令 你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟! ...

  7. Android中gradlew命令的基本使用

    title: Android中gradlew命令的基本使用 date: 2018-07-10 16:18:01 tags: Android Gradle是一个基于Apache Ant和Apache M ...

  8. 移动测试基础 Android 常用 adb 命令总结

    https://testerhome.com/topics/2565 Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb ...

  9. Unix / 类 Unix shell 中有哪些很酷很冷门很少用很有用的命令?(转)

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:孙立伟 链接:http://www.zhihu.com/question/20140085/answer/14107336 ...

最新文章

  1. 正经“长生不老药”新进展:口服那种,贝佐斯投资 | 柳叶刀子刊
  2. java 证书管理系统_JAVA基础应用:单机版管理系统源代码
  3. @entity 不限字节长度的类型_在微信程序员眼里,1024字节能玩出什么花样?
  4. 基于nginx-rtmp实现电视回看业务
  5. 货店管理(delphi+sqlserver)
  6. go micro java_Java Micro Framework:您无法忽略的新趋势
  7. 终端I/O之行控制函数
  8. python sort函数返回值_python中 sort方法 和sorted函数
  9. 想要创业有没有过来人能够指导一下
  10. Fiddler抓包【3】_设置断点修改
  11. 2天玩转单反相机引领时尚娱乐新生活
  12. 【渝粤教育】电大中专药物分析技术基础_1作业 题库
  13. APP一键登录测试点
  14. 4 实验项目_Android开发环境搭建
  15. [洛谷] P1097 [NOIP2007 提高组] 统计数字
  16. 网站老是被劫持怎么办、网站被劫持的解决方案有哪些
  17. rxjava背压_rxjava3——背压
  18. 七牛服务器提供的压缩图片的方法
  19. 计算机无法加载引导,硬盘找不到无法读取MBR(硬盘的主引导记录)故障分析及解决技巧...
  20. HBM (High Bandwidth Memory)

热门文章

  1. 智能电视可以安装鸿蒙操作系统吗,智能电视或将现寡头垄断,鸿蒙凭为何能“上任”?...
  2. c语言小爱心怎么打印出来,C语言打印爱心
  3. bitbake-2-poky系统结构
  4. 美国知乎热议: 关于CS专业, 有哪些你不知道的内幕
  5. Mixly遥控器调节LED灯亮度
  6. 使命召唤10:幽灵中文版分享
  7. #文本编辑器#卸载Notepad++?除了Notepad++,还有啥能代替的吗?有,必须有!!!
  8. Visual Studio 2022 免费版最新版本下载安装教程
  9. 未来5年光通信系统十大技术趋势发布
  10. (你也可以像别人一样对框架底层源码来去自如)23种设计模式之外观模式