安卓系统开发调试工具整理.docx

上传人:b****7 文档编号:16487882 上传时间:2023-07-14 格式:DOCX 页数:45 大小:2.55MB
下载 相关 举报
安卓系统开发调试工具整理.docx_第1页
第1页 / 共45页
安卓系统开发调试工具整理.docx_第2页
第2页 / 共45页
安卓系统开发调试工具整理.docx_第3页
第3页 / 共45页
安卓系统开发调试工具整理.docx_第4页
第4页 / 共45页
安卓系统开发调试工具整理.docx_第5页
第5页 / 共45页
安卓系统开发调试工具整理.docx_第6页
第6页 / 共45页
安卓系统开发调试工具整理.docx_第7页
第7页 / 共45页
安卓系统开发调试工具整理.docx_第8页
第8页 / 共45页
安卓系统开发调试工具整理.docx_第9页
第9页 / 共45页
安卓系统开发调试工具整理.docx_第10页
第10页 / 共45页
安卓系统开发调试工具整理.docx_第11页
第11页 / 共45页
安卓系统开发调试工具整理.docx_第12页
第12页 / 共45页
安卓系统开发调试工具整理.docx_第13页
第13页 / 共45页
安卓系统开发调试工具整理.docx_第14页
第14页 / 共45页
安卓系统开发调试工具整理.docx_第15页
第15页 / 共45页
安卓系统开发调试工具整理.docx_第16页
第16页 / 共45页
安卓系统开发调试工具整理.docx_第17页
第17页 / 共45页
安卓系统开发调试工具整理.docx_第18页
第18页 / 共45页
安卓系统开发调试工具整理.docx_第19页
第19页 / 共45页
安卓系统开发调试工具整理.docx_第20页
第20页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

安卓系统开发调试工具整理.docx

《安卓系统开发调试工具整理.docx》由会员分享,可在线阅读,更多相关《安卓系统开发调试工具整理.docx(45页珍藏版)》请在冰点文库上搜索。

安卓系统开发调试工具整理.docx

安卓系统开发调试工具整理

1.Adb常用命令

为了可以在终端直接使用adb命令,我们可以配置一下环境变量。

Windows:

右键我的电脑-属性,调出以下窗口

图1-1环境变量配置

图1-2环境变量配置

按照以上步骤新建一个环境变量,然后将adb所在的路径加上去。

1.1.Adb调试

先打开usb调试模式

adbdevices:

主要是用于打印当前连接的所有模拟器或者设备

adbroot:

以root权限运行

adbremount:

重新挂载分区,使system分区变成可读写,一般用于传输文件到Android设备

1.2.Package管理

adbinstall:

主要用于往Android设备push应用

adbinstall[option]

adbinstalltest.apk直接安装应用

adbinstall-rtest.apk替代存在的应用,不会删除应用数据,用于更新应用特别方便

adbuninstall:

从设备或者模拟器卸载应用

adbuninstall[options]

adbuninstallcom.example.application直接删除应用和所有数据

adbuninstall-kcom.example.application删除应用,但会保留应用数据和缓存数据

adbinstall常见错误

错误信息

错误解析

INSTALL_FAILED_ALREADY_EXISTS

程序已经存在

INSTALL_FAILED_INVALID_APK

无效的APK

INSTALL_FAILED_INVALID_URI

无效的链接

INSTALL_FAILED_INSUFFICIENT_STORAGE

没有足够的存储空间

INSTALL_FAILED_DUPLICATE_PACKAGE

已存在同名程序

INSTALL_FAILED_NO_SHARED_USER

要求的共享用户不存在

INSTALL_FAILED_UPDATE_INCOMPATIBLE

版本不能共存

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

需求的共享用户签名错误

INSTALL_FAILED_MISSING_SHARED_LIBRARY

需求的共享库已丢失

INSTALL_FAILED_REPLACE_COULDNT_DELETE

需求的共享库无效

INSTALL_FAILED_DEXOPT

dex优化验证失败

INSTALL_FAILED_OLDER_SDK

系统版本过旧

INSTALL_FAILED_CONFLICTING_PROVIDER

存在同名的内容提供者

INSTALL_FAILED_NEWER_SDK

系统版本过新

INSTALL_FAILED_TEST_ONLY

调用者不被允许测试的测试程序

INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

包含的本机代码不兼容

CPU_ABIINSTALL_FAILED_MISSING_FEATURE

使用了一个无效的特性

INSTALL_FAILED_CONTAINER_ERROR

SD卡访问失败

INSTALL_FAILED_INVALID_INSTALL_LOCATION

无效的安装路径

INSTALL_FAILED_MEDIA_UNAVAILABLE

SD卡不存在

INSTALL_FAILED_INTERNAL_ERROR

系统问题导致安装失败

DEFAULT

未知错误

表1-1错误信息

常见解决方案:

错误信息

解决方案

INSTALL_FAILED_INVALID_APK

检查安装包是否完整

INSTALL_FAILED_INSUFFICIENT_STORAGE

清理一下存储空间

INSTALL_FAILED_DUPLICATE_PACKAGE

卸载之前的apk

INSTALL_FAILED_UPDATE_INCOMPATIBLE

卸载之前的apk

INSTALL_FAILED_OLDER_SDK

系统版本过旧

INSTALL_FAILED_NEWER_SDK

系统版本过新

INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

签名不一致,卸载之前版本

INSTALL_CANCELED_BY_USER

勾选\"系统设置->安全->未知来源\"

INSTALL_FAILED_TEST_ONLY

AndroidManifets中将testOnly=”true”去掉

表1-2解决方案

adbshellpmlistpackages:

打印设备下面的所有应用包名

adbshellpmpath

打印apk的路径

adbshellpmclear

清除应用缓存

1.3.文件管理

adbpull[local]:

从Android设备下载文件到PC,其中代表文件在设备中的地址,[local]代表存放目录

下载一个文件夹到电脑

示例:

adbpull/sdcard/temp./temp:

下载一个目录所有文件,将车机中的temp目录下载到电脑端的temp目录

下载一个文件到电脑端

示例:

adbpull/sdcard/temp/1.txt./temp/:

下载一个文件,将1.txt下载到电脑的temp目录下。

adbpush

将电脑端的文件或者文件夹推进车机等Android设备中

将电脑端一个目录推到Android设备

示例:

adbpush./temp/sdcard/:

push电脑端的temp文件夹到车机/sdcard下面

将电脑端一个文件推到Android设备

adbpush./temp/1.txt/sdcard/temp/:

将1.txt推到车机中的/sdcard/temp目录下

以下为进入Android设备后执行(adbshell),一些linux基础命令,其他见1.7linux基本命令

ls:

列出目录内容

cd:

和一般的PC的cd差不多,主要用于切换目录

rm[options]

删除文件或者目录

rm–r:

删除目录

mkdir:

创建文件夹,抓取套件日志的时候需要创建文件夹可以用到

touch:

创建一个新文件或者改变文件修改时间,用于在车机中创建文件,例如助理3.5在PerformLog文件夹下创建all.txt,可以直接执行touchall.txt,而不需要在电脑创建再push进去。

pwd:

定位当前的操作位置

cp[options]

复制

mv:

移动或者更名文件,

cat:

将文件内容输出到终端

在车机中实际操作如下图,注意每次操作后执行ls–l查看当前目录下的文件和文件夹:

图1-3常用文件操作命令

1.3.1.查看SharedPreferences文件

图1-4查看SharedPreferences命令

1、执行run-as+package:

查询语助的安装路径

2、执行cdshared_prefs:

进入安装后自动生成保存SharedPreferences的路径

3、执行cat命令查看其中的一个xml文件,可以看到语助应用的一些key值对应的value

1.3.2.查看db文件

1、将db文件从Android设备中拷贝出来

adbpull/data/data/package_name/database/app_name.dbpc路径(以\分隔符)

2、用SQLiteStudio工具打开db文件可以对查看数据的表和其他数据

1.4.日志

adblogcat[options][filter-specs]:

打印日志文件

一般配合重定向符>保存日志文件

1.4.1.日志优先级

adblogcat*:

Vlowestpriority,filtertoonlyshowVerboselevel打印详细日志,常用,以下优先级的日志也会打印

adblogcat*:

DfiltertoonlyshowDebuglevel

adblogcat*:

IfiltertoonlyshowInfolevel

adblogcat*:

WfiltertoonlyshowWarninglevel

adblogcat*:

EfiltertoonlyshowErrorlevel

adblogcat*:

FfiltertoonlyshowFatallevel

adblogcat*:

SSilent,highestpriority,onwhichnothingiseverprinted

1.4.2.adblogcat选项解析

"-c"选项:

清空所有的日志缓存信息;

"-s"选项:

设置输出日志的标签,只显示该标签的日志

"-g"选项:

查看日志缓冲区信息

图1-4logcat选项

"-b"选项:

加载一个日志缓冲区,默认是main。

system缓冲区-与系统相关的日志信息,radio缓冲区-广播电话相关的日志信息,events缓冲区-事件相关的日志信息,main缓冲区-默认的缓冲区

"-v"选项:

设置日志的输出格式,注意只能设置一项,有以下取值:

1.brief:

/):

示例:

D/HeadsetStateMachine(1785):

Disconnectedprocessmessage:

10,size:

0

2.process:

示例:

D(1785)Disconnectedprocessmessage:

10,size:

0(HeadsetStateMachine)

3.tag:

/:

示例:

D/HeadsetStateMachine:

Disconnectedprocessmessage:

10,size:

0

4.raw:

示例:

Disconnectedprocessmessage:

10,size:

0

5.time:

:

示例:

08-2822:

39:

39.97417851832DHeadsetStateMachine:

Disconnectedprocessmessage:

10,size:

0

6.threadtime:

:

示例:

08-2822:

39:

39.97417851832DHeadsetStateMachine:

Disconnectedprocessmessage:

10,size:

0

7.long:

[:

/]

常用日志获取adblogcat–vtime>./logcat.txt表示按时间的格式输出,同时没有限制日志优先级按*:

V默认格式输出

1.5.dumpsys获取相关的系统数据

adbshelldumpsys:

获取系统数据

adbshelldumpsys–l:

查看所有可以dumpsys的命令

dumpsysactivity:

查询AMS服务相关信息

示例:

dumpsysactivityscom.iflytek.cutefly.speechclient.hmi,查看进程所有service状态

图1-5dumpsys操作命令

1、代表进程号

2、代表绑定包名

3、代表绑定进程的user用户名

用ps–ef查询所有进程,grep查找关键字,可以看到其中一个匹配的进程存在™

图1-6dumpsys操作命令

示例:

dumpsysactivitybcom.iflytek.cutefly.speechclient.hmi,查询语助所有的广播状态

图1-7dumpsysactivity操作命令

dumpsyswindow:

查询WMS服务相关信息

以下是dumpsyswindow可以查询的所有信息

图1-8dumpsyswindow操作命令

可以通过dumpsyswindowl打印出最后一次ANR信息

示例:

dumpsyswindowa查询窗口状态

没有启动语助时执行的结果:

图1-9dumpsyswindow操作命令

启动语助执行的结果:

图1-10dumpsyswindow操作命令

也就是会打印出当前界面的窗口状态

dumpsyscpuinfo:

查询CPU情况,可以接>保存到文件

获取当前各个应用cpu使用情况

图1-11dumpsyscpuinfo操作命令

dumpsysmeminfo:

查询内存情况,打印各个应用的内存使用情况

图1-12dumpsysmeminfo操作命令

执行dumpsysmeminfocom.iflytek.cutefly.speechclient.hmi可以查看具体应用的内存使用情况JavaHeap和NativeHeap有分别的大小限制,一个大型应用一般将移到NativeHeap防止应用OOM。

图1-13dumpsysmeminfo操作命令

amdumpheapcom.iflytek.cutefly.speechclient.hmi/data/local/tmp/hmi.hprof执行这个命令可以在语助占用内存大时将当前语助的内存使用情况导出来,分析可参考3.3内存分析。

1.6.截图

adbshellscreencap

截取屏幕当前图片

示例:

截图,然后pull到电脑端

adbshellscreencap/sdcard/test.png截图存放

adbpull/sdcard/test.png取到PC当前文件夹

adbshellscreenrecord:

屏幕录制,必须在Android4.4(APIlevel19)以上才可使用,可保存为.mp4文件

示例:

将视频录制到/sdcard,然后pull出来

adbshellscreenrecord--size1280x720/sdcard/temp1.mp4

adbpull/sdcard/temp1.mp4./Desktop/

1.7.系统

adbshellps:

打印进程状态

adbshelltop:

展现上层CPU进程信息

adbshellgetpropkey:

获取Android系统服务属性,对应Android的SystemProperties类

adbshellsetpropkeyvalue:

设置服务属性

sync:

将内存缓存写进磁盘,Linux系统不是实时写入,会缓存在内存,像突然掉电有可能造成一些文件来不及写进导致下一次读取的值不是预期的值。

reboot:

重启机器

aaptdumpbadgingtest.apk:

可以查看test.apk包名、版本号、Activity入口,aapt在sdk中,需要配置环境变量

以下是客户提供的一个apk,我们可以看到程序入口,然后配合am命令启动界面。

图1-14查看系统信息操作命令

可以看到包名和launchable-activity这样我们可以知道怎么打开Activity

可以通过改命令启动amstart–n.testipodserviceapp/.MainActivity

还有的情况是验证给系统签名的apk,通过查看版本号是否为我们所需的apk。

dumpsyspackage:

查看车机安装应用信息

dumpsyspackagecom.iflytek.cutefly.speechclient.hmi|grepversionName

图1-15dumpsyspackage操作命令

这个命令可以确定我们安装的apk版本号是否正确

查看cpu型号

可以通过cat/proc/cpuinfo命令可以查看cpu型号和一些参数,像processor一般是指cpu厂商,以下实例没有体现。

图1-16cpuinfo操作命令

1.8.Linux基本命令

kill:

杀死进程

grep:

查找关键字,基本所有命令都可加|grep“关键字”。

adbshell“logcat|grep–eword1–eword2”。

可以同时搜索两个关键字。

clear:

清屏

1.9.am模拟启动组件

am-h:

查看帮助

amstart-a:

表示打开一个action

amstart-ncom.android.music/com.android.music.MusicBrowserActivity 启动一个组件

amstartservice-ncom.android.music/com.android.music.MediaPlaybackService:

启动一个service

amstopservice:

停止一个服务

ambroadcast-a:

发送一个广播,助理3.5中发送广播限定了package,记得模拟发送广播加上-p

[-e|–es…]:

extra,类型为string

[–ez…] :

boolean

[–ei…] :

int

[–el…]:

long

1.10.monkey测试

是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

Monkey测试特点

可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

Monky测试使用的事件流数据流是随机的,不能进行自定义。

测试的对象仅为应用程序包,有一定的局限性。

详见链接

1.11.模拟按键事件

Android有一套统一按键keycode

inputkeyeventkeycode

图1-17keycode对应值

示例:

返回键adbshellinputkeyevent4或者adbshellinputkeyeventKEYCODE_BACK

1.12.PuTTY串口调试工具

一般车机会配置串口供调试使用,这边简单介绍以下PuTTY工具的使用

图1-18putty设置

将串口接到电脑,到设备管理器查看串口的设备号,例如图中的为COM3,接着跟系统方确认波特率Speed,接着点击打开即可打开一个终端,可以执行adb命令等。

1.13.静态代码检测工具

静态检测指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

以下附上Coverity代码静态检测链接

:

8888/svn/ZNQC_KnowledgeSystem/Trunk/Project/03.Study/依赖文档/《语音助理声学前端指导手册》依赖文档/coverity相关

2.Cpu分析

2.1.配合使用top命令

top-H-d1-p+进程号

-H:

表示显示该进程的线程使用cpu情况,有的设备是-t

-d:

表示刷新时间间隔,以秒为单位

-p:

具体观察应用的pid进程号

注意以上可能由于Android设备不同有所区别,可以top–help查看支持的操作

可以top-H-d1-p+进程号>/sdcard/top.txt保存到文件中,然后统计一下cpu峰值,查看哪条线程占用的cpu比较高,然后进一步用profiler排查,语助内的thread记得命名,不然系统会生成Thread-id格式的线程名称,不易排查哪条线程有问题。

2.2.利用AndroidProfiler分析

以下为AndroidProflier整体示意图,先做一下简介:

图2-1ASProfiler

1.Event时间线:

 显示应用中在其生命周期不同状态间转换的Activity,并表明用户与设备的交互,包括屏幕旋转Event。

如需了解有关Event时间线的更多信息,包括如何启用它,请阅读启用高级分析。

2.CPU时间线:

 显示应用的实时CPU使用率(以占总可用CPU时间的百分比表示)以及应用使用的总线程数。

此时间线还显示其他进程的CPU使用率(如系统进程或其他应用),以便您可以将其与您的应用使用率进行对比。

通过沿时间线的水平轴移动鼠标,您还可以检查历史CPU使用率数据。

3.线程Activity时间线:

 列出属于应用进程的每个线程并使用下面列出的颜色沿时间线标示它们的Activity。

在您记录一个函数跟踪后,您可以从此时间线中选择一个线程以在跟踪窗格中检查其数据。

绿色:

 表示线程处于活动状态或准备使用CPU。

即,它正在“运行中”或处于“可运行”状态。

黄色:

 表示线程处于活动状态,但它正在等待一个I/O操作(如磁盘或网络I/O),然后才能完成它的工作。

灰色:

 表示线程正在休眠且没有消耗任何CPU时间。

当线程需要访问尚不可用的资源时偶尔会发生这种情况。

线程进入自主休眠或内核将此线程置于休眠状态,直到所需的资源可用。

2.2.1.Cpu占用高排查实践

1、DDMS查看cpu使用情况查看那条线程占用cpu高,可以用DDMS查看。

点击两次下图StartMethodProfiling按钮,可用录制一段时间cpu使用情况。

图2-1DDMS

图2-2DDMS线程cpu

可以明显看到globalRecordThread线程频繁分配到cpu时间片,可以从这里入手。

接着看到readGlobalRecordDataInMab这个方法占用了这条线程的95.8%的cpu,分析代码录音线程做的事情比较简单,调用系统read方法录音,然后送进套件降噪模块,即图中SpeechEnhancement.process方法,最后分离从套件得到的4路音频。

能优化的就是分离4路音频的算法。

由于一开始不能明显看到该方法占用cpu,后续抽出来改为processResult方法。

优化前:

图2-3分离四声道代码

优化后:

图2-4优化后

优化之后如下,可以看到processResult方法相对占

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2