Android 7.0 安装失败的两个原因
2016-12-19 17:56
1051 查看
提示安装失败,安装包不完整
原因
这是因为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 安装失败的两个原因 Failed to collect certificates from /data/app/vmd......
- Android 7.0 安装失败的两个原因
- Vivo x9 7.0以上系统 android studio真机调试安装失败的解决方案
- Android-真机应用安装失败原因
- Android7.0的静默安装失败问题研究
- Android 版本更新下载自动安装APK,并解决Android6.0,7.0安装失败的问题
- Android应用程序自动更新失败,原因是已安装了存在签名冲突的同名数据包
- Android Studio Signature Version V1 V2区别及7.0以下打包后安装失败解决方案
- qt-vsintegration安装失败原因——原是杀软惹的祸
- SQL2000安装失败原因大全
- MS Office 2007安装失败的一个典型原因
- Android 开发环境安装失败问题总结 win7下
- Vmware 6.5安装windows 7后网卡驱动失败的原因
- Android2.1以后sdk安装更新失败解决办法
- 一些会导致Bundle安装失败的原因
- 任务失败,原因是未找到“LC.exe”,或未安装正确的 Microsoft Windows SDK
- VS2008 SP1安装失败的原因
- mysql 安装到最后一步时,start service 为失败状态 请问是什么原因
- 任务失败,原因是未找到“LC.exe”,或未安装正确的 Microsoft Windows SDK。