文章目录

  • 背景描述
  • 解决过程
  • 总结
    • uses-feature
    • uses-library
    • uses-permission
背景描述

该问题起因是,在Google Play Store商店下载了安兔兔评测应用,在进行3D测试时,提示需要下载安兔兔3D评测应用,点击跳转到谷歌商店,商店提示“您的设备与此版本不兼容”

解决过程
  1. 在终端使用aapt dump badging antutu_3D.apk >antutu_3D.txt命令抓取应用依赖:
    注意关键字"uses-gl-es: ‘0x30001’ ",该信息说明该应用依赖于OpenGL ES 3.0

  2. 同样连接上设备,在终端使用adb shell pm list features查看设备feature支持情况:

    注意关键字"feature:reqGlEsVersion=0x20000",该信息说明设备目前的OpenGL ES版本为2.0

走到这里,问题的根因已浮出水面:
造成此问题的原因为Google Play在下载应用时会检测设备的feature的匹配情况。应用所支持的OpenGL ES版本高于设备所支持的OpenGL ES版本,兼容性导致的问题

总结

Google Play Store会根据应用的uses-feature、uses-library、uses-permission等进行匹配,以查看设备是否支持下载apk。

uses-feature

uses-feature配置用来声明一个app在运行时所依赖的外部的硬件或软件特征(feature),有三个属性:
android:name
可以通过adb shell pm list features来查看系统所有支持的的uses-feature。其中硬件特征的名字以android.hardware.为前缀,软件特征的名字以android.software.为前缀。

android:required
android:required属性表示这项feature是否是必须的,它的值只能是true或者false。
如果设置为true表示这项feature是必须的,如果没有,应用将无法工作。
如果设置为false,表示应用需要这项feature,但如果没有,可能会影响部分功能,但应用还是能够正常工作的。
如果没有指定这项属性,则默认为true,即表示此feature是必须的。

android:glEsVersion
此项属性表示app所依赖的OpenGL ES的版本,它的值是一个整数,高16位表示OpenGL ES的大版本,低16位表示OpenGL ES的小版本。例如 OpenGL ES 3.2版本对应的整数值为0x00030002。
通常在AndroidManifest中应该只有一个android:glEsVersion配置,如果配置了多个,则只有版本号最大的那一个会生效,其他配置会被忽略。如果在AndroidManifest中没有配置android:glEsVersion,则表示可以支持到OpenGL ES 1.0,也就是所有的Android系统都支持。

结论:若uses-feature中android:required属性是true,但系统中不支持该uses-feature,则下载会显示不兼容;为false则没有影响

uses-library

这个元素用于指定该应用程序必须使用的共享类库。这个元素告诉系统该应用程序包的类装载器中所包含的类库代码。

属性:
android:name
这个属性用于指定类库的名称。这个名称是在对应的类库文档中提供的。可以通过adb shell pm list libraries来打印当前设备所支持的所有库存

android:required
android:required属性表示这项library是否是必须的,它的值只能是true或者false。
如果设置为true表示这项library是必须的,如果没有,系统不允许该应用程序安装在这个设备上。
如果设置为false,表示应用需要这项feature,但如果没有,可能会影响部分功能,但应用还是能够正常工作的。
如果没有指定这项属性,则默认为true,即表示系统不允许该应用程序安装在这个设备上。

结论:若uses-library中android:required属性是true,但系统中不支持该uses-library,则下载会显示不兼容或者不能安装到系统中;为false则没有影响

uses-permission

部分机器可能不支持应用所需要的权限,如不能拨打电话的机器,但是给了CALL_PHONE权限,然后在google play store中下载,就会提示不兼容。玄机就在这最后的表格里面,你需要做的就是如果你的uses-permission中用到了任何的一个表格中 This Permission…中的权限就要相应的加入uses-feature标签,并且指定name就是 Implies This Feature Requirement 中的相应值,并加入android:required=”false”。这句话的意思就是没有这个权限也可以。

结论:若uses-permission中有需要系统不支持的权限,则下载会显示不兼容

Google商店中下载安兔兔评测,后下载3D资源插件,提示“您的设备与此版本不兼容”相关推荐

  1. linux即时通讯软件下载,安信通linux版下载

    安信通linux版支持对实时加密所有数据,定时销毁清空记录,并且截屏还会立即通知,防止信息泄漏.该软件支持linux.Windows以及mac等平台, 本站提供的是该软件的linux版本,需要的朋友快 ...

  2. Google Play 新功能 | 让您的应用在 Play 商店中闪耀

    作者 / Allison Chang (Google Play 产品经理).Weifang Sun (ChromeOS 产品经理).Manuel Wang (Google Play 管理中心产品经理) ...

  3. R语言修改下载安装包install.package的默认存储位置

    这次遇到的问题是:R语言下载安装包时会先将下载下来的二进制zip文件保存在本地,然后将其解压安装到R的library文件夹下.包被下载后会默认将二进制zip文件保存在本地C盘的临时会话的downloa ...

  4. 关于url网上下载安装包(java)

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...

  5. MAC下安装ElasticSearch(官网下载安装包)

    1.基础环境准备 Elasticsearch 依赖于JDK, 并且JDK 版本1.8+ 检验jdk  命令 : java -version 2.下载安装包 去官网下载https://www.elast ...

  6. 手持PDA连接无线网络后下载安装程序

    前几天研究了一个PDA winCE5.0的操作系统,最麻烦的就是连网,显示用猎豹浏览器开了一个wifi然后是让印度那边的IT给我的电脑的IP添加了访问权限,连上网后直接下载软件然后依次安装程序. PD ...

  7. Maven在pom文件中添加资源插件后,src/main/resource目录中的文件编译后不拷贝解决方法。

    在pom文件中添加以下资源插件后 <!--添加的资源插件--> <build><resources><resource><directory> ...

  8. 安安兔html5测试,安兔兔评测AnTuTu Benchmark v8.1.5

    安兔兔评测AnTuTu Benchmark v8.1.5是一款可以手机评测的软件.在安兔兔评测软件中,用户的手机可以进行一系列的检测,其中包括:手机性能.硬件,获得性能分值,安兔兔评测软件检测手机是很 ...

  9. linux 性能测试 antutu,安兔兔评测Linux版正式上线 Windows版蓄势待发

    原标题:安兔兔评测Linux版正式上线 Windows版蓄势待发 安兔兔评测Linux版正式上线 Windows版蓄势待发 继Android版和iOS版之后,安兔兔评测Linux版今天正式发布. 需要 ...

最新文章

  1. 学计算机哪家强?清华竟是2018全球第1!(附排名)
  2. EF使用Fluent API配置映射关系
  3. 第三次作业:阅读《构建之法》1-5章有感
  4. mysql修改数据库历史_MySQL之操作数据库
  5. python里order_volume_Python 基础知识:Method Resolution Order (MRO) 和 super
  6. Angualr 输入文本框监听enter回车键和esc键方法使用(附常用的键盘事件对应的键码)
  7. 镭神激光雷达对于Autoware的适配
  8. css3的一些知识点
  9. 《2019年中国互联网网络安全报告》发布,恶意程序攻击半数来自美国
  10. matlab取值只能为整数,运行时提示Size 输入必须为整数
  11. 欢乐喜剧人之个人见解
  12. 全中国的海鲜主要有这四个省份扛着。。
  13. 用Django编写邮箱注册以及验证码
  14. vue的html自动刷新,vue项目刷新当前页面的方法
  15. SQLServer 查询表的列名称、说明、备注、类型等
  16. memcached 注册服务器,Memcached深入剖析(一)—Memcached服务器安装
  17. 【PS】Adobe Photoshop 2020中扣名字
  18. C语言输入不定长度的数组,不输入数组长度
  19. 临港新片区人才住房政策办事指南
  20. 全年GMV突破40亿元关口,为何如涵仍难造出第二个“张大奕”?

热门文章

  1. java闪光的星星_基于JavaScript实现飘落星星特效
  2. 这朵玫瑰叫Jenny
  3. Android工具修复属性,Broken Android Data Extraction(安卓数据修复工具) V3.0.20 官方版
  4. solar在linux系统下的部署过程
  5. JavaScript中关于call函数的一道面试题
  6. WPF翻盘连连看(二)
  7. stm32【GT30L32S4W字库芯片】
  8. python学习笔记3(字符串)
  9. Java 实现OCR 识别图像文字(手写中文)----tess4j
  10. linux bootrom ftp,AR路由器通过BootROM FTP方式升级系统文件的示例