一、Android 的 SDK Windows 版本安装

按顺序安装以下内容

1.    安装JDK(Java Development Kit, 即Java开发工具包)

2. 安装Eclipse 集成开发环境

3.    安装SDK(Software Development Kit, 即软件开发工具包)

4.    安装ADT(Android Development Tools)插件

二、Android模拟机运行

打开Eclipse,如下图操作:

再进入AVD Manager,创建模拟机

模拟器启动成功:

三、模拟机操作常见出错解决办法

1.安装应用错误现象:’adb’不是内部或外部命令,也不是可运行程序或批处理文件

解决方法:找对adb.exe文件的正确目录

开始--运行,输入cmd,打开命令提示符,进入adb.exe所在目录。输入adb install空格,用鼠标将apk游戏拖至命令提示符,回车

出现success,表示安装成功。进入程序,可以查看到安装的搜狗输入法:

2. 安装应用错误现象:【1】  segmentation fault    pm install /data…

解决办法:修改apk文件名为英文,名称中间不要有空格

3.模拟器打不开的情况,如下截图所示:

问题是因为SDK路径中出现了空格的原因,而我的SDK放在Android SDK文件夹下,遂删除了中间的空格,问题果然迎刃而解。

4.打不开AVD Manager的问题

我在配置Android开发环境时,在配置AVD的时候,由于不小心是的AVD Manager.exe异常退出。然后我再次点击AVD Manager.exe,AVD Manager.exe闪一下就消失没反应。找了很久都没有找到解决办法。包括重装,后来偶然发现我的AVD的数据存放目录在C:/****(具体请求不一致,不过默认在C盘)/.android下面,例如我的安装目录:C:\Documents and Settings\chinasoft\.android于是我把 .android下面的内容全部删除,再次进入 AVD Manager 就ok了 可以使用。

5. 安装应用错误现象:error: more than one device and emulator

原因:当前正在运行两个模拟器设备,即运行了1个以上模拟器或运行模拟器的同时手机正在连接PC

解决方法:关闭多余模拟器设备

6. 问题概述:

在启动Android模拟器时出现以下错误,导致启动失败。

ERROR: the user data image is used by another emulator. aborting

原因

系统判断你当前已经启动了另外一个emulator,可能是某些正常操作或异常退出造成的。

解决方法

进入你avd目录下:

如:C:\Documents and Settings\Administrator\.android\avd\android2.3.avd删除以lock结尾的文件夹。(我简单解释下为什么要删除这些文件呢,其实.lock是加锁,如果程序崩溃等原因导致无法清除这些以.lock结尾的文件夹,就会出现这个问题,也就是这个avd的锁没有被释放,导致avd manager以为这个avd正在使用当中。)

 

7.emulator: ERROR: Unable to load VM from snapshot. The snapshot has been saved for a different hardware configuration.

原因:模拟器错误,无法从虚拟机上加载快照,快照已被保存为一个不同的硬件配置。(存档错误无法读取)

解决办法

Android Virtual Device Manager -> delete AVD -> new AVD

重新创建个AVD,解决。

8. 我的avd创建界面又和别人不一样,怎么办,模拟器的方向键和确定键用不了,怎么解决?

我自己摸索了搞掂了,在device definition里用别人定义的avd点击clone,把Input的keyboard勾上支持键盘,然后选dpad支持方向键,最后在botton改为hardware用来支持键盘的home、menu、back键就ok了

9.关于sdk安装路径

错误提示为:

invalid command-line parameter:
Files\Android\android-sdk\tools/emulator-arm.exe. Hint: use '@foo' to launch a
virtual device named 'foo'. please use -help for more information

这个问题有两种情况:

1) 安装路径中不能含有中文。

在android模拟器的安装过程中,因为使用的路径中含有中文,结果杯具了……一直提示“invalid command”。无奈之下,只能把路径改了

2) 安装路径中不能含有空格。

这个是在网上搜到的,还没遇到过这种情况,不过还是应该注意。毕竟改路径不是一件好玩的事呀!

10.某天,Android 启动模拟器时出现“Failed to allocate memory: 8”错误,模拟器无法启动,如下图:

原因:设置了不正确AVD显示屏模式,4.0版默认的模式为WVGA800,改成WXGA720后导致不支持。

解决办法:编辑这个AVD,将Skin -> Build
in的参数改回默认参数。

 

11.启动安卓应用时报错This application
is not correctly embedded (wrong wmode value)

 

这个其实是Flash报的“ErrorEvent:。 text=Error
#3702: Context3D 不可用”错误被Starling变了一下。

解决方法:找到项目文件夹中的html-template,并找到index.template.html,右键使用TextEditor编辑,在

params.allowfullscreen=”true”;后面加上params.wmode
= "direct";最好下面的embed也这样配置下<param name="allowFullScreen"
value="true" />后面加<param
name="wmode" value="direct" />

如果是手机项目,没有index.template.html文件,则在项目的app.xml里面改(一般是项目名-app.xml文件)。在“</initialWindow>”前面增加两行

<renderMode>direct</renderMode>

<fullScreen>true</fullScreen>

就算已经有<fullScreen>true</fullScreen>了也要在renderMode后面加一行,要不然会出现不报错的白屏。

------------------------------------------------------------------------------------------------

PS:附加正常运行的手机项目的-app.xml的initialWindow配置:

<aspectRatio>landscape</aspectRatio>

<renderMode>direct</renderMode>

<fullScreen>true</fullScreen>

<visible>true</visible>

 

12.adbInstall安装apk错误常见列表  

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                                          未知错误

四、资料整理

(一).安装卸载apk

(二)、版本检查------aapt dump badging testapk.apk

(三)、反编译--------dexdump–d
classes.dex>1.txt

classes.dex要放在platform-tools目录下

 

1、使用命令查看APK中接口配置地址

将APK应用程序后缀名.apk改为.zip,解压出classes.dex,然后执行反编译命令,如图所示

2、打开1.txt,即可查看相应接口配置地址是否正确。

(四)、在模拟器中使用SD卡

到tools目录下,

./mksdcard
-l sdcard 512M sdcard.img

这样就创建了一个512M的SD卡了,SDK图形界面中点“Edit”,在SD Cards中选择之前创建的SDK卡sdcard.img,就可以在模拟器中使用了:settings-->storage里查看。

(五)、向模拟器中传送文件

1.通过命令行上传文件

cd
platform-tools

./adb push
XXX sdcard/Musci/           #XXX是要添加到SD卡中的文件(一定要有最后的"/",否则会提示:failed
to copy 'XXX' to 'sdcard/Music': Is a directory)

注意:若提示Read-onlyfilesystem错误,运行adb
remount命令,即可。

如下图操作:(上传MP3文件到sdcard/Music目录)

如何查看刚才添加的文件?

./adb
shell            #进入模拟器的终端

cdsdcard/Music

ls                   #就可以看到我们的文件按啦!

如下图操作:

还可以这样哦:

./adb
shell            #进入模拟器的终端

mkdrisdcard/mp3

exit

./adb
push XXX sdcard/mp3

2.通过DDMS文件管理上传到手机

先按上述方法push一个音乐或图片文件到模拟器的sd卡中;

音乐文件:

模拟器-->主菜单-->Dev
Tools-->Media Provide-->Scan SD card,等到finish后就可以在主菜单-->Music中找到啦,直接可以在模拟器中播放了~~

图片文件:

模拟器-->主菜单-->Dev
Tools-->Media Provider-->insert albums,等到finish后就可以在主菜单-->Gallery
中找到啦,直接可以在模拟器中打开了~~

(六)、Android模拟器运行速度很慢解决办法

提速方法:

1) 关闭模拟器自动侦测手机旋转的设置,具体位置为:设置 - 显示 - 关闭“自动旋转屏幕”的选项。

2) 增加Android模拟器的内存大小:

a) 直接编辑 C:/Documents and Settings/用户名/.android/avd/模拟器.avd/config.ini,在vm.heapSize=xxx 后加上hw.ramSize=512 (单位MB,可根据情况设置)

b) 也可以通过 SDK Manager 来设置,选中要加内存的模拟器,Edit... -> Hardware -> New... 在出现的对话框中Property 选择 Device ram size ,然后回到前一界面,直接修改Device ram size对应的 value 即可。

(七)、Android SDK 命令行使用记录

1.
adb

1)
adb devices 列出当前连接到PC的设备(模拟器或真机)

2)
adb install xxx.apk首次安装某个程序到当前连接的设备中

3)
adb install -r xxx.apk更新安装某个程序到当前连接的设备中

4)
adb -d install xxx.apk以debug模式安装某个程序到当前连接的设备中

5)
adb -e install xxx.apk以for 模拟器模式安装某个程序到当前连接的设备(模拟器)中

6)
adb shell pm list packages 列出当前设备的所有已安装程序的包名

7)
adb -e logcat查看日志

8)
adb -d logcat查看日志

9)
adblogcatappID:V *:S 查看某个应用的日志

10)
adblogcatappID:VActivityManager:| *:S

11)
adblogcat|grep "I.air" 仅查看包含 "I.air" 的日志

12) adblogcat|grep "hello" application name 仅查看某应用包含
"I.air" 的日志

13)
adblogcat -c 清空logcat缓存

2.
ddms

1)
ddms打开Dalvik Debug Monitor 控制台

五、Android应用测试环境组网(针对联网APP应用)

_______________________________________________________________________________

六、Android应用数据抓包

方法(一):如第五步组网成功可以通过fiddler过滤应用包名进行抓包,检查DDMS--àlogcat查看错误日志。

方法(二):可以通过tcpdump命令抓包生成抓包文件,通过wireshark查看。

抓包准备:

1. Android手机需要先获得root权限。(如何获得root权限在此不作介绍)

2. 需要先获得
Android SDK

3. 需要获得tcpdump软件,获取地址(http://files.cnblogs.com/taofh/tcpdump.txt)

下载后,去掉后缀名.txt。

4. 需要获得wireshark,获取地址:

http://www.wireshark.org/download.html

抓包步骤:

1. 将Android手机与电脑通过USB相连,打开windows命令提示符窗口

2. 将tcpdump程序copy至android手机(该命令前面那个目录文件为本地地址,后面那个目录为目的手机端地址)

C:\android-sdk-windows\platform-tools>adb push C:\tcpdump
/data/local/tcpdump

3. 修改tcpdump的权限

C:\android-sdk-windows\platform-tools>adb shell

#chmod 777 /data/local/tcpdump

4. 进入root权限

C:\android-sdk-windows\platform-tools>adb shell

#su      (#表示已获得root权限,$表示未获得root权限)

在运行su指令后,手机终端桌面会出现相应提示信息以确认您对root操作的认可。

5. 运行tcpdump,输入以下命令启动抓包。

#/data/local/tcpdump -p -vv -s 0 -w /data/local/capture.pcap

2-5步操作如下:

6. 在手机端执行相应需要进行抓包分析的操作,执行完成后在命令提示符窗口执行Ctrl+C中断抓包进程

7. 将抓包结果复制至本地(前面那个目录为手机端地址,后面那个目录为本地地址)

C:\android-sdk-windows\platform-tools>adb pull /data/local/capture.pcap
c:/

8. 使用Wireshark工具查看抓包文件capture.pcap

_____________________________________________________________________

七、Android自动化测试工具——monkey

Monkey的用法是# adb
shell monkey -p your.package.name -v 500 ,首先,我们要找到应用程序在Emulator中所对应的包名,前6步完成了这项工作,最终发现应用程序包都在data/data下,你可以在shell中cd data/data,然后ls查看当前Emulator中的所有应用程序包。

应用已按上几节部署到模拟器中,现在我们举例对应用进行压力测试,详细步骤如下:

1.通过adb install命令将navito.apk文件安装到模拟器中。

2.在命令行输入adb
shell,进入Shell环境,成功进入后以#开始。

3.输入ls查看当前文件夹下的目录,执行结果如下

4.应用程序包都在data下,我们输入cd data进入data文件夹

5.输入ls查看文件夹下的内容,以上两步如下图所示:

6.还有个data,所有的应用程序就在这个data下了,进入这个data,然后输入ls,在最底一行可以看到我们应用包名com.pdager.navi。如下:

7.可以直接输入monkey -p com.pdager.navi -v 50,结果如下,也可以退出shell,在命令行输入,adb
shell monkey -p com.pdager.navi -v 50 ,运行过程中,Emulator中的应用程序在不断地切换画面,可以看一下,呵呵:)

_____________________________________________________________________

八、Android自动化测试工具——monkeyrunner

monkey主要应用在压力和可靠性测试上,运行该命令可以随机地向目标程序发送各种模拟键盘事件流,并且可以自己定义发送的次数,以此观察被测应用程序的稳定性和可靠性,应用起来也比较简单,记住那几个命令就行了。而monkeyrunner呢,相比之下会强大一些,它主要可应用于功能测试回归测试,并且可以自定义测试扩展,灵活性较强,并且测试人员可以完全控制。

Monkeyrunner工具使用(终端输入单行命令):

1.前置条件:

事先安装好android的SDK,配置好开发环境(如Eclipse),安装好Python(建议安装2.7.3的版本,新版本问题较多);

启动eclipse,启动模拟器

2、拷贝要测试的应用程序apk安装包到sdk安装目录下的tools目录下。(例如我的是D:\adt-bundle-windows-x86\sdk\tools)

3、运行cmd,定位到tools目录,输入命令"monkeyrunner",回车。成功则出现>>>

4、继续输入from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice回车。---------------导入monkeyrunner所要使用的模块

5、继续输入device = MonkeyRunner.waitForConnection()回车。--------没有报错,就说明和模拟机连接成功

6、device.installPackage('./sdk_demo.apk')回车(一定要相对路径!!!)-----------安装要测试apk

这个时候查看模拟器,已经有你安装的程序。

7、device.startActivity(component = 'com.tencent.sample/com.tencent.sample.MainActivity')。(package/activity)-------------------启动activity,需要传入package和activity名称,启动完成模拟器会自动打开sdk_demo.apk这个应用程序的主页。

8、device.press('KEYCODE_MENU','DOWN_AND_UP')---------------------执行按下menu键操作(还可以执行更多的操作比如按下OK键,按下方向键等。见下文)

9、result =
device.takeSnapshot()----------------------------------------对应用截图

10、result.writeToFile('./shot1.png','png')-----------------------------将应用截图保存为shot1.png

以上3-7步骤截图如下:

附:如何获得应用的package名称及程序入口activity?

Monkeyrunner工具使用(运行python文件):

也可以不这样麻烦得一行行地输入命令,可以将从“from...import...”开始的所有后面的语句都写到一个python文件里面,例如 sdk_demoTest.py,然后我们再从命令行直接通过monkeyrunner运行它即可。

步骤:

1.前置条件:

连接好Android手机或模拟机,安装好Python(建议安装2.7.3的版本,新版本问题较多);

拷贝要测试的应用程序apk安装包到sdk安装目录下的tools目录下

2.在程序菜单中打开python2.3.7,打开IDLE输入如下代码,并保存为sdk_demoTest.py:

(不知为什么打开的IDLE前4行内容没法删除,所以先暂时输入一段代码,保存为***.py,关闭后再次打开IDLE,进入file>open打开***.py,再次删除就可以了)

fromcom.android.monkeyrunner
import MonkeyRunner, MonkeyDevice, MonkeyImage

device
= MonkeyRunner.waitForConnection()

device.installPackage('./sdk_demo.apk')

device.startActivity(component='com.tencent.sample/com.tencent.sample.MainActivity')

device.press('KEYCODE_MENU','DOWN_AND_UP')

result
= device.takeSnapshot()

result.writeToFile('./shot1.png','png')

截图如下:

注意:如果有多个按键动作时,最好分开写。例如下面有三个按键动作:①按“下方向”键②按“下方向”键③按“ok”键,截图如下

各按键对应的名称如下图:

3.在命令行中用cd命令定位到android
SDK的路径下的tools目录,运行如下命令:

D:\adt-bundle-windows-x86\sdk\tools>monkeyrunner
sdk_demoTest.py

4.可以在模拟机上看到模拟操作,通过logcat查看日志文件

_______________________________________________________________________________

附:Monkeyrunner自动化测试过程中需要用到的技巧:

1.#导入模块:

fromcom.android.monkeyrunner import Monkey Runner,MonkeyDevice,
Monkey Image

2. #连接当前设备,并返回一个Monkey
Device
对象:

device
= MonkeyRunner.waitForConnection()

3.#安装Android

device.installPackage('myproject/bin/MyApplication.apk')

4. #启动一个Activity(定义模拟器到指定的操作界面)device.startActivity(component="com.flysnow.helloworld/com.flysnow.helloworld.HelloWorld")
注:'/'前面是package,后面是activity名称;此时模拟器会打开HelloWorld的欢迎主页

5. #截图:result
= device.takeSnapshot()

result.writeToFile('C:\\Users\\Martin\\Desktop\\test.png','png')

6. #时延(秒)MonkeyRunner.sleep(3)

7. #滑动屏幕(Python脚本)

fori
in range(1,70):device.drag(start,end,0.1,10)

//参数依次是开始,结束,持续时间步骤

fori
in range(1,70):device.drag(end,start,0.1,10)

8. #触击屏幕

device.touch(94,34,'DOWN_AND_UP')

Android应用测试指南的更多相关文章

  1. 《大话移动APP测试:Android与iOS应用测试指南》

    <大话移动app测试:android与ios应用测试指南> 基本信息 作者: 陈晔 出版社:清华大学出版社 ISBN:9787302368793 上架时间:2014-7-7 出版日期:20 ...

  2. 推荐——Monkey《大话 app 测试——Android、iOS 应用测试指南》

    <大话移动——Android与iOS应用测试指南> 京东可以预购啦!http://item.jd.com/11495028.html 当当网:http://product.dangdang ...

  3. Android SDK上手指南:知识测试

    Android SDK上手指南:知识测试 2014-01-22 10:00 核子可乐 译 51CTO 字号:T | T 在从零开始学习Android开发系列教程当中,我们已经了解了为Android平台 ...

  4. IPv6升级测试指南(Android/iOS/Mac)

    目录 我们升级到IPv6的原因 测试的时候的注意要点 Android/IOS/MAC测试总结 Android测试IPv6的方法 IOS端测试IPv6的方法 MAC浏览器端测试IPv6的方法 升级IPV ...

  5. 腾讯信鸽推送Android SDK快速指南

    信鸽Android SDK是一个能够提供Push服务的开发平台,提供给开发者简便.易用的API接口,方便快速接入.目前支持Android 2.2及以上版本系统.本文档将引导用户以最快的速度嵌入信鸽SD ...

  6. Android开发权威指南(第2版)新书发布

    <Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...

  7. Android开发-API指南-任务和回退栈

    Task and Back Stack 英文原文: http://developer.android.com/guide/components/tasks-and-back-stack.html 采集 ...

  8. 读书笔记--Android Gradle权威指南(下)

    前言 最近看了一本书<Android Gradle 权威指南>,收获挺多,就想着来记录一些读书笔记,方便后续查阅. 本篇内容是基于上一篇:读书笔记--Android Gradle权威指南( ...

  9. 读书笔记--Android Gradle权威指南(上)

    本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 最近看了一本书<Android Gradle 权威指南>,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所 ...

随机推荐

  1. 5. Bean Validation声明式验证四大级别:字段、属性、容器元素、类

    1024,代码改变世界.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的 ...

  2. 理解DES算法

    首先 了解对称密码加密技术:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密.但是有时候密钥不用完全相同 只要相似也可以.因为用一个密钥可 ...

  3. MySQL全面瓦解2:常用命令和系统管理

    常用命令 打开CMD命令窗口(记住使用管理员身份运行),我们就可以在命令窗口中做一些MySQL的命令操作了: 服务启动和关闭 这个我们上一个章节使用过了:net start mysql,这是服务命令, ...

  4. K8S的StorageClass实战(NFS)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. Redis事务使用方法

    Redis事务 Redis事务是一组命令的集合,也是Redis的最小执行单位之一.一个事务的所有命令,要么都执行,要么都不执行.Redis能保证事务执行期间不会有其他命令插入. 相关命令 命令 格式 ...

  6. 常用数据结构-namedtuple(命名元祖)

    namedtuple从根本上来说是一个带有数据名称的元祖.它包含元祖的所有特性,但也有一些元祖没有的额外特性.使用namedtuple可以很容易创建轻量级对象类型. namedtuple将是你的代码更 ...

  7. Python爬虫练习(多线程,进程,协程抓取网页)

    详情点我跳转 关注公众号"轻松学编程"了解更多. 一.多线程抓取网页 流程:a.设置种子url b.获取区域列表 c.循环区域列表 d.创建线程获取页面数据 e.启动线程 impo ...

  8. MarkDown排版、多样的文本框

    <战争与和平>一八一二年,俄.法两国再度交战,安德烈·保尔康斯基在战役中身受重伤,而俄军节节败退,眼见莫斯科将陷于敌人之手了.罗斯托夫将原本用来搬运家产的马车,改去运送伤兵,娜达莎方能于伤 ...

  9. XJOI 夏令营501-511NOIP训练14 砍树(2)

    小A是小B家的园丁.小B的家里有n棵树,第i棵树的横坐标为i.一天,小B交给小A一个任务,让他降低自己家中的某些树木的高度.这个任务对小A来说十分简单,因为他有一把极其锋利的斧头和一门独门砍树秘籍,能 ...

  10. Round 4

    最近再次经历动荡期 博客只在小白时期记录过 已经沉寂许久 之前的工作在黄区 加班超多  阻隔了一切与外网交流的可能 只能凭记忆补一点最近一年来积累到的知识 不管怎么样 不能放弃自己啊老铁!