Android 7.0 安装失败的两个原因
来源:互联网 发布:无线网本地网络设置 编辑:程序博客网 时间:2024/05/21 17:40
提示安装失败,安装包不完整
原因
这是因为Android7.0作用域目录访问
在 Android 7.0 中,应用可以使用新的 API 请求访问特定的外部存储目录,包括可移动媒体上的目录,如 SD 卡。新 API 大大简化了应用访问标准外部存储目录的方式,如 Pictures 目录。应用(如照片应用)可以使用这些 API(而不是使用 READ_EXTERNAL_STORAGE),其授予所有存储目录的访问权限或存储访问框架,从而让用户可以导航到目录。
此外,新的 API 简化了用户向应用授予外部存储访问权限的步骤。当您使用新的 API 时,系统使用一个简单的权限 UI,其清楚地详细介绍应用正在请求访问的目录。
具体查看官方文档:developer.android.google.cn
现象
app内升级会失败,因为下载完apk包之后,发intent安装时,没有读取包所在目录的权限,而导致读取失败,安装失败。
解决方式
/** * 通过隐式意图调用系统安装程序安装APK */ public static void install(Context context) { File file = new File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) , "myApp.apk"); Intent intent = new Intent(Intent.ACTION_VIEW); // 由于没有在Activity环境下启动Activity,设置下面的标签 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if(Build.VERSION.SDK_INT>=24) { //判读版本是否在7.0以上 //参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致 参数3 共享的文件 Uri apkUri = FileProvider.getUriForFile(context, "com.a520wcf.chapter11.fileprovider", file); //添加这一句表示对目标应用临时授权该Uri所代表的文件 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setDataAndType(apkUri, "application/vnd.android.package-archive"); }else{ intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); } context.startActivity(intent); }
具体参考文章:下载安装APK(兼容Android7.0)
提示安装找不到安装证书
原因
Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。在默认情况下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 会使用 APK Signature Scheme v2 和传统签名方案来签署您的应用。
虽然我们建议您对您的应用采用 APK Signature Scheme v2,但这项新方案并非强制性的。如果您的应用在使用 APK Signature Scheme v2 时不能正确开发,您可以停用这项新方案。禁用过程会导致 Android Studio 2.2 和 Android Plugin for Gradle 2.2 仅使用传统签名方案来签署您的应用。要仅用传统方案签署,打开模块级 build.gradle 文件,然后将行 v2SigningEnabled false 添加到您的版本签名配置中:
具体查看官方文档:developer.android.google
现象
美团多渠道打包工具就因为这个问题导致安装失败
解决方法
android { ... defaultConfig { ... } signingConfigs { release { storeFile file("myreleasekey.keystore") storePassword "password" keyAlias "MyReleaseKey" keyPassword "password" v2SigningEnabled false } } }
- Android 7.0 安装失败的两个原因
- Android 7.0 安装失败的两个原因
- Android 7.0 安装失败的两个原因 Failed to collect certificates from /data/app/vmd......
- vs2008安装失败的原因
- Android-真机应用安装失败原因
- 安装MYSQL失败的原因和解决方法
- 安装Visual studio 2008失败的原因
- APK安装失败的原因之一
- VS2008更新程序安装失败的原因
- Windows7 安装VS2010失败的原因
- eclipse安装MAT失败的原因
- .net framework 3.5安装失败的原因
- 安装window7可能会失败的原因
- Fedora 安装vim失败的原因
- 关于Ubuntu安装软件失败的原因
- mini2440烧卡失败的两个原因总结
- VS2008安装失败原因!
- SQL2000安装失败原因
- 【小QのSpringBoot-翻译】Spring Boot官方参考指南-第三部分 使用Spring Boot
- 《亿级流量网站架构核心技术》目录一览
- linux高性能服务器编程之EPOLLONESHOT事件
- android.os.FileUriExposedException 解决方法
- react native 这样理解运行机制
- Android 7.0 安装失败的两个原因
- Android中从一个Activity跳转到另一个Activity经历的生命周期?
- 写一个垃圾桶开关盖子的动画其实很简单
- 第二章 Spring MVC入门 —— 跟开涛学SpringMVC
- 正向代理和反向代理
- JavaEE-Servlet
- mybatis-error
- js大全(比较全版本)
- 如何配置springboot (2)-如何打jar包 ---彻骨寒风的博客