Android framework下的工具使用说明
Android_Tools
Android_Framework
framework源码位置:
https://android.googlesource.com/platform/frameworks/
和应用相关的多数是base下的模块:
https://android.googlesource.com/platform/frameworks/base/
以此部分模块对应在Android Sdk源码中的位置:
Sdk\sources\android-X\com\android\
和 framework 下相关工具的位置是 :
android / platform / frameworks / base / cmds
转载:
http://my.oschina.net/DragonWang/blog/62082
Android系统源码目录 system/framework 下各个jar包的用途
- am.jar:终端下执行am命令时所需的java库。源码目录:framework/base/cmds/am
- android.policy.jar:锁屏界面需要用到的jar包,该包引用了android.test.runner.jar,源码目录:framework/base/policy
- android.test.runner.jar:测试应用所需的jar包,该包引用了core.jar,core-junit.ajr以及framework.jar,源码目录:framework/base/test-runner
- bmgr.jar:adb shell命令下对Android Device所有package备份和恢复的操作时所需的java库。官方文档:http://developer.android.com/guide/developing/tools/bmgr.html。不过这个android服务默认是Disabled,而且要backup的应用必须实现BackupAgent,在AndroidManifest.xml的application标签中加入android:backupAgent属性。源码目录:framework/base/cmds/bmgr
- bouncycastle.jar: java三方的密匙库,网上资料说用来apk签名、https链接之类,官网 :http://www.bouncycastle.org/java.html
- com.android.future.usb.accessory.jar:用于管理USB的上层java库,在系统编译时hardware层会调用到。源码目录:frameworks/base/libs/usb
- com.android.location.provider.jar:
- com.android.nfc_extras.jar:NFC外部库。android/nfc/NfcAdapter.java会调用到包中的NfcAdapterExtras.java。源码目录:frameworks/base/nfc-extras
- core-junit.jar :junit核心库,在运行*Test.apk时被调用。
- core-junitrunner.jar:未知,公司话机上有。
- core-tests*.jar:framework下的一系列测试jar包,不做测试时可删除。
- core.jar:核心库,启动桌面时首先加载这个。源码目录:
- ext.jar:android外部三方扩展包,源码主要是external/nist-sip(java下的sip三方库)、external/apache-http(apache的java三方库)、external/tagsoup(符合SAX标准的HTML解析器)。其实这个jar包可以添加外部扩展jar包,只需在framework/base/Android.mk中的ext-dir添加src目录即可。
- framework-res.apk:android系统资源库。
- framework.jar:android的sdk中核心代码。
- ime.jar:ime命令所需jar包,用于查看当前话机输入法列表、设置输入法。源码目录:framework/base/cmds/ime
- input.jar:input命令所需的jar包,用于模拟按键输入。源码目录:framework/baes/cmds/input
- javax.obex.jar:java蓝牙API,用于对象交换协议。源码目录:framework/base/obex
- monkey.jar:执行monkey命令所需jar包。源码目录:framework/base/cmds/monkey
- settings.jar : settings设置,对应Settings的功能
- pm.jar:执行pm命令所需的jar包,pm详情见adb shell pm,源码目录:framework/base/cmds/pm
- services.jar:话机框架层服务端的编译后jar包,配合libandroid_servers.so在话机启动时通过SystemServer以循环闭合管理的方式将各个service添加到ServiceManager中。源码目录:framework/base/service
- sqlite-jdbc.jar: sqlite的Java DataBase Connextivity jar包。
- svc.jar:svc命令所需jar包,可硬用来管理wifi,power和data。源码目录:framework/base/cmds/svc,详情见:http://madgoat.cn/2011/02/android_svc/
- wm.jar : 屏幕命令可以修改屏幕相关参数
对应的命令的jar源码在platform/framework/base/cmds/xxx
目录下,这些命令都有相应的可执行脚本在/system/bin/目录下,可以在adb shell中直接执行上面的工具命令.
e.g.
使用的settings命令:
# 查看是否开启(1开启,0关闭)
adb shell settings get global adb_enabled
# 列出global下所有的属性值
adb shell settings list global
# 开启adb调试
adb shell settings put global adb_enabled 1
# 关闭adb调试
adb shell settings put global adb_enabled 0
在/system/bin目录下有这么个可执行脚本
# Script to start "settings" on the device
#
base=/system
export CLASSPATH=$base/framework/settings.jar
exec app_process $base/bin com.android.commands.settings.SettingsCmd "$@"
脚本直接执行的是exec app_process
命令(app_process
是可执行命令,在/system/bin
目录下),com.android.commands.settings.SettingsCmd
类作为参数传入,实际上其内部执行的是settings.jar的SettingsCmd里面的main方法(参考:Android中启动JAVA程序多种方式)。
有些权限执行需要su权限才能执行,这样修改系统属性而不用使用java层的代码,需要系统签名级别的应用才能调用的一些API。