android 常用工具命令

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介:

工具

核心功能

使用

adb

一个客户端服务器程序,使用命令行的方式与设备通信,需要设备开启usb debugging
功能包括:列设备、安装apk、拷贝文件、server启停、运行shell

adb devices
adb bugreport 
打印分析报告
adb install path_to_apk
adb push local remote
adb pull remote local
adb logcat [optons] [filter-spec]
:日志查询
adb shell

bmgr

应用的备份、恢复、擦除

备份设置:adb shell bmgr backup <pkg>
备份执行:adb shell bmgr run
执行恢复:adb shell bmgr restore <pkg>
擦除数据:adb shell bmgr wipe <package>
开关设置:adb shell bmgr enable <boolean>

am

activity管理,activityservicebroadcast的发送,杀进程,profiledump,屏幕尺寸,uri转换

adb shell am start [options] <INTENT>
adb shell startservice [options] <INTENT>
adb shell broadcast [options] <INTENT>
adb shell force-stop <PACKAGE>
adb shell kill [options] <PACKAGE>/kill-all
instrument [options] <COMPONENT>
profile start <PROCESS> <FILE>/profile stop <PROCESS>
dumpheap [options] <PROCESS> <FILE>
am display-size 1280x800/am display-density 480
to-uri <INTENT>/to-intent-uri <INTENT>

pm

package管理,列举、安装、卸载、发放回收权限、创用户

adb shell pm list packages [options] <FILTER>
list instrumentation/features/libraries/users
install [options] <PATH>/uninstall [options] <PACKAGE>
grant <PACKAGE_PERMISSION>/revoke <PACKAGE_PERMISSION>
create-user <USER_NAME>/remove-user <USER_ID>

procrank

各进程内存使情况排

adb shell procrank

dumpsys

meminfo查看dalviknative的内存占用情况

adb shell dumpsys | grep DUMP
adb shell dumpsys batteryinfo
adb shell dumpsys meminfo com.alibaba.***

showmap

查看进程各个部分占用的内存情况

adb shell showmap 8179

其他常见命令

getprop 返回Android的所有系统属性
watchprosp
动态监视这些属性的变化
getevent 
打印所有的键盘和触摸事件
printenv 
系统环境变量
dmesg (
查看 Android Linux Kernel 运行信息)

 

monitor

多个监控分析工具的集合,dumpthreadprofilingsystracetraceopengl calls

命令行执行monitor/sdktools目录执行monitor.bat

Traceview

Traceview是图形化的日志查询器,提供时间线面板方便查看线程和方法的起始时间,profiling面板查看方法内的执行信息(Traceview分析时会禁止JIT,容易导致执行时间分析的不准确,多耗费的时间可能因为JIT编译而优化掉)

trace文件可以在代码里调用api实现:
    Debug.startMethodTracing("calc");
    // ...
    Debug.stopMethodTracing();
也可以通过DDMS里的start tracking按钮实现
拷贝:adb pull /sdcard/calc.trace /tmp
分析:traceview /tmp/calc
Incl Cpu Time:
方法总耗时,含内部调用其他方法的时间
Excl Cpu Time
:方法自身耗时,不含内部调用其他方法的耗时
Calls + Recur Calls
:被调用次数 及 递归调用次数

hprof-conv

dump后的hprof文件需要转换下才能被mat打开

hprof-conv 1.hprof 2.hprof

Draw 9-patch

生成拉伸不失真图片,可以定义哪里可以拉伸,哪里是内容区域

sdktools目录运行draw9patch.bat

Hierarchy Viewer

提供层级浏览,调试优化界面,提供了宝贵的分析信息,以便了解布局里面的每一个视图控件测量、渲染和绘制要花多少时间

sdktools目录运行hierarchyviewer.bat

layoutopt 

布局分析工具

layoutopt 全路径.xml

lint

静态代码分析工具,发现潜在的Bug和性能、安全问题

lint myproject
lint --check MissingPrefix myproject
:检测一项
lint --check Accessibility --html accessibility_report.html myproject
:生成报告
lint --list
lint -Wall 
检测全部warning项目

monkey

可以产生用户点击、触摸、手势等事件的程序,可以在开发阶段进行测试
可以通过参数设置事件数、包限制、事件类型等参数,monkey会进行监控并进行必要的报告

adb shell monkey [options] <event-count>
adb shell monkey -p your.package.name -v 500
- v[number] number
:制定发送伪随机事件的次数
-p <allowed-package-name>
-c <main-category>
--throttle [milliseconds]:
每次发送事件的时间间隔

ProGuard 

一个通过删除无用代码、重命名方式压缩、优化、混淆代码的工具,release模式自动运行

创建工具后会自动生成proguard.cfg文件,可配置如何混淆代码,运行后会自动生成多个txt文件说明混淆后和混淆前的关联信息
-keep public class <MyClass>
避免清理到必要的类
反处理:retrace.bat -verbose mapping.txt obfuscated_trace.txt

Systrace

通过捕获应用进程和系统进程信息实现性能分析,会合并android内核(CPU/磁盘)数据生成报告,非常适合于分析展示慢问题。
当前只能在linux平台上使用,需要安装python并配置环境变量,需要android4.1以上版本,需要USB调试

可以通过EclipseAndroid StudioDevice Monitor及命令行执行,可以通过代码调用API执行,-o输出html报告
python systrace.py [options] [category1]  ... [categoryN]
python systrace.py --time=10 -o mynewtrace.html sched gfxview wm

Wireshark/tcpdump

抓包工具,需要root手机

下载安装tcpdump到手机里,别安装到SD
提高权限:chmod 777 tcpdump
开始抓包:tcpdump -p -vv -s 0 w [pcapfilePathtcpdump -p -vv -s 0 w [pcapfilePath]  Ctrl+C停止
导出.pcap日志文件后用wireshark分析

StrickMode

限制模型,开发人员选项里可以开启,在代码里启动后可以帮助分析不规范的代码实现

我们通常在 Activity 或者自定义的Application类中启动StrictMode,代码如下:
public void onCreate() {
     if (DEVELOPER_MODE) {
         StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder()
                 .detectDiskReads()
                 .detectDiskWrites()
                 .detectNetwork()   // or .detectAll() for all detectable problems
                 .penaltyLog()
                 .build());
         StrictMode.setVmPolicy(newStrictMode.VmPolicy.Builder()
                .detectLeakedSqlLiteObjects()
                .detectLeakedClosableObjects()
                 .penaltyLog()
                 .penaltyDeath()
                 .build());
     }
     super.onCreate();
 }

RE 浏览器

root文件浏览器,修改 host 文件

 

开发人员选项

绘图、GPU、监控等

 

Emmagee

CPU、内存、流量、电量

Emmagee:性能测试小工具
开源地址:https://github.com/NetEase/Emmagee
apk
下载地址:http://emmagee.googlecode.com/files/Emmagee.apk

zipalign

apk进字节对齐 :zipalign -c -v 4application.apk
elcipse
里的ADT插件也可以导出对齐:Android Tools=>Exports Signed Application ...

使用 zipalignapk进字节对齐,不然会耗费更多内存。

 

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
6月前
|
网络协议 Android开发 Python
Android 抓包工具r0capture使用
Android 抓包工具r0capture使用
540 1
|
6月前
|
安全 Java Linux
Android反编译——jadx工具
Android反编译——jadx工具
261 1
|
6月前
|
Android开发 芯片 开发者
Android MediaTek bootloader 的序列号长度 & 移除非字母和数字限制 SN-Writer工具支持写入
Android MediaTek bootloader 的序列号长度 & 移除非字母和数字限制 SN-Writer工具支持写入
97 0
|
3月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
59 1
|
4月前
|
Java Android开发 iOS开发
探索安卓与iOS开发的差异性:平台、工具和用户体验的对比分析
【7月更文挑战第30天】在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据着不可忽视的地位。本文将深入探讨这两大平台在开发环境、工具选择以及最终用户体验上的根本差异,并分析这些差异如何影响开发者的策略和用户的偏好。通过比较安卓的开放性与iOS的封闭性,我们将揭示不同平台下的开发哲学及其对生态系统的影响。
47 4
|
4月前
|
开发工具 Android开发 数据安全/隐私保护
探索iOS与安卓应用开发的异同:技术、工具和市场趋势
在移动操作系统的广阔舞台上,iOS和安卓两大主角各自演绎着怎样的精彩?本文将深入剖析这两大平台在应用开发过程中的技术差异、开发工具的选择以及面对的市场环境。通过数据支撑和案例分析,我们将一窥这两个系统如何影响开发者的决策,并探讨它们未来的发展方向。
|
3月前
|
API 调度 Android开发
Android经典实战之处理后台任务的2个工具
本文介绍Android后台任务管理,涵盖WorkManager与JobScheduler的使用方法及区别。WorkManager属Jetpack库,确保任务可靠执行,支持延迟与条件依赖。JobScheduler则针对特定条件下的任务调度,如网络类型。两者各有优势,WorkManager适用于多数场景。
51 0
|
4月前
|
监控 开发工具 Android开发
探索安卓与iOS开发的差异:平台特性、工具和市场趋势
在移动应用开发的广阔舞台上,安卓与iOS两大操作系统扮演着主角。它们各自拥有独特的平台特性、开发工具和市场定位,这些差异深刻影响着开发者的决策和产品的最终形态。本文将深入分析这两大平台的关键技术差异,探讨各自的开发环境和工具集,以及它们在市场上的表现和未来的趋势,为开发者提供一个全面的视角,帮助他们在这两个平台上做出更明智的开发选择。
|
5月前
|
监控 Android开发 iOS开发
探索Android与iOS开发的差异:平台、工具和用户体验的比较
【6月更文挑战第25天】在移动应用开发的广阔天地中,Android和iOS两大平台各领风骚,它们在开发环境、工具选择及用户体验设计上展现出独特的风貌。本文将深入探讨这两个操作系统在技术实现、市场定位和用户交互方面的关键差异,旨在为开发者提供一个全景式的视图,帮助他们在面对项目决策时能够更加明智地选择适合自己项目需求的平台。
|
5月前
|
安全 API Android开发
Android打开USB调试命令
【6月更文挑战第20天】
194 1
下一篇
无影云桌面