一、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. 【Azure Developer】使用.Net Core解析JSON的笔记

    在C#中解析JSON的一些历史代码记录,分别记录针对各种情况的解析方式. DLL的引用 using Newtonsoft.Json; using Newtonsoft.Json.Linq; 需要使用的 ...

  2. 一个基于canvas的移动端图片编辑器

    欢迎使用 canvas_mobile_drag 项目地址:https://github.com/xiaosu95/canvas_mobile_drag 点击查看demo(在移动端上查看) 该插件是一款 ...

  3. DRF (学习第一部)

    目录 Web应用模式 API接口 RESTful API 规范 序列化 Django Rest_Framework 环境安装预与配置 序列化器 -Serializer Web应用模式 在开发web应用 ...

  4. day75:luffy:路飞学城项目后端环境搭建&Git相关知识点

    目录 1.Xadmin 1.Xadmin介绍 2.Xadmin安装 3.Xadmin的使用 2.项目环境搭建 1.外部依赖 2.依赖包安装 3.搭建项目 3.Git 4.日志配置 5.异常处理 6.创 ...

  5. D. Road to Post Office 解析(思維)

    Codeforce 702 D. Road to Post Office 解析(思維) 今天我們來看看CF702D 題目連結 題目 略,請直接看原題. 前言 原本想說會不會也是要列式子解或者二分搜,沒 ...

  6. 回顾C#各版本特性

    C# 6.0 Read-only auto-properties(只读自动属性) 以前版本,声明只读属性时,示例: public string FirstName { get; private set ...

  7. git 上传代码报错eslint --fix found some errors. Please fix them and try committing again.

    在提交时用下面这句 git commit --no-verify -m "提交时的注释"

  8. 851. Loud and Rich —— weekly contest 87

    851. Loud and Rich 题目链接:https://leetcode.com/problems/loud-and-rich/description/ 思路:有向图DFS,记录最小的quie ...

  9. C++ 基础 5:多态

    1 什么是多态 多态按字面的意思就是多种形态.当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态. C++ 多态意味着由继承而产生的相关的不同的类,调用重写函数时,会根据实际的对象类型来执 ...

  10. ClassNotFoundException: java.util.ArrayList$SubList 错误

    ClassNotFoundException: java.util.ArrayList$SubListjava.lang.RuntimeException: java.lang.ClassNotFou ...