我遇到了同样的问题,我的应用在手机的应用商店中可以找到,但是在平板上搜索时无法看到它。对我来说,解决方法是:我没有明确声明任何使用功能 - 我只是添加了 <uses-permission>
并希望一切顺利。结果发现,<uses-permission>
隐含地添加了相机“自动对焦”的功能要求,而我并不关心这个功能... 而且我的平板电脑不支持它。
这让我需要添加一个显式的 "uses-feature" 来关闭相机需求:
更重要的是,SDK 自带这个命令:
/sdk/build-tools/android-4.3/aapt
你可以像这样调用此命令,以获取 Play 商店对 .apk 的过滤规则
./aapt dump badging [my.apk]
然后,你需要去设备的应用商店安装类似 Android 系统信息这样的应用,并查看设备的“功能”。如果你的 .apk 声明了某项未列出在设备清单中的功能,那就是你的问题所在。
通常有两种权限会给我们带来问题:
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
uses-feature 具有比用户权限更高的“权限级别”,因此可以使用 required false 的 hardware.telephone,这意味着非手机设备也可以安装该应用程序。
对于 camera.autofocus,其为请求,但它不会阻止设备安装应用程序(required = false)
请记住,如果在非手机设备上启动通话意图,则会崩溃,必须针对这些函数使用 try catch。
android:required="false"
呢? - Ruchir Baronia检查您的清单文件是否包含支持屏幕所有屏幕值为true的内容,如下所示的代码:
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
/>
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" android:resizeable="true" />
- speedrockandroid:resizeable="true"
是什么作用? - Ruchir Baronia