admin管理员组文章数量:1566981
环境部署及工具使用
- 系列文章
- 前言
- 环境部署
- 硬件环境
- 软件环境
- ADB工具
- adb组成
- adb命令
- android命令
- sdkmanager 命令
- avdmanager命令
- 管理模拟器
- monitor工具
- DDMS
- Hierarchy View
- uiautomatorViewer工具
系列文章
Android自动化测试环境部署及adb sdkmanager avdmanager Monitor DDMS工具使用及命令详解
Android自动化测试之Monkey使用及monkey脚本编写
Android自动化测试之MonkeyRunner MonkeyDevice MonkeyImage API使用详解 脚本编写 脚本录制回放
前言
在上篇文章Android自动化测试框架及技能掌握开篇 KO面试拿高薪 做一个高级自动化测试工程师给这个系列做了一个总体介绍后,这篇文章是讲述整个自动化测试工作的准备工作,有自动化环境部署,adb工具的使用,sdkmanager和avdmanager的使用,最后讲到monitor工具的使用及它下面最重要的DDMS的各项功能的使用
环境部署
硬件环境
-
一台用于测试的电脑,笔记本或者台式机都可以
-
操作系统Windows,Linux,Mac都可以,我使用的是Windows系统;如果大家想跟着该系列文章学习,建议使用Windows系统,避免因系统差异花费额外的时间
-
操作系统版本是Windows XP以上,系统内存不要低于4G
-
最后还需要一部用于测试的Android手机
软件环境
-
开发工具包:不管是Android APP软件还是PC的Java软件,都是使用Java语言编写的,所以需要安装JDK,同时还需要下载Android SDK
-
开发环境:Eclipse和Android Studio都可以
-
测试设备:没有真机的话需要安装模拟器,有个好用的模拟器是网易开发的一款MuMu
最后这些系统或者工具的安装就不一一介绍了,网上有很多这类的文章,到这里Android自动化测试环境基本上就具备了
ADB工具
在Android SDK中有一些常用的工具,这些工具在后面做自动化测试的时候是非常有用的,比如adb
adb全称是Android Debug Bridge,即Android调试桥,电脑和设备之间的连接、调试通道;通过adb相关命令可以在PC端实现对Android设备的控制、获取设备信息
adb组成
adb由三部分组成,如图:
-
在PC端有一个adb client和adb server,在移动端运行了一个adbd,也就是adb的守护进程:adb daemon
-
adb client其实就是我们看到的命令行程序,用于接收我们输入的adb操作指令;而adb server用于与client建立交互,并且建立和移动端adbd的通信,通过adbd对设备进行具体的操作;adbd运行于Android设备的底层Linux之中,可以通过它完成很多事情
adb命令
- adb connect :这个是用于连接设备的命令,其实是用来启动设备的adbd
- adb devices:这个应该是使用的比较频繁的命令了,用于列出当前连接的设备,获取设备ID和状态
- adb -s [设备ID]:如果有多个设备,就可以通过-s 加设备ID指定设备
- adb push/pull:这是一对命令,用于PC和设备之间文件传输的操作
- adb forward:这是一个端口转发的命令,可以把在PC端的端口通信重定向到设备端指定的端口
- adb start-server/kill-server: 这是一对针对adb server的命令,用于启动和结束adb server
- adb install/uninstall:这是一对用于在设备上安装/卸载应用的命令
- adb shell:这个是用于进入设备终端界面的命令,可在终端界面执行相应的命令
adb connect:接下来演示这些命令的使用,打开cmd窗口,启动一个模拟器,输入adb connect命令来连接设备
命令后面要接设备ip和端口,可以看到下面有一句daemon started successfully,这个就是启动了adb的守护进程
adb devices:接下来输入adb device
每个设备都有两个属性:第一个127.0.0.1:7555就是该设备的id;第二个device其实是表明该设备的状态,这个值表明该设备在线,已经正常连接到电脑了;如果没有正常连接,或者说守护进程adbd没有启动,这个值就是offline
adb push/pull:首先看下用户目录下面的txt文件
可以看到有一个hello.txt文件,接下来就用adb push命令将这个文件拷贝到设备上
-s 后面接设备id,如果你连接了多个设备,可以通过这个参数指定要操作的设备,其它命令同理;当然如果只连接了一个设备就不需要添加这个参数
然后去设备的该目录下看看是否存在该文件
可以看到文件已经成功拷贝过来了
接下来再使用adb pull命令将这个文件从设备上传到PC端
接下来我们列举下PC端的当前目录
可以看到成功将这个文件拉取过来了
adb forward:这是一个端口转发的命令
这就是将PC端的5556端口重定向到设备端的5556端口,这样就将该端口的通信转到设备了
adb start-server/kill-server:这个命令很简单就不演示了,一般是在adb服务出现异常不响应等特殊情况才会使用
adb install/uninstall:这是用来对设备进行安装卸载应用的,先看下apk文件
然后使用安装命令
使用卸载命令:卸载后面不是接apk文件名,而是要接应用的包名,怎么获取应用的包名呢?这个需要使用adb shell命令
这样就可以找出应用的包名了,还有进入data/data命令也可以获取所有包名
接下来就可以执行卸载命令
android命令
如果使用Android Studio进行开发,那这些SDK和AVD的管理可以通过它提供的可视化界面进行操作;但还是会有在命令行管理 SDK 的需求,比如在远程管理 Jenkins 打包服务器上的 SDK
在Android SDK tools 25.2.3 版本以前 SDK 管理命令是 android,在 tools 目录下,这时候是和其它功能共用 android 命令
android命令可以用于查看当前android开发环境中相关的系统信息以及操作 ,这个命令工具在SDK中的tools目录下,可以将其添加到环境变量方便我们使用;包括如下几种
- Android sdk
- Android avd
- Android list
- Android create project
不过在Android SDK Tools25.2.3及以后提供了sdkmanager ,avdmanager来替代android命令,也就是说不能在继续使用android命令了
- Android SDK Manager就是一个Android软件开发工具包管理器,就像一个桥梁,连通本地和服务器,从服务器下载安卓开发所需工具包到本地
- AVD Manager是一个Android虚拟驱动管理器,主要用来创建安卓模拟器(即手机模拟器)。当然,安卓模拟器所需的镜像(可以理解成模拟器的操作系统)是通过SDK Manager来下载的
sdkmanager 命令
官方 sdkmanager 文档
sdkmanager 命令专门用来管理 SDK,可以查看、安装、更新、卸载 Android SDK 的软件包;位于 tools/bin/ 目录下,官方虽然提供了使用文档,但是不够详细;为了方便使用,将其添加到环境变量;在讲解命令使用前先介绍下SDK目录结构,如图:
-
add-ons:该目录下面会保存一些附加库,一般是第三方为Android系统开发的一些附加功能,比如GoogleMaps,只不过在大陆这里面的功能都用不了
-
build-tools:这里面会保存一些通用的Android平台工具,同时该目录下面还会以api版本划分不同的子目录,例如Google 2014 I/O大会上发布了API20对应的build-tool的版本就是20.0.0,在这之间可能有小版本,例如20.0.1等等
这个版本号对应这build.gradle文件中的buildeToolVersion值;这里面的工具有aapt,aidl,dx等,其中aapt(Android Asset Packaging Tool)安卓资源打包工具:编译应用程序的资源文件(包括 AndroidManifest.xml 和你的 Activitiy 的 xml 文件),生成 R.java 文件,这样你就可以从你的java代码中引用资源;aidl即 Android Interface definition language 它是一种android内部进程通信接口的描述语言,把 .aidl 接口转换成 java 接口;dx工具用来转化.class中间代码为dvlik中间代码,所有经过java编译的生成.class文件都需要此工具进行转换成dex文件,最后打包进apk文件中 -
emulator:这里是保存下载好的模拟器
-
docs:这里面是Android SDKAPI参考文档,所有的API都可以在这里查到
-
extras:里面比较重要的是这三个Android Support Repository , Android Support Library, Google Repository 。想知道这三者的区别,得先知道Android Studio和Eclipse在构建Android 项目时的区别。AS采用gradle构建,而eclipse采用ant构建。所以Google提供了Respository用于Android Studio,而Library用于Eclipse;而Google Repository 该存储库可为您的应用提供各种功能和服务,包括 Firebase、Google 地图、游戏成就和排行榜等
-
platforms:该目录下会以Android api版本进行划分,每个版本一个目录,存放该版本的开发包;同时还有一些其它目录,比如data保存着一些系 统资源,skins则是Android模拟器的皮肤,templates是工程创建的默认模板,android.jar则 是该版本的主要framework文件
-
platform-tools:包含了很多重要工具:adb是android调试工具,以命令行的形式和模拟器或者连接的手机进行通讯;sqlite3帮助开发者在PC上查看sqlite数据库等其它工具
-
sources:这里就是保存每个api版本的系统源码
-
system-images:系统镜像,模拟器使用的
-
tools:这里包含了android 开发和调试的工具
接下来看看相关命令的使用
-
sdkmanager --help:查看它的命令使用方式
-
sdkmanager --list:将SDK的相关信息罗列出来,比如所有 已安装的包、有效的包 和 可以更新包
Installed packages:=====================] 100% Computing updates... Path | Version | Description | Location ------- | ------- | ------- | ------- build-tools;25.0.1 | 25.0.1 | Android SDK Build-Tools 25.0.1 | build-tools\25.0.1\ build-tools;27.0.1 | 27.0.1 | Android SDK Build-Tools 27.0.1 | build-tools\27.0.1\ build-tools;28.0.2 | 28.0.2 | Android SDK Build-Tools 28.0.2 | build-tools\28.0.2\ build-tools;28.0.3 | 28.0.3 | Android SDK Build-Tools 28.0.3 | build-tools\28.0.3\ cmake;3.10.2.4988404 | 3.10.2 | CMake 3.10.2.4988404 | cmake\3.10.2.4988404\ emulator | 28.0.23 | Android Emulator | emulator\ extras;android;m2repository | 47.0.0 | Android Support Repository | extras\android\m2repository\ extras;google;m2repository | 58 | Google Repository | extras\google\m2repository\ extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2 | 1 | Solver for ConstraintLayout 1.0.2 | extras\m2repository\com\android\support\constraint\constraint-layout-solver\1.0.2\ extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2 | 1 | ConstraintLayout for Android 1.0.2 | extras\m2repository\com\android\support\constraint\constraint-layout\1.0.2\ patcher;v4 | 1 | SDK Patch Applier v4 | patcher\v4\ platform-tools | 28.0.2 | Android SDK Platform-Tools | platform-tools\ platforms;android-17 | 3 | Android SDK Platform 17 | platforms\android-17\ platforms;android-19 | 4 | Android SDK Platform 19 | platforms\android-19\ platforms;android-21 | 2 | Android SDK Platform 21 | platforms\android-21\ platforms;android-22 | 2 | Android SDK Platform 22 | platforms\android-22\ platforms;android-23 | 3 | Android SDK Platform 23 | platforms\android-23\ platforms;android-24 | 2 | Android SDK Platform 24 | platforms\android-24\ platforms;android-26 | 2 | Android SDK Platform 26 | platforms\android-26\ platforms;android-28 | 6 | Android SDK Platform 28 | platforms\android-28\ sources;android-17 | 1 | Sources for Android 17 | sources\android-17\ sources;android-19 | 2 | Sources for Android 19 | sources\android-19\ sources;android-21 | 1 | Sources for Android 21 | sources\android-21\ sources;android-23 | 1 | Sources for Android 23 | sources\android-23\ sources;android-24 | 1 | Sources for Android 24 | sources\android-24\ sources;android-26 | 1 | Sources for Android 26 | sources\android-26\ sources;android-28 | 1 | Sources for Android 28 | sources\android-28\ tools | 26.1.1 | Android SDK Tools | tools\ Available Packages: Path | Version | Description ------- | ------- | ------- add-ons;addon-google_apis-google-15 | 3 | Google APIs add-ons;addon-google_apis-google-16 | 4 | Google APIs add-ons;addon-google_apis-google-17 | 4 | Google APIs add-ons;addon-google_apis-google-18 | 4 | Google APIs add-ons;addon-google_apis-google-19 | 20 | Google APIs add-ons;addon-google_apis-google-21 | 1 | Google APIs add-ons;addon-google_apis-google-22 | 1 | Google APIs add-ons;addon-google_apis-google-23 | 1 | Google APIs add-ons;addon-google_apis-google-24 | 1 | Google APIs add-ons;addon-google_gdk-google-19 | 11 | Glass Development Kit Preview build-tools;19.1.0 | 19.1.0 | Android SDK Build-Tools 19.1 build-tools;20.0.0 | 20.0.0 | Android SDK Build-Tools 20 build-tools;21.1.2 | 21.1.2 | Android SDK Build-Tools 21.1.2 build-tools;22.0.1 | 22.0.1 | Android SDK Build-Tools 22.0.1 build-tools;23.0.1 | 23.0.1 | Android SDK Build-Tools 23.0.1 build-tools;23.0.2 | 23.0.2 | Android SDK Build-Tools 23.0.2 build-tools;23.0.3 | 23.0.3 | Android SDK Build-Tools 23.0.3 build-tools;24.0.0 | 24.0.0 | Android SDK Build-Tools 24 build-tools;24.0.1 | 24.0.1 | Android SDK Build-Tools 24.0.1 build-tools;24.0.2 | 24.0.2 | Android SDK Build-Tools 24.0.2 build-tools;24.0.3 | 24.0.3 | Android SDK Build-Tools 24.0.3 build-tools;25.0.0 | 25.0.0 | Android SDK Build-Tools 25 build-tools;25.0.1 | 25.0.1 | Android SDK Build-Tools 25.0.1 build-tools;25.0.2 | 25.0.2 | Android SDK Build-Tools 25.0.2 build-tools;25.0.3 | 25.0.3 | Android SDK Build-Tools 25.0.3 build-tools;26.0.0 | 26.0.0 | Android SDK Build-Tools 26 build-tools;26.0.1 | 26.0.1 | Android SDK Build-Tools 26.0.1 build-tools;26.0.2 | 26.0.2 | Android SDK Build-Tools 26.0.2 build-tools;26.0.3 | 26.0.3 | Android SDK Build-Tools 26.0.3 build-tools;27.0.0 | 27.0.0 | Android SDK Build-Tools 27 build-tools;27.0.1 | 27.0.1 | Android SDK Build-Tools 27.0.1 build-tools;27.0.2 | 27.0.2 | Android SDK Build-Tools 27.0.2 build-tools;27.0.3 | 27.0.3 | Android SDK Build-Tools 27.0.3 build-tools;28.0.0 | 28.0.0 | Android SDK Build-Tools 28 build-tools;28.0.0-rc1 | 28.0.0 rc1 | Android SDK Build-Tools 28-rc1 build-tools;28.0.0-rc2 | 28.0.0 rc2 | Android SDK Build-Tools 28-rc2 build-tools;28.0.1 | 28.0.1 | Android SDK Build-Tools 28.0.1 build-tools;28.0.2 | 28.0.2 | Android SDK Build-Tools 28.0.2 build-tools;28.0.3 | 28.0.3 | Android SDK Build-Tools 28.0.3 build-tools;29.0.0-rc1 | 29.0.0 rc1 | Android SDK Build-Tools 29-rc1 build-tools;29.0.0-rc2 | 29.0.0 rc2 | Android SDK Build-Tools 29-rc2 build-tools;29.0.0-rc3 | 29.0.0 rc3 | Android SDK Build-Tools 29-rc3 cmake;3.10.2.4988404 | 3.10.2 | CMake 3.10.2.4988404 cmake;3.6.4111459 | 3.6.4111459 | CMake 3.6.4111459 docs | 1 | Documentation for Android SDK emulator | 29.0.9 | Android Emulator extras;android;gapid;1 | 1.0.3 | GPU Debugging tools extras;android;gapid;3 | 3.1.0 | GPU Debugging tools extras;android;m2repository | 47.0.0 | Android Support Repository extras;google;auto | 1.1 | Android Auto Desktop Head Unit emulator extras;google;google_play_services | 49 | Google Play services extras;google;instantapps | 1.7.0 | Google Play Instant Development SDK extras;google;m2repository | 58 | Google Repository extras;google;market_apk_expansion | 1 | Google Play APK Expansion library extras;google;market_licensing | 1 | Google Play Licensing Library extras;google;simulators | 1 | Android Auto API Simulators extras;google;usb_driver | 11 | Google USB Driver extras;google;webdriver | 2 | Google Web Driver extras;intel;Hardware_Accelerated_Execution_Manager | 7.3.2 | Intel x86 Emulator Accelerator (HAXM installer) extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0 | 1 | Solver for ConstraintLayout 1.0.0 extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4 | 1 | com.android.support.constraint:constraint-layout-solver:1.0.0-alpha4 extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8 | 1 | Solver for ConstraintLayout 1.0.0-alpha8 extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1 | 1 | Solver for ConstraintLayout 1.0.0-beta1 extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta2 | 1 | Solver for ConstraintLayout 1.0.0-beta2 extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta3 | 1 | Solver for ConstraintLayout 1.0.0-beta3 extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta4 | 1 | Solver for ConstraintLayout 1.0.0-beta4 extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta5 | 1 | Solver for ConstraintLayout 1.0.0-beta5 extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1 | 1 | Solver for ConstraintLayout 1.0.1 extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2 | 1 | Solver for ConstraintLayout 1.0.2 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0 | 1 | ConstraintLayout for Android 1.0.0 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4 | 1 | com.android.support.constraint:constraint-layout:1.0.0-alpha4 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8 | 1 | ConstraintLayout for Android 1.0.0-alpha8 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta1 | 1 | ConstraintLayout for Android 1.0.0-beta1 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta2 | 1 | ConstraintLayout for Android 1.0.0-beta2 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta3 | 1 | ConstraintLayout for Android 1.0.0-beta3 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta4 | 1 | ConstraintLayout for Android 1.0.0-beta4 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta5 | 1 | ConstraintLayout for Android 1.0.0-beta5 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.1 | 1 | ConstraintLayout for Android 1.0.1 extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2 | 1 | ConstraintLayout for Android 1.0.2 lldb;2.0 | 2.0.2558144 | LLDB 2.0 lldb;2.1 | 2.1.2852477 | LLDB 2.1 lldb;2.2 | 2.2.3271982 | LLDB 2.2 lldb;2.3 | 2.3.3614996 | LLDB 2.3 lldb;3.0 | 3.0.4213617 | LLDB 3.0 lldb;3.1 | 3.1.4508709 | LLDB 3.1 ndk-bundle | 19.2.5345600 | NDK patcher;v4 | 1 | SDK Patch Applier v4 platform-tools | 28.0.3 | Android SDK Platform-Tools platforms;android-10 | 2 | Android SDK Platform 10 platforms;android-11 | 2 | Android SDK Platform 11 platforms;android-12 | 3 | Android SDK Platform 12 platforms;android-13 | 1 | Android SDK Platform 13 platforms;android-14 | 4 | Android SDK Platform 14 platforms;android-15 | 5 | Android SDK Platform 15 platforms;android-16 | 5 | Android SDK Platform 16 platforms;android-17 | 3 | Android SDK Platform 17 platforms;android-18 | 3 | Android SDK Platform 18 platforms;android-19 | 4 | Android SDK Platform 19 platforms;android-20 | 2 | Android SDK Platform 20 platforms;android-21 | 2 | Android SDK Platform 21 platforms;android-22 | 2 | Android SDK Platform 22 platforms;android-23 | 3 | Android SDK Platform 23 platforms;android-24 | 2 | Android SDK Platform 24 platforms;android-25 | 3 | Android SDK Platform 25 platforms;android-26 | 2 | Android SDK Platform 26 platforms;android-27 | 3 | Android SDK Platform 27 platforms;android-28 | 6 | Android SDK Platform 28 platforms;android-7 | 3 | Android SDK Platform 7 platforms;android-8 | 3 | Android SDK Platform 8 platforms;android-9 | 2 | Android SDK Platform 9 platforms;android-Q | 3 | Android SDK Platform Q sources;android-15 | 2 | Sources for Android 15 sources;android-16 | 2 | Sources for Android 16 sources;android-17 | 1 | Sources for Android 17 sources;android-18 | 1 | Sources for Android 18 sources;android-19 | 2 | Sources for Android 19 sources;android-20 | 1 | Sources for Android 20 sources;android-21 | 1 | Sources for Android 21 sources;android-22 | 1 | Sources for Android 22 sources;android-23 | 1 | Sources for Android 23 sources;android-24 | 1 | Sources for Android 24 sources;android-25 | 1 | Sources for Android 25 sources;android-26 | 1 | Sources for Android 26 sources;android-27 | 1 | Sources for Android 27 sources;android-28 | 1 | Sources for Android 28 system-images;android-10;default;armeabi-v7a | 5 | ARM EABI v7a System Image system-images;android-10;default;x86 | 5 | Intel x86 Atom System Image system-images;android-10;google_apis;armeabi-v7a | 6 | Google APIs ARM EABI v7a System Image system-images;android-10;google_apis;x86 | 6 | Google APIs Intel x86 Atom System Image system-images;android-14;default;armeabi-v7a | 2 | ARM EABI v7a System Image system-images;android-15;default;armeabi-v7a | 5 | ARM EABI v7a System Image system-images;android-15;default;x86 | 5 | Intel x86 Atom System Image system-images;android-15;google_apis;armeabi-v7a | 6 | Google APIs ARM EABI v7a System Image system-images;android-15;google_apis;x86 | 6 | Google APIs Intel x86 Atom System Image system-images;android-16;default;armeabi-v7a | 6 | ARM EABI v7a System Image system-images;android-16;default;mips | 1 | MIPS System Image system-images;android-16;default;x86 | 6 | Intel x86 Atom System Image system-images;android-16;google_apis;armeabi-v7a | 6 | Google APIs ARM EABI v7a System Image system-images;android-16;google_apis;x86 | 6 | Google APIs Intel x86 Atom System Image system-images;android-17;default;armeabi-v7a | 6 | ARM EABI v7a System Image system-images;android-17;default;mips | 1 | MIPS System Image system-images;android-17;default;x86 | 4 | Intel x86 Atom System Image system-images;android-17;google_apis;armeabi-v7a | 6 | Google APIs ARM EABI v7a System Image system-images;android-17;google_apis;x86 | 6 | Google APIs Intel x86 Atom System Image system-images;android-18;default;armeabi-v7a | 5 | ARM EABI v7a System Image system-images;android-18;default;x86 | 4 | Intel x86 Atom System Image system-images;android-18;google_apis;armeabi-v7a | 6 | Google APIs ARM EABI v7a System Image system-images;android-18;google_apis;x86 | 6 | Google APIs Intel x86 Atom System Image system-images;android-19;default;armeabi-v7a | 5 | ARM EABI v7a System Image system-images;android-19;default;x86 | 6 | Intel x86 Atom System Image system-images;android-19;google_apis;armeabi-v7a | 38 | Google APIs ARM EABI v7a System Image system-images;android-19;google_apis;x86 | 38 | Google APIs Intel x86 Atom System Image system-images;android-21;android-tv;armeabi-v7a | 3 | Android TV ARM EABI v7a System Image system-images;android-21;android-tv;x86 | 3 | Android TV Intel x86 Atom System Image system-images;android-21;default;armeabi-v7a | 4 | ARM EABI v7a System Image system-images;android-21;default;x86 | 5 | Intel x86 Atom System Image system-images;android-21;default;x86_64 | 5 | Intel x86 Atom_64 System Image system-images;android-21;google_apis;armeabi-v7a | 30 | Google APIs ARM EABI v7a System Image system-images;android-21;google_apis;x86 | 30 | Google APIs Intel x86 Atom System Image system-images;android-21;google_apis;x86_64 | 30 | Google APIs Intel x86 Atom_64 System Image system-images;android-22;android-tv;x86 | 3 | Android TV Intel x86 Atom System Image system-images;android-22;default;armeabi-v7a | 2 | ARM EABI v7a System Image system-images;android-22;default;x86 | 6 | Intel x86 Atom System Image system-images;android-22;default;x86_64 | 6 | Intel x86 Atom_64 System Image system-images;android-22;google_apis;armeabi-v7a | 24 | Google APIs ARM EABI v7a System Image system-images;android-22;google_apis;x86 | 24 | Google APIs Intel x86 Atom System Image system-images;android-22;google_apis;x86_64 | 24 | Google APIs Intel x86 Atom_64 System Image system-images;android-23;android-tv;armeabi-v7a | 12 | Android TV ARM EABI v7a System Image system-images;android-23;android-tv;x86 | 19 | Android TV Intel x86 Atom System Image system-images;android-23;android-wear;armeabi-v7a | 6 | Android Wear ARM EABI v7a System Image system-images;android-23;android-wear;x86 | 6 | Android Wear Intel x86 Atom System Image system-images;android-23;default;armeabi-v7a | 6 | ARM EABI v7a System Image system-images;android-23;default;x86 | 10 | Intel x86 Atom System Image system-images;android-23;default;x86_64 | 10 | Intel x86 Atom_64 System Image system-images;android-23;google_apis;armeabi-v7a | 31 | Google APIs ARM EABI v7a System Image system-images;android-23;google_apis;x86 | 31 | Google APIs Intel x86 Atom System Image system-images;android-23;google_apis;x86_64 | 31 | Google APIs Intel x86 Atom_64 System Image system-images;android-24;android-tv;x86 | 20 | Android TV Intel x86 Atom System Image system-images;android-24;default;arm64-v8a | 7 | ARM 64 v8a System Image system-images;android-24;default;armeabi-v7a | 7 | ARM EABI v7a System Image system-images;android-24;default;x86 | 8 | Intel x86 Atom System Image system-images;android-24;default;x86_64 | 8 | Intel x86 Atom_64 System Image system-images;android-24;google_apis;arm64-v8a | 25 | Google APIs ARM 64 v8a System Image system-images;android-24;google_apis;armeabi-v7a | 25 | Google APIs ARM EABI v7a System Image system-images;android-24;google_apis;x86 | 25 | Google APIs Intel x86 Atom System Image system-images;android-24;google_apis;x86_64 | 25 | Google APIs Intel x86 Atom_64 System Image system-images;android-24;google_apis_playstore;x86 | 19 | Google Play Intel x86 Atom System Image system-images;android-25;android-tv;x86 | 14 | Android TV Intel x86 Atom System Image system-images;android-25;android-wear-cn;armeabi-v7a | 4 | China version of Android Wear ARM EABI v7a System Image system-images;android-25;android-wear-cn;x86 | 4 | China version of Android Wear Intel x86 Atom System Image system-images;android-25;android-wear;armeabi-v7a | 3 | Android Wear ARM EABI v7a System Image system-images;android-25;android-wear;x86 | 3 | Android Wear Intel x86 Atom System Image system-images;android-25;default;x86 | 1 | Intel x86 Atom System Image system-images;android-25;default;x86_64 | 1 | Intel x86 Atom_64 System Image system-images;android-25;google_apis;arm64-v8a | 16 | Google APIs ARM 64 v8a System Image system-images;android-25;google_apis;armeabi-v7a | 16 | Google APIs ARM EABI v7a System Image system-images;android-25;google_apis;x86 | 16 | Google APIs Intel x86 Atom System Image system-images;android-25;google_apis;x86_64 | 16 | Google APIs Intel x86 Atom_64 System Image system-images;android-25;google_apis_playstore;x86 | 9 | Google Play Intel x86 Atom System Image system-images;android-26;android-tv;x86 | 12 | Android TV Intel x86 Atom System Image system-images;android-26;android-wear-cn;x86 | 4 | China version of Android Wear Intel x86 Atom System Image system-images;android-26;android-wear;x86 | 4 | Android Wear Intel x86 Atom System Image system-images;android-26;default;x86 | 1 | Intel x86 Atom System Image system-images;android-26;default;x86_64 | 1 | Intel x86 Atom_64 System Image system-images;android-26;google_apis;x86 | 13 | Google APIs Intel x86 Atom System Image system-images;android-26;google_apis;x86_64 | 13 | Google APIs Intel x86 Atom_64 System Image system-images;android-26;google_apis_playstore;x86 | 7 | Google Play Intel x86 Atom System Image system-images;android-27;android-tv;x86 | 7 | Android TV Intel x86 Atom System Image system-images;android-27;default;x86 | 1 | Intel x86 Atom System Image system-images;android-27;default;x86_64 | 1 | Intel x86 Atom_64 System Image system-images;android-27;google_apis;x86 | 9 | Google APIs Intel x86 Atom System Image system-images;android-27;google_apis_playstore;x86 | 3 | Google Play Intel x86 Atom System Image system-images;android-28;android-tv;x86 | 8 | Android TV Intel x86 Atom System Image system-images;android-28;android-wear-cn;x86 | 3 | China version of Wear OS Intel x86 Atom System Image system-images;android-28;android-wear;x86 | 3 | Wear OS Intel x86 Atom System Image system-images;android-28;default;x86 | 4 | Intel x86 Atom System Image system-images;android-28;default;x86_64 | 4 | Intel x86 Atom_64 System Image system-images;android-28;google_apis;x86 | 9 | Google APIs Intel x86 Atom System Image system-images;android-28;google_apis;x86_64 | 9 | Google APIs Intel x86 Atom_64 System Image system-images;android-28;google_apis_playstore;x86 | 8 | Google Play Intel x86 Atom System Image system-images;android-28;google_apis_playstore;x86_64 | 8 | Google Play Intel x86 Atom_64 System Image system-images;android-Q;android-tv;x86 | 1 | Android TV Intel x86 Atom System Image system-images;android-Q;default;x86 | 4 | Intel x86 Atom System Image system-images;android-Q;default;x86_64 | 4 | Intel x86 Atom_64 System Image system-images;android-Q;google_apis;x86 | 4 | Google APIs Intel x86 Atom System Image system-images;android-Q;google_apis;x86_64 | 4 | Google APIs Intel x86 Atom_64 System Image system-images;android-Q;google_apis_playstore;x86 | 4 | Google Play Intel x86 Atom System Image system-images;android-Q;google_apis_playstore;x86_64 | 4 | Google Play Intel x86 Atom_64 System Image tools | 26.1.1 | Android SDK Tools Available Updates: ID | Installed | Available ------- | ------- | ------- emulator | 28.0.23 | 29.0.9 platform-tools | 28.0.2 | 28.0.3
每一行分号【;】前面的名称其实就是你的AndroidSDK根目录下文件夹名称,分号后面就是该目录里面的文件或者文件夹内容
如果path太长,输出的时候中间用 “…” 给替代了,这样 的Path 是无法使用的,这时候需要加上 --verbose 参数输出完整的 Path:sdkmanager --list --verbose
-
sdkmanager < packages>:这个是安装命令,其中packages参数为软件包的Path名称,即通过sdkmanager --list命令查看的列表中的Path名称,
packages参数 必需要使用引号引起来,可同时添加多个packages参数同时安装多个包(多个包之间用空格隔开,并各自使用引号引起来)
安装单个包
sdkmanager “platforms;android-27”,这个用来下载API27的包
sdkmanager “platform-tools”,adb工具就在这个包下面
同时安装多个包
sdkmanager “platform-tools” “build-tools;28.0.3” -
sdkmanager --uninstall < packages>:这是卸载命令,比如
卸载单个包
sdkmanager --uninstall “sources;android-25”
卸载多个包
sdkmanager --uninstall “build-tools;28.0.0” “platforms;android-26” -
sdkmanager --update:如果是更新全部包,就用这个命令,后面不需要添加参数;如果是更新某个包,命令如下
sdkmanager “system-images;android-25;google_apis;x86_64”,可以发现其实跟安装命令一样,因为sdkmanager 会自动下载最新版替换已安装的版本 -
额外参数:上述命令均可添加若干个额外的可用选项参数:
--sdk_root=<path> // 使用指定的 SDK 路径, 而不是当前 sdkmanager 命令 // 的 tools 包所在的 SDK 路径 --channel=<channel_id> // 包含软件包的更新渠道, channel_id: 0 (Stable), // 1 (Beta), 2 (Dev), 3 (Canary) --include_obsolete // 包含过时的软件包, 只对 --list 和 --update 命令有效 --no_https // 所有链接强制使用 HTTP, 而不是 HTTPS --verbose // 详细输出模式, 输出 Error, Warn, Info 级别的消息 --proxy=<http|socks> // 指定代理的 协议 --proxy_host=<IP_address|DNS_address> // 指定代理的 IP地址 或 DNS地址 --proxy_port=<port_number> // 指定代理的 端口号
如果你有设置代理的需求,可以输入类似下方的命令
sdkmanager --list --no_https --proxy=http --proxy_host=mirrors.neusoft.edu --proxy_port=80
这个是大连东软信息学院镜像服务器地址: http://mirrors.neusoft.edu 端口:80
推荐一个国内的镜像网站http://tools.android-studio/index.php/sdk,也可以在这个网站上下载
avdmanager命令
这个是用来管理模拟器的命令行工具,输入avdmanager -h可以查看支持哪些命令
通过avdmanager list 会列举出可以供你创建的模拟器及已经下载好的SDK版本
还可以通过avdmanager list avd 列举出已经创建的模拟器清单
avdmanager list target 列举出当前平台中SDK版本
这里要注意到每个平台版本前面都有一个id,后续使用时可以通过这个id代替平台SDK版本
管理模拟器
可以通过avdmanager create 创建模拟器,后面可以添加的参数如下:
最后可以通过avdmanager delete avd后面接模拟器名来删除模拟器
monitor工具
它集成了在Android开发,自动化测试过程中对应用调测非常重要的常用功能,这个工具的启动脚本在SDK目录的tools目录下,如果你在环境变量中添加了,那就可以直接在cmd窗口中直接操作了;首先就是输入monitor启动Android Device Monitor,启动过程可能要等个几秒钟;它有一些使用频率很高的工具,如下:
DDMS
全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务,可以进行的操作有:为测试设备截屏,查看特定进程中正在运行的线程以及堆信息、Logcat、广播状态信息等;ddms这个界面有很多工具可以使用,如下面提到的
-
Devices:当前设备列表,设备的状态,设备下的进程清单;同时在它这块面板顶部有一排按钮,比如:
- update heap:对选中的进程更新其堆内存信息,然后在右边面板选中Heap页卡,点击Cause GC就可以得到内存信息;这在进行内存调休,比如分析内存泄漏的情况就很有用
- Dump HPROF file:生成一个堆内存详细调用情况的文件,如果我们通过Heap不能分析出问题,就可以通过下载这个文件再通过MAT进行详细分析
- Cause GC:执行垃圾回收,跟第一步作用是一样的
- Update Threads:更新进程的线程信息,操作后在右边面板中选中thread页卡,可以查看创建的线程信息,线程信息包括线程id,状态,用户代码执行时间,系统代码执行时间,线程名等信息;选中具体线程,可以在下方看到具体的调用栈信息
- Start Method Profiling:它的作用主要是用来追踪某一段代码的详细执行信息,在两次点击中产生一个.trance格式文件,这时DDMS会自动触发Traceview工具来分析采集数据,并弹出可视化的面板;经常在分析应用卡顿,页面不流畅的情况下使用它来分析卡顿原因,具体使用教程可参考性能分析-Android中APP的UI卡顿检测之TraceView分析使用案例
- Stop Process:就是杀死一个进程,然后在设备上这个应用就被销毁了
- Screen Capture:屏幕截图,很简单 不多说
- Dump View Hierarchy for UI Automator:这其实对应着一个工具uiautomatorViewer(一个图形界面工具来扫描和分析应用的UI控件),点击后,会截取当前手机页面,然后在DDMS自动打开一个.uix后缀的页卡,左边是手机屏幕信息,右边是选中View的具体信息(比如view的id,坐标,状态,class等),这在做UI自动化测试的时候非常有用,因为自动化测试的时候经常需要获取View的id,坐标等信息
- Capture system wide trance using Android systrace:Systrace其实有些类似Traceview,它是对整个系统进行分析(同一时间轴包含应用及SurfaceFlinger、WindowManagerService等模块、服务运行信息);这对应着一个Systrace工具,位于platform-tools\systrace下,有一个Python脚本,可以通过python systrace.py --time=10 -o mynewtrace.html sched gfx view wm命令执行;另一个启动方法就是点击这个按钮,在弹出框选择文件保存位置,时间,关注的信息等,点击ok,接着操作APP,完事生成一个trace.html文件,用Chrome打开即可
-
Logcat:输出系统运行日志的界面
-
Allocation Tracker:内存分配的跟踪工具,使用很简单,选中一个进程,点击Start Tracking,然后再点击Get Allocations,就会在下方面板给出数据
-
Network Statistics:应用流量统计工具,很简单不多说了
-
File explorer:选中File explorer页卡,有三个按钮可实现对Android手机文件系统的上传,下载,删除操作;下面列表有三个目录:data(对应手机的RAM,也就是内部存储),sdcard(对应sd卡,也就是外部存储),system(对应手机的ROM,OS以及系统自带apk程序等存放在这里)
-
Emulator Control:模拟器控制工具,但是现在的SDK已经不提供这个功能了,它的功能放到了模拟器中
-
System Information:统计分析一些系统信息,比如CPU,内存,UI渲染时间统计等
Hierarchy View
除了DDMS视图,其实还有一个Hierarchy View视图,它也是很有用的,在左边面板选中一个Activity,在右边面板就会生成一个树状的View视图,选择视图中的具体View,可以查看它的很多详细信息;在选中后可以点击左边的View Properties页卡,下面会有更加详细的信息;跟DDMS中的Dump View Hierarchy for UI Automator(uiautomatorViewer工具)类似
uiautomatorViewer工具
在做自动化测试的时候,需要获取View的坐标,这时候可以通过uiautomatorViewer工具,如果在ddms里获取就比较慢,单独打开uiautomatorViewer比较快,直接在dos窗口输入uiautomatorviewer就可以了,可以查看view的坐标、id等信息
下一篇文章介绍Monkey工具的命令及使用方法
版权声明:本文标题:Android自动化测试环境部署及adb sdkmanager avdmanager Monitor DDMS工具使用及命令详解 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727572335a1121374.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论