情景:Android App在Google App Store上架成功,三星手机可以在Google App Store中搜索到,但是三星tablet却无法在Google App Store中搜索到,目标用户在韩国,手中也没有测试的Tablet,怎么办?
问题产生的原因:
Google Play存在过滤功能,在某些情况下,您通过<uses-permission>请求的权限可影响Google Play如何过滤您的应用。举个例子,您通过<uses-permission>请求了打电话的权限,而这款设备不具备通话的硬件,那这个设备在Google Play中就无法搜索到你的App。Android官方文档对这个有详细介绍:
解决办法:
添加一条<uses-permission>,同时添加一条<uses-feature>与之对应,并在<uses-feature>中设置android:requires="false"。
<manifest ...>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
...
</manifest>
如果只想解决上面的问题,可以到此结束了,下面的内容是记录<uses-permission>和<uses-feature>的2个知识点。
知识点介绍:
<uses-permission>
语法:
<uses-permission android:name="string"
android:maxSdkVersion="integer" />
<uses-permission>中只有name和maxSdkVersion这2个属性。<uses-permission>请求的权限可能会影响Google Play如何过滤你的应用。如果你不想Google Play根据<uses-permission>过滤你的应用,请将<uses-feature>和<uses-permission>配合使用。
<uses-feature>
语法:
<uses-feature
android:name="string"
android:required=["true" | "false"]
android:glEsVersion="integer" />
属性
android:name
以描述符字符串形式指定应用使用的单一硬件或软件功能。 硬件功能和软件功能部分列出了有效的属性值。 这些属性值区分大小写。
android:required
表示应用是否需要 android:name 中所指定功能的布尔值。
当您为某项功能声明 android:required="true" 时,即是规定当设备不具有该指定功能时,应用无法正常工作,或设计为无法正常工作。
当您为某项功能声明 android:required="false" 时,则意味着如果设备具有该功能,应用会在必要时优先使用该功能,但应用设计为不使用该指定功能也可正常工作。
如果未予声明,android:required 的默认值为 "true"。
android:glEsVersion
应用需要的 OpenGL ES 版本。高 16 位表示主版本号,低 16 位表示次版本号。 例如,要指定 OpenGL ES 2.0 版,您需要将其值设置为“0x00020000”;要指定 OpenGL ES 3.2,则需将其值设置为“0x00030002”。
应用应在其清单中至多指定一个 android:glEsVersion。 如果指定不止一个,将使用数值最高的 android:glEsVersion,任何其他值都会被忽略。
如果应用不指定 android:glEsVersion 属性,则系统假定应用只需要 OpenGL ES 1.0,即所有 Android 设备都支持的版本。
应用可以假定,如果平台支持给定 OpenGL ES 版本,也同样支持所有数值更低的 OpenGL ES 版本。 因此,同时需要 OpenGL ES 1.0 和 OpenGL ES 2.0 的应用必须指定它需要 OpenGL ES 2.0。
能够使用几种 OpenGL ES 版本中任一版本的应用只应指定它需要的数值最低的 OpenGL ES 版本。 (它可以在运行时检查是否有更高版本的 OpenGL ES 可用)。
如需了解有关如何使用 OpenGL ES(包括如何在运行时检查支持的 OpenGL ES 版本)的详细信息,请参阅 OpenGL ES API 指南。
隐式<uses-permission>和<uses-feature>对应表:
参考链接:
https://developer.android.com/guide/topics/manifest/uses-permission-element.html
https://developer.android.com/guide/topics/manifest/uses-feature-element.html#sw-features