移动测试技术问答Q&A

1. INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

由于APP签名冲突造成。如果设备上已经安装了其他签名的相同包名APP,再安装其他签名的就会报出此类错误。

解决方法:a. 更换签名文件,重新签名 b. 更改应用的包名,避免冲突。

2. INSTALL_FAILED_DEXOPT

方法数超标所导致。dx打包时限制了单个dx文件的最大方法数为65535。同时Dalvik VM限制内存中加载的方法数(方法,类定义及构造函数)不能超过65535个。

解决方法:a. 检查代码,删出无用jar包和代码,尤其是自动生成的get/set,没用的类。b. 将部分java代码封装到JNI中。

3. INSTALL_PARSE_FAILED_NO_CERTIFICATES

应用中没有签名信息。

解决方法:使用Eclipse或者Android Studio对项目重新编译打包。

4. INSTALL_FAILED_MEDIA_UNAVAILABLE

Android应用安装位置不可用。应用安装位置有两个:ROM、sdcard。如果严格指定安装到sdcard,但是设备没有sdcard时,就会报此类错误。

解决方法:AndroidManifest.xml中配置:

5. INSTALL_FAILED_OLDER_SDK

设备系统版本比应用的最低支持的系统版本低。

解决方法:AndoidManifest.xml中将系统版本降低。

6. INSTALL_FAILED_VERSION_DOWNGRADE

设备中已经安装了此APP的更高版本,无法降级安装。

解决方法:先卸载之前的版本,再安装此版本。

7. INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION

安装APP时,Android系统会对APP先进行解析。解析过程出错,就会报出此类错误,可能得原因很多。

解决方法:检查AndroidManifest.xml各项配置是否符合规范。比如sdkVersion不能用string等等。

8. INSTALL_FAILED_UID_CHANGED

应用在上次卸载时,由于应用中的native程序未被杀死而占用/data/data/{packageName}目录,导致/data/data/目录下的APP相关内容未被删除,多数情况下能在logcat中找到报错:Installer: rm -rf failed, directory is not empty。再次安装时无法覆盖,导致报出此类问题。

解决方法:如果设备Root了,则直接删除/data/data/目录下的应用包名文件夹;如果没有root,需要将手机恢复出厂设置。此外,开发者要额外注意容易出现此类问题的手机,对此类设备的用户给出提示。用户无需操心,阿里移动测试平台会帮助解决。

9. INSTALL_FAILED_NO_MATCHING_ABIS

当安装的APP包含native libraries(一般是so文件)的时候,如果没有对应机器CPU架构的库文件,就会出现这种问题。比如,你编译了一个armv7平台的APP,但是想要装在intel 架构的设备上,就会出现这个错误。

解决方法:在编译APP时,先用NDK编译出相应的CPU架构的库文件。

10. INSTALL_FAILED_CANCELLED_BY_USER

部分机型在使用adb命令安装应用时,设备会弹窗询问用户是否允许安装,假如一段时间内(一般是30s),没有点击确认弹窗,那么此类设备会阻止安装,并提示用户:INSTALL_FAILED_CANCELLED_BY_USER

解决方法:联系MQC工作人员,旺旺群:335334143;QQ群:492028798

11. INSTALL_FAILED_VERICATION_TIMEOUT

原因及解决方法同:INSTALLED_FAILED_CANCELLED_BY_USER

12. OutOfMemory问题(OOM)解决方法

每个Android应用都有一个最大内存上限。超过这个上限,就会导致内存不足(OutOfMemory)。检查内存上限的方法:
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);  
Log.d("TAG", "Max memory is " + maxMemory + "KB");  

通常情况下,出现OOM,是由于应用中加载了大量的图片导致。鉴于此,有以下几种方式来减小应用对内存的使用:

a. 合理压缩展示图片,比如一个100x100的控件里,如果加载一个1024x768的图片,不会让图片的展示效果更好,反而会增加OOM的风险。所以,合理的对图片进行压缩非常重要。

b. 压缩完图片,但是应用里包含了太多的图,这种情况依然可能出现OOM。这种情况下,考虑使用内存缓存技术。根据每一屏要展示的图片数量,以及每个图片的大小,设定一个合理的缓存值,一般情况下不要超过1/8的最大内存值。如果图片不在显示区域,可以考虑将其进行回收,系统的垃圾回收器(GC)会认为这些内存不在被使用,从而对图片进行GC操作。这样会大大降低OOM的风险。

c. 更多的OOM讨论,参见:http://blog.csdn.net/vshuang/article/details/39647167

13. iOS应用(ipa)安装失败可能的原因和解决方法

每个ipa包本质上是一个zip包,里面包含ios应用的资源和可执行文件。

a. 如果提示“应用重签名失败”,很可能的原因是ipa是直接从itunes市场下载的正式发布包,这样的包经过苹果的加密,无法安装到任何没有购买过这个应用的用户手机上面。

b. 如果部分的手机安装失败,请检查一下你的应用支持的最低ios SDK的版本(可以很直观的从包里面的Info.plist看到)。比如最低支持ios8.3,则ios8.2版本的手机就装不上这个应用。

14. 启动失败如何进行Debug?

很多同学遇到启动失败的问题,很难进行debug,不知道该如何入手。启动失败其实也可以找到错误栈信息,并且通过这个错误栈信息,定位到具体的问题原因。如下图:

这里,我们可以看到启动失败的进程pid:26981。然后,我们需要下载日志,这里的日志就是详细的logcat日志。

下载之后,我们需要通过这个PID找到真正引起crash的错误栈。这里建议,使用支持正则匹配的编辑器打开logcat日志(比如nodepad++、vim等等),打开之后,使用正则规则:“26981. E .” 进行匹配查找。可以找到如下信息:

这样我们就能知道具体那行代码导致的错误了。

15. 常见崩溃问题,NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference**

该问题一般是由于资源加载时,引用初始化未完全的Context对象导致。

解决方法:通过增加非空检查;创建View时,使用当前组件的Context(比如ActivityXXX.this),而不用getApplicationContext()等方式。

参考资料:http://stackoverflow.com/questions/28248232/what-am-i-doing-wrong-with-my-handling-of-contex-java-android
参考资料:http://stackoverflow.com/questions/25488208/java-nullpointerexception-getting-resources

阿里云测移动质量中心(以下简称MQC)是为广大企业客户和移动开发者提供真机测试服务的云平台,拥有大量热门机型,提供7x24全天候服务。

我们致力于提供专业、稳定、全面、高价值的自动化测试能力,以及简单易用的使用流程、贴心的技术服务,并且帮助客户以最低的成本、最高的效率发现APP中的各类隐患(APP崩溃、各类兼容性问题、功能性问题、性能问题等),减少用户流失,提高APP质量和市场竞争力。

联系我们:
 网站地址:https://mqc.aliyun.com
 开发者交流旺旺群:335334143
 开发者交流QQ群:492028798
 客服邮箱:mqc_group@service.alibaba.com;
更多精彩技术分享 欢迎关注 MQC公众号

时间: 2024-12-02 02:07:32

移动测试技术问答Q&A的相关文章

2016软件测试的新趋势 -《测试技术五月刊》

一份测试技术的月刊,了解测试领域的前沿变革,探讨测试的多彩人生. 业界前沿 2016软件测试的新趋势 2015 年11月,ThoughtWorks发布了新一期的 技术雷达 .这期雷达的技术趋势主要体现在:受到热捧的 微服务 相关技术,逐步成熟的以 Docker 为典型的容器化生态系统,备受企业和用户关注的信息安全问题.本文就从这几个新趋势来分析一下给软件测试带来了哪些影响. Google 开源IOS 应用UI 自动化测试工具之EarlGrey 开发者轻松地构建和运行"面向iOS apps源码&q

2016及以后的自动化测试趋势 -《测试技术六月刊》

业界前沿 2016及以后的自动化测试趋势 测试自动化的博客joecolantonio.comtesttalks主持者和创始人,Joe Colantonio带来了15年的自动化测试经验,他分享了他的专业知识和预测如何从2016自动化测试的魅力中获取成功.Joe预测: 未来将是Dev + Test + Ops的模式:我们正朝着行为驱动开发(BDD)的模式发展:2020,Selenium WebDriver将成为功能测试执行标准等等.查看视频 浅谈Docker在测试领域的应用 Docker是PaaS供

炒鸡棒的模糊测试技术

本文讲的是炒鸡棒的模糊测试技术,安全软件的重点是能使系统更加安全.在开发软件时,绝对不想引入新的故障点,或者增加软件运行系统的攻击面.所以我们自然会认真对待安全的编码实践和软件质量.在这篇文章中,我们想解释一下我们在内部使用的用来发现漏洞和缺陷的模糊测试技术,以便在这些漏洞发生在客户那里以及我们亲爱的bug赏金猎人之前找到它们. 一种已经被漏洞赏金猎人证明是非常有效的发现软件安全漏洞的一种称为fuzzing的技术,这种技术需要在目标程序中注入意外或畸形的数据,以便导致输入错误处理,例如可利用的内

100%移植阿里云移动测试技术,竟仅需1周?! ——移动测试专有云(1)

移动设备大量涌现,终端类型浩如烟海,任何一款设备的兼容性问题都将导致大量用户流失! 移动终端的配置千差万别,碎片化严重又导致APP的全机型适配成本巨大且异常困难! 不仅如此,有一些企业和开发者还面临着以下问题: 安全生产要求 测试数据严禁外泄,使用公有云平台存在数据泄露风险.某些测试包依赖本地网络 . 缺少自动化测试技术经验 搭建一套自动化测试平台成本巨大,对自动化测试的技术深度要求高. 缺少移动机房搭建经验 移动机房不像传统机房,对机房环境有着更加苛刻的要求,运维难度大. 测试终端管理混乱,资

php技术问答,希望大家多多帮忙

问题描述 php技术问答,希望大家多多帮忙 sql 语句能直接插入 单号为9974414750001到9974414850000十万条数据吗 解决方案 可以插入.写sql语句格式是 insert into table (column1,column2) values(value1,value2),(value1,value2)...效率最高 得修改下配置,不然显示你的sql语句过长 解决方案二: sql 应该没有这个功能吧,只有通过循环慢慢来 解决方案三: PHP 一些小技术

javascrpit-想问下各位CSDN技术问答,点击我要提问的这么个效果是怎么实现的?

问题描述 想问下各位CSDN技术问答,点击我要提问的这么个效果是怎么实现的? 因为想要实现一个类似的效果:弹出一个对话框,可以输入多个信息.百度一大堆结果都说alert跟prompt,有点蛋疼 解决方案 那用jquery ui 吧 解决方案二: 用ajax调用接口,联想

EXFO收购Absolute Analysis公司的光射频测试技术

加拿大魁北克市,2016年10月31日-EXFO Inc.(NASDAQ:EXFO;TSX:EXF)是通信服务提供商(CSP)信赖的测试自动化和实时3D分析解决方案合作伙伴,宣布收购了Absolute Analysis公司的大部分资产,包括其在基于光纤的无线接入网(RAN)射频(RF)测试领域的技术和解决方案. 推动此次收购的因素是EXFO致力于为移动网运营商(MNO)提供市场领先的解决方案,帮助他们部署下一代.基于光纤的前传网和RAN架构.在用户体验质量成为改变盈利能力游戏规则的市场中,更快地

由Java设计模式想到测试技术

导读:作者怪怪写了一篇<由Java设计模式想到测试技术>文章,他认为一个合格的测试架构师要完全的理解测试技术.要能实时的掌握新的测试技术并应用于团队.要能抽象并创新出新的能应用于本身团队的测试技术.以下是文章内容: 最近一直在看Junit源码,也看了很多Junit的源代码分析,看到里面都提到了Java设计模式,什么Command模式,Observer模式,Composite模式等等.以前就知道有Java设计模式,这次通过看Junit源码发现这个设计模式真的是非常的有用,而且对于代码设计和架构设

首期京东技术沙龙聚焦《互联网测试技术与实践》

8月8日,在京东技术分享日之外,秉着信任.分享.学习.成长的态度,首期<互联网测试技术与实践>京东技术沙龙也正式启动.除了京东的技术专家外,还有百度.阿里的技术大拿参与分享,大家针对不同的测试项目进行解说. 阿里巴巴测试专家闺蜜在几家互联网巨头公司中都有任职经历,本次他分享的是和浏览器相关的测试.了解浏览器测试首先需要了解浏览器的组成结构,同时分别对比了IE.Chrome.Firefox.Safari等不同浏览器之间的区别,而根据不同浏览器在渲染引擎和线程上的差别,在测试上也有不同的方法. 阿