使用UIAutomator在Android6.0执行,无法向手机SD卡写入内容问题的解决
来源:互联网 发布:网络水军怎么做 编辑:程序博客网 时间:2024/05/16 02:14
最近发现使用UIAutomator 2.0 写的测试脚本,在Android 6.0 以上手机上执行的时候会有权限问题。例如想在SD卡上创建一个文件来存储测试过程中产生的中间数据,这时6.0的android系统就会提示读写权限的问题。当然如果想读取手机内部信息也同样会面临着这样权限的提示。同类的问题解决方法如下。
1. 如果uiautomator脚本是写在被测试App源代码代码的test目录中,那么我们就直接把所需要的权限加到被测试App的AndroidManifest.xml文件中即可。
2. 往往我们的测试都是黑盒的,并不会把测试脚本与被测试App写在一起,这时使用AS开发的时候源代码里面就不会包含AndroidManifest.xml这个问题,那么我们需要在工程的main目录下创建一个这样的文件
我们创建的这个AndroidManifest.xml文件内容只需要写上我们想要申请的权限即可
在AndroidManifest.xml中加完了权限后,还需要做如下操作才能真正的解决这个问题。
uiautomator虽然单独做为一个工程,但是当我们查看测试代码工程编译的结果会发现实际上是两个apk文件
这两个apk一个是包含了我们测试脚本的测试apk,另一个apk就是包含了我们刚刚添加了各种权限打包而成的,通过命令将这个apk手动安装到手机里面,这里关键是要加上-g这个参数的意义是授予应用程序清单中列出的所有权限(仅限Android 6.0)。这样我们再执行测试脚本就不会出现前面提到的权限问题了。
3. 简单说一下我理解的这么做的原理
使用uiautomator1.0的时候我们没有遇到这样的问题(使用Eclipse开发环境)。uiautomator1.0的脚本最后是打包成为了一个可执行的jar文件,我理解这个jar文件凌驾于apk之上,所以可以操作其他apk的任何界面。不过到6.0之后的版本是不是会有权限问题,这个还没有经过验证
当切换成了Android Studio编译环境,相应的runner也进化配置成为了“AndroidJUnitRunner”,这是我们发现打包后的uiautomator不再是原来的jar而是变成了一个testapk。刚刚提到打包文件夹里面有两个apk,一个是我们的testapk,一个是源程序apk,如果我们不是把测试脚本放在源代码中那么就是个是空的apk,这个空的apk就是测试apk依托的一个假的工程文件。我们把权限写在AndroidManifest.xml 里面就是通过这个依托的apk来简介获得到权限
- 使用UIAutomator在Android6.0执行,无法向手机SD卡写入内容问题的解决
- Android6.0无法写入sd的问题
- 解决android6.0系统无法读写SD的问题
- android6.0的写入SD卡的权限申请
- Android6.0 无法在SD卡创建目录
- Android SD卡创建文件夹/文件 SD卡写入内容 SD卡删除文件 计算SD卡文件大小,Android6.0+权限
- Android6.0 在外置SD卡 读写问题.....
- 解决小米手机的SD卡显示为空,或者文件系统无法识别的问题
- Android sd卡路径获取(解决Android6.0 sd卡名称混乱问题)
- Android手机SD卡创建文件并写入内容
- android 开发中通过JNI无法向SD卡写入文件的解决办法
- android 开发中通过JNI无法向SD卡写入文件的解决办法
- 解决刷入4.4.2之后外置SD卡 无法写入问题
- 向SD卡写入数据
- PopupWindow在android6.0无法弹出问题
- 解决32G或64G的SD卡无法使用NOOBS安装树莓派的问题
- Android 中关于微信分享功能 Android6.0手机SD卡的读写操作。
- android OutputStream向sd卡中文件写入操作立即关机数据清0问题
- WebStorm 2016 高级开发工具
- python可变参数详解
- 二、shell
- ThinkPHP 文件上传到阿里云OSS上
- python3.6 爬虫例子
- 使用UIAutomator在Android6.0执行,无法向手机SD卡写入内容问题的解决
- tomcat支持中文路径
- Ubuntu下cassandra安装配置
- jquery-file-upload限制文件上传大小和文件个数
- 新时代下员工与公司的关系之我见
- Git Flow常用的分支
- c语言 指针
- asd
- 数据分析要用到的