Android 7.0 安装失败的两个原因 Failed to collect certificates from /data/app/vmd......
2017-04-06 12:09
471 查看
提示安装失败,安装包不完整
原因
这是因为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); }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
具体参考文章:下载安装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 Studio Run时,APP安装失败--Installation failed with message Failed to establish session.
- Android 7.0 安装失败的两个原因
- Android 7.0 安装失败的两个原因
- Android 7.0 安装失败的两个原因
- Android Tutorial: How To Post Data From An Android App To a Website
- attempt to open datawindow failed@安装两个PB软件
- android 安装app 出现 pkg: /data/local/tmp/com.ksd.carcloud Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE
- Android SDK 安装(升级)失败(A folder failed to be renamed or moved)的解决方法
- Android 系列:安装Android SDK出现Failed to fetch URL http://dl
- CentOS6.0安装xen-tools失败:Fatal error: Failed to determine Linux distribution and version
- Memcache 安装 启动失败的问题:failed to start service
- 通过mk文件编译android4.0.3系统app源码后覆盖安装失败解决办法(android odex文件)
- android Failed to install *.apk on device 'emulator-5554' timeout 或者 the user data image is used解决办法
- 服务器端安装ASP.NET运行环境错误Failed to execute request because the App-Domain could not be created. Error: 0x80131902
- Eclipse安装失败“eclipse failed to create the java virtual machine”解决办法
- VM安装失败 提示:“Failed to create the requested registry key Key:installer Error:1021"
- nexus资源库在安装完毕,启动时有时会出现:The nexus-webapp service was launched, but failed to start."错误
- android sdk更新失败Failed to create directory C:\ Program Files\Android\android-sdk\temp
- VM安装失败 “Failed to create the requested registry key Key:installer Error:1021"
- VM安装失败 “Failed to create the requested registry key Key:installer Error:1021"