Android常用调试工具
adb使用方法

adb使用方法ADB(Android Debug Bridge)是一个用于与安卓设备进行通信的命令行工具。
它提供了一系列的命令,可以用来安装和调试应用程序、复制文件、启动设备的shell以及执行各种设备操作。
以下是关于ADB使用方法的参考内容:一、安装ADB:1. Windows操作系统:a. 下载Android SDK Platform Tools,并解压到任意位置。
b. 打开解压后的文件夹,并将文件夹路径添加到系统环境变量中。
c. 连接安卓设备到电脑,并确保已启用USB调试模式。
d. 打开命令提示符(CMD),输入adb命令,即可开始使用ADB。
2. macOS操作系统:a. 使用Homebrew安装Android SDK Platform Tools,输入以下命令行:brew install android-platform-toolsb. 连接安卓设备到电脑,并确保已启用USB调试模式。
c. 打开终端,输入adb命令,即可开始使用ADB。
3. Linux操作系统:a. 使用包管理器安装Android SDK Platform Tools命令行工具,输入以下命令行:sudo apt-get install android-tools-adbb. 连接安卓设备到电脑,并确保已启用USB调试模式。
c. 打开终端,输入adb命令,即可开始使用ADB。
二、ADB常用命令:1. adb devices:列出已连接的设备列表。
2. adb install <path_to_apk>:安装应用程序到设备。
3. adb uninstall <package_name>:卸载设备上指定包名的应用程序。
4. adb push <local> <remote>:将本地文件复制到设备。
5. adb pull <remote> <local>:将设备上的文件复制到本地。
adb push 用法

adb push 用法adb push 是一种在Android 开发中常用的命令行工具,它允许开发者将文件从计算机推送到连接的Android 设备上。
这种方式非常方便,可以帮助开发者快速传输文件,以便在Android 设备上进行测试和调试。
本文将详细介绍adb push 的用法,并逐步回答与这一主题相关的问题。
1. 什么是adb push?adb push 是Android 调试桥(Android Debug Bridge)的一部分,它是一个位于计算机和Android 设备之间的桥梁。
通过adb push 命令,开发者可以将文件从计算机传输到连接的Android 设备上。
2. 如何使用adb push?使用adb push 命令非常简单,只需要在命令行中输入以下命令:adb push <local_file> <device_directory>其中,`<local_file>` 是要传输的本地文件的路径,`<device_directory>` 是要在Android 设备上保存文件的目标路径。
例如,要将名为`example.jpg` 的图片文件从计算机的`D:\` 目录传输到Android 设备上的`/sdcard/Pictures/` 目录,可以使用以下命令:adb push D:\example.jpg /sdcard/Pictures/请确保Android 设备已通过USB 连接到计算机,并已启用开发者选项和USB 调试模式。
3. adb push 的常见用途有哪些?adb push 在Android 开发中有许多常见用途。
以下是一些常见的用例:- 传输应用安装包(APK):开发者可以使用adb push 将APK 安装包从计算机传输到Android 设备,以便在设备上进行测试和安装。
- 传输媒体文件:开发者可以将音频、视频、图片等媒体文件传输到Android 设备上,以便在应用程序中使用。
Android调试神器stetho使用详解和改造

Android调试神器stetho使⽤详解和改造概述stetho是Facebook开源的⼀个Android调试⼯具,项⽬地址:facebook/stetho 通过Stetho,开发者可以使⽤chrome的inspect 功能,对Android应⽤进⾏调试和查看。
功能概述stetho提供的功能主要有:Network Inspection:⽹络抓包,如果你使⽤的是当前流⾏的OkHttp或者Android⾃带的 HttpURLConnection,你可以轻松地在chrome inspect窗⼝的network⼀栏抓到所有的⽹络请求和回包,还⽤啥Postman,还⽤啥Fiddler哦(开个玩笑,⼀些场合还是需要⽤的,毕竟Stetho Network Inspection 只是⽤来查看回报和发送数据是否有误,在开发初期,调试API 还是⽤Postman快⼀点)Database Inspection:数据库查看,可以直接看到当前应⽤的sqlite数据库,⽽且是可视化的,不需要再下什么奇怪的⼯具或者⽤命令⾏看了。
这个确实⾮常棒!View Hierarchy:布局层级查看,免去使⽤查看布局边界的花花绿绿带来的痛苦和卡顿,⽽且能看到每个view和layout 的各类属性。
Dump App:命令⾏拓展,构造了⼀个命令⾏与Android App的交互通道,在命令⾏输⼊⼀⾏命令,App可以收到并且在命令⾏上进⾏反馈输出。
Javascript Console:Javascript控制台,在inspect的console窗⼝,输⼊Javascript可以直接进⾏Java调⽤。
使⽤这个功能,得先引⼊facebook/stethostetho-js-rhino和mozilla/rhino。
在这⾥,笔者先承认这个⽂章有点标题党了——在我实际使⽤体验过后,第⼀感觉是:这个所谓神器也没有特别神的感觉…造成⾸次使⽤感觉不太好的原因在于:使⽤教程不太全,尤其是Dump App的使⽤,不管是在README还是wiki中都没有太多的叙述。
移动应用开发常用开发工具推荐

移动应用开发常用开发工具推荐移动应用开发是当前互联网行业中快速发展的领域之一。
随着智能手机的普及和移动互联网的蓬勃发展,越来越多的企业和个人开始关注和投入移动应用开发。
为了能够高效、快速地进行移动应用开发,选择合适的开发工具非常重要。
本文将介绍几款常用的移动应用开发工具。
第一款是Android Studio。
作为目前最权威的Android开发工具,Android Studio集成了各种开发所需的功能,如布局设计器、代码编辑器、调试器等等。
它基于IntelliJ IDEA开发,具有强大的插件系统,支持Java和Kotlin语言的开发。
Android Studio提供了丰富的开发模板和示例代码,能够快速创建基础框架,并自动生成项目结构。
此外,Android Studio还提供了模拟器和真机调试和测试工具,方便开发者调试和测试应用。
第二款是Xcode。
作为苹果公司推出的集成开发环境,Xcode是开发iOS和macOS应用的首选工具。
它提供了强大的界面设计工具,如Interface Builder,可以直观地设计和布局应用的界面。
Xcode还集成了开发和调试工具,如代码编辑器、静态分析器和性能检测器等等。
通过连接真机,开发者可以直接在设备上运行和调试应用,提高开发效率。
第三款是React Native。
作为一种跨平台的移动应用开发框架,React Native基于JavaScript语言,可以用于开发Android和iOS应用。
它采用了声明式的UI编程范式,通过组件化的方式搭建应用界面,实现代码的可复用和跨平台。
React Native提供了一系列功能强大的组件和API,可以轻松实现复杂的交互效果和动画。
通过热更新技术,开发者可以实时预览和调试应用,减少开发周期。
第四款是Flutter。
Flutter是谷歌推出的跨平台移动应用开发框架,它基于Dart语言,有着优秀的性能和良好的开发体验。
Flutter提供了丰富的UI组件和开发工具,开发者可以通过代码编写和调试应用。
安卓系统开发调试工具整理

1.Adb常用命令1.1.Adb调试 (4)1.2.Package管理 (4)1.3.文件管理 (6)1.3.1.查看SharedPreferences文件 (8)1.3.2.查看db文件 (8)1.4.日志 (8)1.4.1.日志优先级 (8)1.4.2.adb logcat选项解析 (9)1.5.dumpsys获取相关的系统数据 (9)1.6.截图 (13)1.7.系统 (14)1.8.Linux基本命令 (15)1.9.am模拟启动组件 (15)1.10.monkey测试 (16)1.11.模拟按键事件 (16)1.12.PuTTY串口调试工具 (17)1.13.静态代码检测工具 (18)2.Cpu分析 (18)2.1.配合使用top命令 (18)2.2.利用Android Profiler分析 (19)2.2.1.Cpu占用高排查实践 (19)3.内存分析 (28)3.1.内存泄漏的常见场景和解决方法 (29)3.1.1.单例模式造成的内存泄漏 (29)3.1.2.非静态内部类/匿名类 (30)3.1.3.集合类 (32)3.1.4.Toast (33)3.2.内存泄漏的监控排查方法 (33)3.2.1.LeakCanary (33)3.2.2.AS Profiler内存分析 (36)1.Adb常用命令为了可以在终端直接使用adb命令,我们可以配置一下环境变量。
Windows:右键我的电脑-属性,调出以下窗口图1-1 环境变量配置图1-2 环境变量配置按照以上步骤新建一个环境变量,然后将adb所在的路径加上去。
1.1.Adb调试先打开usb调试模式adb devices:主要是用于打印当前连接的所有模拟器或者设备adb root:以root权限运行adb remount:重新挂载分区,使system分区变成可读写,一般用于传输文件到Android 设备1.2.Package管理adb install:主要用于往Android 设备push 应用adb install [option] <path>adb install test.apk 直接安装应用adb install -r test.apk 替代存在的应用,不会删除应用数据,用于更新应用特别方便adb uninstall:从设备或者模拟器卸载应用adb uninstall [options] <package>adb uninstall com.example.application 直接删除应用和所有数据adb uninstall -k com.example.application 删除应用,但会保留应用数据和缓存数据表1-1 错误信息常见解决方案:adb shell pm list packages:打印设备下面的所有应用包名adb shell pm path <package>:打印apk 的路径adb shell pm clear <package>:清除应用缓存1.3.文件管理adb pull <remote> [local]:从Android 设备下载文件到PC,其中<remote> 代表文件在设备中的地址,[local] 代表存放目录下载一个文件夹到电脑示例:adb pull /sdcard/temp ./temp:下载一个目录所有文件,将车机中的temp目录下载到电脑端的temp目录下载一个文件到电脑端示例:adb pull /sdcard/temp/1.txt ./temp/:下载一个文件,将1.txt下载到电脑的temp目录下。
Android开发工具Dev Tools介绍

development tools(Android开发调试工具)Android下的Dev Tools开发调试工具隐藏在Android模拟器中,为我们提供了强大的调试支持。
进入之后将看到:1.AccountsTester(账户测试)1.1 Select Account Type(选择账户类型)1.2 Get By Type(通过类型获得)1.3 Get All(显示全部)1.4 Add(增加用户)1.4.1 可以简单的几个步骤配置一个交换用户(email地址和密码)1.5 Properties(属性)1.6 features(特征)1.7 authtoken type(用户标志类型)2.Bad Behavior(屏蔽垃圾发布器)2.1 Crash the main app thread(破坏主要的应用程序线程)2.2 Crash an auxiliary app thread(破坏一个辅助应用程序线程)2.3 Crash the native process(破坏本地进程)2.4 Crash the system server(破坏系统服务器)2.5 Report a WTF condition(????)2.6 ANR(Application Not Responding)(Stop responding for 20 seconds)——(应用无响应)(停止反应20s)2.7 ANR starting an Activity(运行一个活动,但是应用无相应)2.8 ANR recriving a broadcast Intent(接收一个广播意图,但是应用无响应)2.9 ANR staring a Service(运行一个服务,但是应用无响应)2.10 System ANR(in ActivityManager(系统无响应)(在行为控制器上)2.11 Wedge system(5 minutes system ANR)(楔板系统)(5分钟系统无响应)3.configuration(配置)configuration3.1 fontScale=1.0(缩放比例=1.0)3.2 hardKeyboardHidden=2(隐藏硬件键盘=2)3.3 keyboard=2(键盘=2)3.4 locale=en_US(现场环境=英文)3.5 mcc=310(电机控制中心=310???)(MOTOR CONTROL CENTER)3.6 mnc=260(位技术控=260)(Microcomputer Numberical Control)3.7 navigation=3(导航=3)3.8 navigationHidden=1(隐藏导航=1)3.9 orientation=1(定位=1)3.10 screenLayout=0x22(屏幕格式=0x22)3.11 touchscreen=3(触摸屏=3)3.12 uiMode=0x11(用户界面模式=0x11)DisplayMetrics(不显示的属性)3.13 density=1.5(密度=1.5)3.14 densityDpi=240(密度分辨率=240)3.15 heightPixels=800(高度像素=800)3.16 scaledDensity=1.5(尺度密度=1.5)3.17 widthPixels=480(宽度分辨率=480)3.18 xdpi=240.0(x轴分辨率=240.0)3.19 ydpi=240.0(y轴分辨率=240.0)4.Connectivity(连接工具)4.1 Enable Wifi(启动Wifi)4.2 Disable Wifi(关闭Wifi)4.3 Start Wifi Toggle(启动Wifi开关)4.4 Stop Wifi Toggle(关闭Wifi开关)4.5 Wifi on(ms)(Wifi开启多长时间)4.6 Wifi off(ms)(Wifi关闭多长时间)4.7 Cycles done:1(周期做一次)4.7.1 Start Screen Toggle(启动屏幕开关)4.7.2 Stop Screen Toggle(关闭屏幕开关)4.7.3 Wifi on(ms)(Wifi开启多长时间)4.7.4 Wifi off(ms)(Wifi关闭多长时间)4.8 Cycles done:0(周期做0次)4.8.1 Start MMS(开启彩信)4.8.2 Stop MMS(关闭彩信)4.8.3 Start HiPri(开启导航)4.8.4 Stop HiPri(关闭导航)5.Development Settings(开发设置)5.1 Debug App(调试程序)5.2 Wait for debugger(等待调试程序)5.3 pointer location(触点位置)5.4 show running processes(显示运行的程序)5.5 show screen updates(显示屏幕更新)5.6 Disable compatibility mode(禁用兼容性模式)5.7 app process limit(应用程序限制)5.8 immediately destroy activities(立即毁坏项目) 5.9 show cpu usage(显示CPU的进程)5.10 show sleep state on LED(再LED上显示睡眠时间) 5.11 window animation scale 1x(窗口动画规模1X)5.12 transition animation scale 1x(转换动画模式1X) 5.13 Light Hinting(轻显示)5.14 show gtalk service connetion status(显示即时通讯连接标志)6.goole login service(谷歌登录服务)7.GTalk Service Monitor(服务监视器)这是一个对系统所进行的服务器监视,有监视时间,信息显示等作用。
android调试工具adb命令大全

android调试⼯具adb命令⼤全SDK的Tools⽂件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作⽤。
通过adb我们可以在Eclipse中⽅⾯通过DDMS来调试Android程序。
借助这个⼯具,我们可以管理设备或⼿机模拟器的状态。
还可以进⾏以下的操作:1、快速更新设备或⼿机模拟器中的代码,如应⽤或Android 系统升级;2、在设备上运⾏shell命令;3、管理设备或⼿机模拟器上的预定端⼝;4、在设备或⼿机模拟器上复制或粘贴⽂件;adb的⼯作⽅式⽐较特殊采⽤监听Socket TCP 5554等端⼝的⽅式让IDE和Qemu通讯,默认情况下adb会daemon相关的⽹络端⼝,所以当我们运⾏Eclipse时adb进程就会⾃动运⾏。
1.通过adb可以轻松的执⾏Linux Shell命令,如adb shell dir 就是列举⽬录,在Linux中根⽬录为/⽽不是Windows上的C盘、D 盘。
2.安装apk程序到模拟器则执⾏adb install android123.apk,这样名为android123的安装包就会安装到Android模拟器中,前提是android123.apk⽂件需要放到SDK/Tools⽬录下。
3.向emulator传送⽂件,使⽤adb push android123.txt /tmp/android123.txt命令可以把SDK/Tools下的android123.txt⽂件传输到模拟器的/tmp/⽂件夹中,需要注意的是/tmp/⽂件夹中内容会在Android模拟器重新启动时清空。
4.从Android仿真器中回传⽂件到电脑通过adb pull /tmp/android123.txt android123.txt命令就会把仿真器的tmp⽂件夹下android123.txt⽂件回传到电脑SDK/Tools⽬录下。
一种基于Android开发环境的调试工具DDMS

信息 .跟踪 程序 的性 能 ,对 A P K程序包进 行对齐优化 。提 高 A P K应用 程序 与 A n d oi r d系统 的 交互效率 等 。D D MS是 A n d r o i d开发环境最 主要 的调试工 具 .介绍了它在开发 中的 调试功能 以及使 用方 法。
目录中 ,在 目录下找到 d d ms . b a t 批 处理文件 ,双 击运行该 批处理 文件即可运行 D D M S程 序 .在运行该 程序 之前先运
行 模 拟 器 。D D MS运行 界 面 如图 1 所示。
是开发人员必不 可少的技 术。A n d r o i d是最广泛使 用的移动
开发 中主要 的调 试工具 D D MS 。 实践表 明,通过 D D M S能快速方便地 对应用程序进行调试 ,大大降低 了 A n —
d oi r d应 用程 序 的 测 试 成 本 。 关键 词 :A n d oi r d系统 ;Biblioteka 试 工 具 ;D D MS软件
l 引言
调 试 是 每 一 个 开 发 人 员 最 基 本 的技 能 ,调 试 应 用 程 序
9叠 0圉 薯 毒
及堆信 息 、广播状 态信息 、模拟 电话 呼叫 、模拟信 息收发 和虚拟地理位置等。D D M S的工作原理如下 :
( 1 )D D MS将搭 建起 I D E与 测试 终端 ( E mu l a t o r 或者 c o n n e c t e d d e v i c e )的链接 ,它们应用各 自独立的端 口监听调 试信息 .D D MS可以实 时监测 到测试终 端 的连 接情况 。 当 有新 的测试 终端连接 后 .D D MS将捕捉 到终端 的 I D。并通
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android问题分析工具
Android应用开发过程中,会遇到各种各样的问题。
好的分析方法和分析工具,能起到事半功倍的效果。
下面是几个常用的小工具,希望能对大家有所帮助。
1. 查看当前堆栈
1) 功能:在程序中加入代码,使可以在logcat中看到打印出的当前函数调用关系
2) 方法:
new Exception(“print trace”).printStackTrace();
2. MethodTracing
1) 功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函
数调用关系等
2) 方法:
a) 在程序代码中加入追踪开关
1. import Android.os.Debug;
2. ……
3. Android.os.Debug.startMethodTracing(“/data/tmp/test”); // 先
建/data/tmp目录
4. …… // 被追踪的程序段
5. Android.os.Debug.stopMethodTracing();
b) 编译,运行后,设备端生成/data/tmp/test.trace文件
c) 把trace文件复制到PC端
1. $ adb pull /data/tmp/test.trace ./
d) 使用Android自带工具分析trace文件
1. $ $Android_SRC/out/host/linux-x86/bin/traceview test.trace
此时可看到各个函数被调用的次数CPU占用率等信息
e) 使用Android自带工具分析生成调用关系类图
1. $ apt-get install graphviz # 安装图片相关软件
2. $Android_SRC/out/host/linux-x86/bin/dmtracedump -g test.png test.trace
此时目录下生成类图test.png
3) 注意
trace文件生成与libdvm模块DEBUG版本相冲突,所以此方法只适用于对非DEBUG 版
本模拟器的调试,否则在分析trace文件时会报错
3. HProf (Heap Profile)
1) 功能:
用于java层面的内存分析,显示详细的内存占用信息,指出可疑的内存泄漏对象
2) 方法:
a) 在代码中加入dump动作
1. import Android.os.Debug;
2. import java.io.IOException;
3. ……
4. try {
5. Android.os.Debug.dumpHprofData(“/data/tmp/input.hprof”); // 先
建/data/tmp目录
6. } catch (IOException ioe) {
7. }
b) 把hprof文件复制到PC端
1. $ adb pull /data/tmp/input.hprof ./
c) 使用命令hprof-conv把hprof转成MAT识别的标准的hprof
1. $ $Android_SRC/out/host/linux-x86/bin/hprof-conv input.hprof output.hprof
d) 使用MAT工具看hprof信息
下载MAT工具:/mat/downloads.php
用工具打开output.hprof
3) 注意:此工具只能显示java层面的,而不能显示C层的内存占用信息
4. SamplingProfile (Android 2.0上版本使用)
1) 功能
每隔N毫秒对当前正在运行的函数取样,并输出到log中
2) 在代码中加入取样设定
1. import dalvik.system.SamplingProfiler
2. ……
3. SamplingProfile sp = SamplingProfiler.getInstance();
4. sp.start(n); // n为设定每秒采样次数
5. sp.logSnapshot(sp.snapshot());
6. ……
7. sp.shutDown();
它会启一个线程监测,在logcat中打印信息
5. 用发系统信号的方式取当前堆栈情况和内存信息
1) 原理
dalvik虚拟机对SIGQUIT和SIGUSR1信号进行处理(dalvik/vm/SignalCatcher.c),分别完成取当前堆栈和取当前内存情况的功能
2) 用法
a) $ chmod 777 /local/log/anr -R # 把anr目录权限设为可写
$ rm /local/log/anr/traces.txt # 删除之前的trace信息
$ ps # 找到进程号
$ kill -3 进程号 # 发送SIGQUIT信号给该进程,此时生成trace信息
$ cat /local/log/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文件都很大,注意用完马上删除,以免占满存储器
6. logcat及原理
1) Android.util.Log利用println的标准java输出词句,并加前缀I/V/D….
2) dalvik利用管道加线程的方式,先利用dup2把stdout和stderr重定向到管理中
(vm/StdioConverter.c:dvmstdioConverterStartup),然后再启动一个线程从管道
另一端读出内容
(dalvik/vm/StdioConverter.c:stdioconverterThreadStart()),使用LOG公共工
具(system/core/liblog/logd_write.c: __Android_log_print())输出
到/dev/log/*中去
3) logcat通过加不同参数看/dev/log/下的不同输入信息
1. # logcat -b main 显示主缓冲区中的信息
2. # logcat -b radio 显示无线缓冲区中的信息
3. # logcat -b events 显示事件缓冲区中的信息
7. 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方式8. monkey
1) monkey是一个Android自带的命令行工具。
它向系统发送伪随机的用户事件流,
实现对正在开发的应用程序进行压力测试。
2) 方法
在设备端打开setting界面
$ adb shell
# monkey -p com.Android.settings -v 500
此时可以看到界面不断被切换
9. 其它小工具
具体见Android.os.Debug中提供的工具
1) 取毫微秒级的时间,用于计算时间
threadCpuTimeNanos()
2) 统计两点间的内存分配情况
1. startAllocCounting()
2. stopAllocCounting()
3. getGlobalAllocCount()
4. get…..
3) 打印当前已load的class
getLoadedClassCount()
printLoadedClasses() 它需要打开NDEBUG功能才能打开system/core/中Log功能
10. 打印debug信息 1. $ adb bugreport。