应用在华为P9手机上安装失败原因分析 (错误码:-110)
来源:互联网 发布:java 加密 编辑:程序博客网 时间:2024/04/28 20:34
问题描述:
应用在之前的华为手机上都能正常安装,但是在华为P9手机上安装失败,提示错误为:
失败原因:
系统问题导致安装失败(错误码:-110)
原因分析:
- 开始怀疑是android的版本问题,后来看了一下在华为Mate8上面也能正常安装,华为Mate8和华为P9都是android6.0
- 华为P9 用的是 EMUI 4.1版本,但是华为Mate8用的是EMUI4.0, 初步怀疑是EMUI升级后的问题
- 打开Logcat,抓取Log后,查看到下面可疑的Log
05-14 19:51:04.094: E/HwCertificationManager(1004): read cert error:read certification file error!
05-14 19:51:04.094: E/HwCertificationManager(1004): read cert failed
05-14 19:51:04.094: E/HwCertificationManager(1004): checkHwCertification parse error
05-14 19:51:04.095: E/installd(534): Couldn't opendir /data/data/com.shb.assistant: No such file or directory
05-14 19:51:04.096: W/PackageManager(1004): Package couldn't be installed in /data/app/com.shb.assistant-1
05-14 19:51:04.096: W/PackageManager(1004): com.android.server.pm.PackageManagerException: hwcertification parse error
05-14 19:51:04.096: W/PackageManager(1004): at com.android.server.pm.HwPackageManagerService.checkCertificationInner(HwPackageManagerService.java:3042)
05-14 19:51:04.096: W/PackageManager(1004): at com.android.server.pm.HwPackageManagerService.checkHwCertification(HwPackageManagerService.java:3024)
05-14 19:51:04.096: W/PackageManager(1004): at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:6941)
05-14 19:51:04.096: W/PackageManager(1004): at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:6930)
05-14 19:51:04.096: W/PackageManager(1004): at com.android.server.pm.PackageManagerService.installNewPackageLI(PackageManagerService.java:12494)
05-14 19:51:04.096: W/PackageManager(1004): at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:13215)
05-14 19:51:04.096: W/PackageManager(1004): at com.android.server.pm.PackageManagerService.-wrap29(PackageManagerService.java)
05-14 19:51:04.096: W/PackageManager(1004): at com.android.server.pm.PackageManagerService$10.run(PackageManagerService.java:10799)
05-14 19:51:04.096: W/PackageManager(1004): at android.os.Handler.handleCallback(Handler.java:743)
05-14 19:51:04.096: W/PackageManager(1004): at android.os.Handler.dispatchMessage(Handler.java:95)
05-14 19:51:04.096: W/PackageManager(1004): at android.os.Looper.loop(Looper.java:150)
05-14 19:51:04.096: W/PackageManager(1004): at android.os.HandlerThread.run(HandlerThread.java:61)
05-14 19:51:04.096: W/PackageManager(1004): at com.android.server.ServiceThread.run(ServiceThread.java:46)
05-14 19:51:04.115: I/art(1004): Starting a blocking GC Explicit
分析应该是安装软件的时候,进行了证书的检查,发现软件不符合条件,导致不能安装。
翻看一下源代码:scanPackageLI 这个应该是对APK里的文件进行解析,但是华为肯定是修改了這个函数,添加了一个checkHwCertification的过程。
checkHwCertification里面应该是检查了华为特有的东西。
- 打开代码 在AndroidManifest.xml 找找有有没有什么华为比较在乎需要检查的东西,,一看果然发现了下个。
<!--华为角标-->
<uses-permissionandroid:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<uses-permissionandroid:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<uses-permissionandroid:name="com.huawei.permission.sec.MDM"/>
- 把这两个权限一删除,软件就可以正常安装了。
- 打开华为的官方文档,找到下面一段说明:
2.3 将华为证书打包到开发者应用中
使用上面提到的“DevPack.exe”工具,将刚刚下载的华为证书打包到开发者 APK 中:
到這里原因以及很明白了,就是开发这没有把证书加入到APK里面,导致安装的检查证书不通过。安装失败。
但是华为也很不地道,之前都没有这个过程,到P9上忽然加上这个限制,没有任何说明,直接就是软件安装失败。让广大开发者情何以堪。做android应用开发的小伙伴真是不容易,要应付形形色色的奇葩兼容性问题。
解决方案:
- 去掉角标功能,一般的应用是无法通过华为的审核的。在 AndroidManifest.xml删除下面的权限申明:
<!--华为角标-->
<uses-permissionandroid:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<uses-permissionandroid:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<uses-permissionandroid:name="com.huawei.permission.sec.MDM"/>
- 把华为的证书打包到应用里面。
2 0
- 应用在华为P9手机上安装失败原因分析 (错误码:-110)
- 小米手机安装失败错误码
- 华为P9手机的品质还需工匠精神
- 华为p9如何恢复手机删除的照片
- 华为p9手机恢复出厂设置了如何找回
- 在小米手机上安装apk文件失败
- android程序在华为3c手机上运行,暗屏后就不运行了的原因
- adb安装应用失败,错误码
- AndroidStudio应用安装不到小米手机上错误记录
- 如何在Android手机上安装两个相同的应用
- iOS 应用安装失败原因排查
- iOS 应用安装失败原因排查
- Android-真机应用安装失败原因
- android4.0以上,利用耳机接听键实现自动接听,部分手机失败原因+解决方法(比如华为P7)
- 锤子手机失败的原因:错误的定位
- adb shell [你的命令]在设备上执行成功,在pc上调用却失败原因分析
- adb应用安装失败分析
- 解决小米手机出现INSTALL_FAILED_UID_CHANGE错误,安装应用失败的问题
- 36个Android开发常用代码片段
- C++ Primer之泛型算法lambda笔记
- 归并排序-自顶向下/自底向上
- VS2010 ENTITY FRAMEWORK6 ORACLE11G 安装搭建环境
- java中Executor、ExecutorService、ThreadPoolExecutor介绍
- 应用在华为P9手机上安装失败原因分析 (错误码:-110)
- AutoCompleteTextView控件的使用
- iOS图形绘制CoreGraphics篇
- 信息管理系统.0
- iOS开发——响应链(Responder Chain)的深入理解和代码示例
- Java单例设计模式(三)
- JAVA-单例模式-你真的会用吗?
- Android中的JSON总结
- try!