澳门网络娱乐游戏平台-澳门电子游戏娱乐网址-官方直营

Android操作系统上的应用程序远程调试

Android*DebugBridgeAndroidDebugBridge(ADB卡塔尔(قطر‎是一种命令行工具,可管理主机上的调节和测量检验程序以至ADT)和目的上运维的Android*澳门官网网站,影象之间的调养通讯。指标印象可运营在模仿设施上或实体开荒设备上。简单来说,ADB是一座桥梁,让调节和测验Android*上的应用程序成为只怕。您所连接或模拟的设备涉及大气形象因素。平日设备可能是智能机或三星平板。也足以是临床用猛烈计算机或工业、家庭资源处理、仓库储存领域或随便数量智能种类应用程序的嵌入式设备。设置AndroidDebugBridge可让基于Intel凌动TM微电脑的阳台的中间距调节和测验与其余构造上的调养不会有太大分裂。首先须求在付出主机上安装包括ADB*的Android*SDK。有关那上边包车型地铁证实请参阅。设置ADB*设若目的影像运转在大意设备上,则第一供给扶助USB-OTG或USB转以太网。要援助USB转以太网,必要重新构建基本配置。即使急需,您的原本设备创造商将为你提供须要消息。远程应用程序调节和测量试验的规范措施是选拔大相当多Android设备的水保USB-OTG接口。在Android*开辟职员网站上对该装置有详细表明:。在那概述一下首要步骤1.在AndroidManifest少校您的应用程序注明为“可调节和测验”。在使用Eclipse时,可跳过该手续,因为一贯从EclipseIDE运营应用程序时会自动启用调节和测量试验。在AndroidManifest.xml文件少校android:debuggable="true"加多至application成分。注:如若在项目清单文件中手动启用调节和测量检验,在扩充构建以发表从前必需先禁止使用它。2.开荒设备上的“USB调节和测量检验”。在装置上,转至“设置应用程序开荒”并启用“USB调节和测验”。3.安装系统以检查实验设备。o假诺在Windows上支付,则需求设置adb的USB驱动程序。有关设置指南和原始设备创设商驱动程序的链接,请参阅OEMUSBDrivers文档。o借使在MacOS*X上支出,则不必要操作。可径直跳过该步骤。o如果在Ubuntu*Linux*上付出,则必要加多一个udev法则文件,该马鞍包罗要用以开荒的各样配备的USB配置。在准绳文件中,通过独一的承包商ID表示各类设备成立商,该ID通过ATTCRUISER{idVendor}属性钦命。要翻开经销商ID的列表,请参阅USBVendorIDs。要在UbuntuLinux上设置设备检验:以最棒顾客地点登入并创建该文件:/etc/udev/rules.d/51-android.rules。遵照下列格式将商家增多至文件:SUBSYSTEM=="usb",ATTLAND{idVendor}=="vendorid",MODE="0666",GROUP="plugdev"注:该准则语法恐怕依据你的碰着而稍有分歧。可依赖要求参谋您所用系统的udev文书档案。有关准绳语法的概述,请参阅指南编写udev法则。今后实施:chmoda+r/etc/udev/rules.d/51-android.rules在经过USB插入时,可通过从SDKplatform-tools/目录施行adbdevices验证设备是不是已接连。若是已接连,将看见装备名称作为“设备”列出。对于CDK上指导的Android操作系统,将一根USB-OTG电缆连接至CDK上的端口,将电线的另一端(USBA卡塔尔(قطر‎连接至支付主机。假使全数都健康,就能够运营以下命令看见已一而再一连装置:$adbdevices*daemonnotrunning.startingitnow**daemonstartedsuccessfully*Listofdevicesattached0123456789ABCDEFdevice注:要驾驭将哪个设备名分配给了Linux开采主机上的该连接,可查阅dmesg查找“usb-storage:devicefoundatnum”的地址然后开展“ls-l/dev/bus/usb/*”列表来找出该数字。Windows上的ADB*从下载并安装EclipseClassic从下载用于Windows*的Android*SDK包。。在安装Android*SDK后,adb.exe将位于install-dirandroid-sdkplatform-toolsADB主机-客商端通信至此我们关心的是在付出主机上安装ADB。在切实可行中,它是客户端-服务器程序,具备多少个零部件:二个客商端,运维于付出主机上。可经过推行adb命令从shell调用顾客端。其余诸如ADT插件和DDMS的Android工具也能创设adb顾客端。一个服务器,作为后台进度运营于开采主机上。服务器管理客商端和平运动转于模拟器或配备上的adb守护程序之间的通讯。三个照应程序,作为后台进度运维于各种模拟器或配备实例上。在起步adb顾客端时,顾客端会先反省是还是不是已经有adb服务器进度正在运行。若无,则会运维服务器进程。当服务器运行时,它会绑定至地点TCP端口5037并监固守adb客户端发出的通令,全数adb客商端都选拔端口5037与adb服务器通讯。然后服务器会创立与全部正在运维的模拟器/设备实例的总是。它会透过在界定5555至5585中围观奇数编号的端口找到模拟器/设备实例。在找到adb守护程序处,创建与该端口之间的一而再。请留心,各样模拟器/设备实例获取一对队列端口-四个偶数编号的端口用于调节台连接,三个奇数编号的端口用于adb连接。比方:Emulator1,console:5554Emulator1,adb:5555Emulator2,console:5556Emulator2,adb:5557...如示例所示,在端口5555上接二连三至adb的模拟器实例与调节台监听端口5554的实例相近。一旦服务器营造与有着模拟器实例之间的一而再,就可利用adb命令来支配和访谈那多少个实例。由于服务器会管理指向性模拟器/设备实例的连续几日并拍卖来自五个adb顾客端的吩咐,您可由此任何客商端调整其余模拟器/设备实例。运行ADB键入"adbshell"。将收获二个#号来提示连接成功。$adbshell首要ADB设备命令下边所列的下令可帮助将经受调弄整理的应用程序从命令行转移至目的设备或模拟设施。那点非常常有用,尤其是在并未有ssh终端连接可用时。adbpushlocalremote-copyfile/dirtodeviceadbpullremote[local]-copyfile/dirfromdeviceadbsync[directory]-copyhost-deviceonlyifchanged(-lmeanslistbutdon'tcopy)(see'adbhelpall')adbshell-runremoteshellinteractivelyadbshellcommand-runremoteshellcommandadbemucommand-runemulatorconsolecommandadblogcat[filter-spec]-Viewdevicelogadbforwardlocalremote-forwardsocketconnectionsforwardspecsareoneof:tcp:portlocalabstract:unixdomainsocketnamelocalreserved:unixdomainsocketnamelocalfilesystem:unixdomainsocketnamedev:characterdevicenamejdwp:processpid(remoteonly)adbjdwp-listPIDsofprocesseshostingaJDWPtransportadbinstall[在线澳门,-l][-r][-s]file-pushthispackagefiletothedeviceandinstallit('-l'meansforward-locktheapp)('-r'meansreinstalltheapp,keepingitsdata)('-s'meansinstallonSDcardinsteadofinternalstorage)adbuninstall[-k]package-removethisapppackagefromdevice('-k'meanskeepthedataandcachedirectories卡塔尔有关adb设置和接纳的详细音信请参阅凭仗GDB*-TheGNUProjectDebugger调试C/C++原生代码在应用GDB进行调护医治时,运转于设备上的gdbserver用于拍卖调节和测验通讯,但您仍可将基本USB转以太网适配器用于ADB以拍卖通信传输层,在该层上gdbserver依赖tcp/ip合同并在GDB运转于开采主机上的气象下进展通讯。有贰个gdbclient应用程序,其可安装调节和测量检验通信条件并在进展程序调节和测量检验的装置上运营gdbserver。usage:gdbclientEXECUTABLE:PORT[PROG_PATH]EXECUTABLEexecutablename(defaultapp_process)PORTcommectionport(default:1234)PROG_PATHexecutablefullpathontarget(ex/system/bin/mediaserver卡塔尔(قطر‎假诺设置了PROG_PATH,gdclient会尝试运维gdbserver并将其附加至运营的PROG_PATH要精晓运转gdbserver,可接收以下命令#gdbserver:1234--attach269Attached;pid=269Listeningonport1234下边包车型客车逐月调节和测量检验会话运维指令浮现了ADB如何在将GDB而非ADT或DDMS用于调节和测验的景观下依然作为调治将养通讯的底蕴。让大家只要使用的是端口1234。运行进度:gdbserver:1234/system/bin/executable或附加至现成进度:gdbserver:1234--attachpid在您的职业站上,使用adb将端口1234转账至设备:adbforwardtcp:1234tcp:1234发轫坐落于源代码树"prebuilt"区域中的特殊版本gdb:prebuilt/Linux/toolchain-eabi-4.x.x/bin/i686-android-linux-gdb(forLinux卡塔尔(قطر‎prebuilt/darwin-x86/toolchain-eabi-4.x.x/bin/i686-android-linux-gdb(for达尔文卡塔尔国假设多少个独出心裁版本的gdb都爱莫能助找到,运营findprebuilt-namei686-android-linux-gdbinyoursourcetree来搜索并运转最新版本。必得使用标识目录中而非首要android目录中可实行文件的别本,因为根本目录中的别本已去除了符号新闻。在GDB中,告知GDB哪儿查找将在加载的分享库:setsolib-absolute-prefix/absolute-source-path/out/target/product/product-name/symbolssetsolib-search-path/absolute-source-path/out/target/product/product-name/symbols/system/libabsolute-source-path为您的源代码树的不二秘诀。确认保障钦定准确的目录–如若你弄错目录GDB恐怕不会告诉您。通过发出GDB命令连接至设备:(gdb卡塔尔targetremote:1234:1234告知gdb连接至地面主机端口1234,后面一个通过adb桥接至设备。今后能够用和事前同一的秘籍利用GDB最早调节和测量试验运转于Android*上的C/C++代码。有关详细新闻,请参阅文书档案GDB*-TheGNUProjectDebugger。使用Eclipse*的ADT*插件来调试Android*应用程序对于基于英特尔构造的器材,设置流程可参谋下列相似链接:#installing。对于基于英特尔构造的模拟器以至目的设备,ADT*插件可提供整机的集成Eclipse*IDE的应用程序调节和测验。它选择分裂的功效集提供两种不一致的调整视图。您可依赖必要选用当中多个,在调节和测量检验应用程序时双方都可提供差别的强度。Eclipse中的调节和测量试验视图*Eclipse中调和视图可让您访谈以下选项卡:调节和测验–展现之前和脚下调试的Android应用程序及其当前运转的线程变量–在安装了断点时,显示代码实行期间的变量值断点–显示你的应用程序代码中装置的断点列表LogCat–可让您实时查看系统日志新闻。LogCat选项卡也可在DDMS视图中动用。通过单击WindowOpenPerspectiveDebug可访谈调节和测量检验视图。有关Eclipse调节和测验程序的详细新闻,请参阅相应文书档案。请点击那些链接阅读详细内容:

4、常用adb命令

Command Description
adb connect host:port 连接到指定设备
adb devices 查看连接计算机的设备
adb tcpip 5555 restarting in TCP mode port: 5555
adb usb restarting ADB in USB mode
android list targets 显示系统中全部Android平台
android list avd 显示系统中全部AVD(模拟器)
adb reboot 重启设备
adb get-serialno 获取序列号
adb reboot bootloader 重启到bootloader,即刷机模式
adb reboot recovery 重启到recovery,即恢复模式
adb logcat 查看log日志
adb logcat -v time *:e/d/i/w 格式化过滤输入log日志
adb shell screencap <filename> taking a screenshot of a device display
adb pull /sdcard/screen.png download the file from the device
adb kill-server 终止adb服务进程
adb start-server 重启adb服务进程
adb shell pm path <PACKAGE> Print the path to the APK of the given <PACKAGE>
adb shell pm clear <PACKAGE> Deletes all data associated with a package
adb shell pm list packages [options] <FILTER> Prints all packages, optionally only those whose package name contains the text in <FILTER>
adb shell pm list packages -f See their associated file
adb shell pm list packages -d Filter to only show disabled packages
adb shell pm list packages -e Filter to only show enabled packages
adb shell pm list packages -s Filter to only show system packages
adb shell pm list packages -3 Filter to only show third party packages
adb shell pm list packages -i See the installer for the packages
adb shell pm list packages -u Also include uninstalled packages
adb shell pm list packages --user <USER_ID> The user space to query
adb shell cat /sys/class/net/wlan0/address 获取机器MAC地址
adb shell cat /proc/cpuinfo 获取CPU序列号
adb install <apkfile> 安装APK
adb install -d <apkfile> allow version code downgrade
adb install -r <apkfile> 保留数据和缓存文件,重新安装apk
adb install -s <apkfile> 安装apk到sd卡
adb uninstall <package> 卸载APK
adb uninstall -k <package> 卸载app但保留数据和缓存文件
adb shell am start -n <package_name> 启动应用
adb shell top 查看设备cpu和内存占用情况
adb shell top -m 6 查看占用内存前6的app
adb shell top -n 1 刷新一次内存信息,然后返回
adb shell procrank 查询各进程内存使用情况
adb shell kill [pid] 杀死一个进程
adb shell ps 查看进程列表
adb shell ps -x [PID] 查看指定进程状态
adb shell service list 查看后台services信息
adb shell cat /proc/meminfo 查看当前内存占用
adb shell cat /proc/iomem 查看IO内存分区
adb remount 将system分区重新挂载为可读写分区
adb pull <remote> <local> 从设备复制文件到本地
adb push <local> <remote> 向模拟器中写文件
adb shell ls 列出目录下的文件和文件夹,等同于dos中的dir命令
adb shell rename path/oldfilename path/newfilename 重命名文件
adb shell rm /system/avi.apk 删除system/avi.apk
adb shell rm -r <folder> 删除文件夹及其下面所有文件
adb shell mv path/file newpath/file 移动文件
adb shell chmod 777 /system/fonts/DroidSansFallback.ttf 设置文件权限
adb shell mkdir path/foldelname 新建文件夹
adb shell cat <file> 查看文件内容
adb shell cat /data/misc/wifi/*.conf 查看wifi密码
adb logcat -c 清除log缓存
adb bugreport 查看bug报告
adb shell getprop [options] get property via the android property service
adb shell ls [options] list directory contents
adb shell ls -n list numeric UIDs and GIDs
adb shell cd <directory> change directory
adb shell cat /system/build.prop 获取设备信息
adb shell dumpsys [options] dumps system data
adb shell dumpsys meminfo <PackageName> 查看Android应用单个进程的memory
adb shell dumpsys activity 获取当前Android系统Activity栈中Activity信息
adb shell dumpsys activity findstr "mFocusedActivity" 获取当前Android系统Activity栈最上层的Activity
adb shell getprop ro.build.version.release 获取系统版本
adb shell getprop ro.build.version.sdk 获取系统api版本
adb help 查看ADB帮助
adb shell monkey -v -p your.package.name 500 跑monkey
adb -s <serialNumber> <command> 在指定的设备上执行adb命令
adb -e <command> 如果连接了多个设备,既有真机又有模拟器,但只有一个模拟器的情况下,可以使用该命令在模拟器上执行
adb -d <command> 如果连接了多个设备,既有真机又有模拟器,但只有一个真机的情况下,可以使用该命令在指定真机上执行
adb shell pm clear <packagename> 清除应用数据与缓存
adb shell am start -n <packagename> 启动应用
adb shell am force-stop <packagename> 强制停止应用
adb get-serialno 获取设备序列号
adb shell cat /sys/class/net/wlan0/address 获取MAC地址
adb shell getprop ro.product.model 查看设备型号
adb shell wm size 查看设备屏幕分辨率
adb shell wm density 查看屏幕密度
adb shell screenrecord [options] /sdcard/demo.mp4 手机录屏
adb pull /sdcard/demo.mp4 D:/ 导出视频到D盘根目录
adb shell dumpsys batterystats <package name> 查看指定应用的耗电情况

参照文书档案:ADB Shell

能够通过下列两种方法插足adb:

3、adb客商端的启航

当您运转叁个adb顾客端,顾客端首先料定是否原来就有一个adb服务进程在运营。若无,则运行服务进度。当服务器运营, adb服务器就能绑定本地的TCP端口5037并监听adb顾客端发来的通令,全体的adb客商端都以用端口 5037与adb服务器对话的.
随着服务器将兼具运维中的模拟器或设施实例创立连接。它经过扫描全体5555到5585范围内的奇数端口来定位有所的模拟器或设施。一旦服务器找到了adb守护程序,它将创制三个到该端口的连接。请精心任何模拟器或设施实例会得到多少个延续的端口——三个偶数端口用来对症用药调整台的连续几天,和多个奇数端口 用来响应adb连接。举例说:
模拟器1,控制台:端口5554
模拟器1,Adb端口5555
控制台:端口 5556
Adb端口5557...
如上所示,模拟器实例通过5555端口连接adb,就仿佛使用5554端口连接调控台相似.
假使服务器与全部模拟器实例创立连接,就足以使用adb命令调整和做客该实例。因为服务器管理模拟器/设备实例的接连几日,和决定管理从根源五个adb客商带给的吩咐,你能够因而任何顾客端(或脚本卡塔尔(قطر‎来支配别的模拟器或配备实例.

查看stdout 和stderr

在私下认可状态下,Android系统有stdoutstderr (System.outSystem.err )输出到/dev/null ,在运营Dalvik VM的长河中,有三个种类能够备份日志文件。在这里种情景下,系统会用stdoutstderr 和事情发生在此以前级 I.来记录日志新闻

透过这种办法钦点输出的门径,甘休运营的模拟器/设备,然后经过用 setprop 命令远程输入日志

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start

系统直到你关闭模拟器/设备前安装会平素保留,能够经过丰盛/data/local.prop 可以运用模拟器/设备上的暗许设置

1、概念

Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an emulator instance or connected Android-powered device. It is a client-server program that includes three components:

  • A client, which runs on your development machine. You can invoke a client from a shell by issuing an adb command. Other Android tools such as the ADT plugin and DDMS also create adb clients.
  • A server, which runs as a background process on your development machine. The server manages communication between the client and the adb daemon running on an emulator or device.
  • A daemon, which runs as a background process on each emulator or device instance.
    adb的全称为Android Debug Bridge,便是起到调节和测量检验桥的效能。通过adb大家能够在Eclipse中方面通过DDMS来调节和测量试验Android程序,adb的做事措施比较卓越,选取监听Socket TCP 5554等端口的法子让IDE和Qemu通讯,暗中认可意况下adb会daemon相关的网络端口,所以当大家运行Eclipse时adb进程就可以活动运转。

查询模拟器/设备实例

在发布adb命令以前,有不可贫乏知道怎么着的模拟器/设备实例与adb服务器是绵绵的。能够由此接受devices 命令来获取一多种相关联的模拟器/设备:

adb devices

• 作为回应,adb为每一个实例都制定了相应的情景消息:

  • • 连串号——由adb制造的二个字符串,这么些字符串通过友好的决定端口<type>-<consolePort> 唯一地辨识二个模拟器/设备实例。上边是叁个队列号的例子: emulator-5554
  • 实例的连年意况有两种状态:
    • offline — 此实例未有与adb相连接恐怕相当小概响应.
    • device — 此实例正与adb服务器连接。注意这么些状态并不能够整个地代表在运维和操作Android系统,因而这几个实例是当系统正在运维的时候与adb连接的。然则,在系统运转之后,正是一个模拟器/设备状态的健康运行状态了.

每一种实例的出口皆犹如下原则性的格式:

[serialNumber] [state]

下面是一个来得devices 命令和输出的例子 :

$ adb devices
List of devices attached 
emulator-5554  device
emulator-5556  device
emulator-5558  device

若是当前还未有模拟器/设备运维,adb则赶回 no device .

2、作用

ADB 是 android sdk里的三个工具, 用那些工具得以一贯操作管理android模拟器也许真实的andriod设备,它的首要性功效有:

  1. 运行设备的shell(命令行卡塔尔(قطر‎;
  2. 治本模拟器或配备的端口映射;
  3. 微型机和设备之间上传/下载文件;
  4. 将本地apk软件设置至模拟器或android设备;

Stopping the adb Server

在一些情状下,你可能须要终止Android 调节和测量检验系统的运作,然后再重复启航它。譬喻,假使Android 调节和测量检验系统不响应命令,你能够先终止服务器然后再重启,那样就大概解决那么些难点.

kill-server 能够告一段落adb server。你能够用adb发出的别的命令来再一次开动服务器.

查阅可用日志缓冲区

Android日志系统有循环缓冲区,并非富有的日志系统都有暗中认可循环缓冲区。为了取得日志音讯,你必要通过-b 选项来运转logcat 。假设要使用循环缓冲区,你要求查阅剩余的循环缓冲期:

  • radio — 查看缓冲区的有关的消息.
  • events — 查看和事件相关的的缓冲区.
  • main — 查看首要的日记缓冲区

-b 选项应用方式:

[adb] logcat [-b <buffer>]

下边的例子表示怎么查看日志缓冲区富含radio 和 telephony新闻:

adb logcat -b radio

上边临adb进行了介绍并描述了相近的使用.

  • 在配备上运维shell命令
  • 由此端口转载来管理模拟器或配备
  • 从模拟器或配备上拷贝来或拷贝走文件

使用logcat命令

你能够用 logcat 命令来查看系统日志缓冲区的始末:

[adb] logcat [<option>] ... [<filter-spec>] ...

请查看Listing of logcat Command Options ,它对logcat命令有详尽的陈说 .

你也得以在你的微型机或运转在模拟器/设备上的远程adb shell带给利用logcat 命令,也足以在你的微微机上查看日志输出。

$ adb logcat

您也如此使用:

# logcat

过滤日志输出

每叁个出口的Android日志消息都有三个标签和它的优先级.

  • 日记的竹签是系统零部件原始音信的叁个简洁明了的注脚。(譬如:“View”正是翻开系统的价签).
  • 先行级有下列集中,是遵照从低到高顺利排列的:
    • V — Verbose (lowest priority)
    • D — Debug
    • I — Info
    • W — Warning
    • E — Error
    • F — Fatal
    • S — Silent (highest priority, on which nothing is ever printed)

在运行logcat的时候在前两列的音讯中您就足以看来 logcat 的竹签列表和预先等级,它是这么标出的:<priority>/<tag> .

上边是一个logcat输出的事例,它的优先级就有如I,标签就是ActivityManage:

I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}

为了让日志输出能反映管理的等第,你还足以用过滤器来支配日志输出,过滤器能够扶持您呈报系统的价签等级.

过滤器语句根据上面包车型大巴格式描tag:priority ... , tag 表示是标签, priority 是表示标签的告诉的最低品级. 从地点的tag的中可以赢得日志的预先级. 你能够在过滤器中往往写tag:priority .

这几个注解都只到空白甘休。上面有多个列子,例子表示扶助具有的日记音讯,除了这个标签为”ActivityManager”和事情未发生前级为”Info”以上的和标签为” MyApp”和预先级为” Debug”以上的。小等第,优先权报告为tag.

adb logcat ActivityManager:I MyApp:D *:S

下边表明式的结尾的因素 *:S ,,是设置有着的价签为"silent",全体日志只体现有"View" and "MyApp"的,用 *:S 的另二个用项是 能够确定保证日志输出的时候是服从过滤器的表达节制的,也让过滤器也视作一项输出到日志中.

下边包车型大巴过滤语句指彰显优先级为warning或更加高的日记音讯:

adb logcat *:W

要是您Computer上运营logcat ,相比较在远程adbshell端,你还足感到情状变量ANDROID_LOG_TAGS :输入叁个参数来设置私下认可的过滤

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

内需专一的是ANDROID_LOG_TAGS 过滤器要是通过中间距shell运转logcat 或用adb shell logcat 来运营模拟器/设备不能够出口日志.

本文由澳门网络娱乐游戏平台发布于操作系统,转载请注明出处:Android操作系统上的应用程序远程调试

相关阅读