7

I have an app that should be supported on a huge number of devices, and yet when I upload it to Google Play, it says only 3 (out of 2263) are supported.

My manifest looks like this (minus Activities):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="MYPACKAGE"
android:versionCode="101"
android:versionName="@string/app_version" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera.any" />

<supports-screens
    android:anyDensity="true"
    android:largeScreens="false"
    android:normalScreens="true"
    android:smallScreens="true"
    android:xlargeScreens="false" />

<application
    android:name=".MYApplication"
    android:hardwareAccelerated="true"
    android:icon="@drawable/app_icon"
    android:label="@string/app_name"
    android:theme="@style/RPTheme" >

    ACTIVITY DECLARATIONS ARE HERE

    <service android:name="com.parse.PushService" />

    <receiver android:name="com.parse.ParseBroadcastReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.USER_PRESENT" />
        </intent-filter>
    </receiver>
    <receiver android:name="MYPACKAGE.PushReceiver" >
        <intent-filter>
            <action android:name="1" />
        </intent-filter>
    </receiver>

</application>

Also, I've replaced my package name with MYPACKAGE.

Now that I'm looking at it again, perhaps this has to do with android:hardwareAccelerated="true" ? But my understanding is that XML declarations are ignored by API levels that don't support them.

Anyone have any ideas about what is going on here? Is there anywhere else the Play store looks for what devices are supported?

Thanks for your help!

EDIT:

Looks like it was indeed the android.hardware.camera.any, as noted below. I've replace that with:

<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.front"
    android:required="false" />

And my app now has 2k+ supported devices.

4

1 回答 1

12

尝试注释掉或更改:

<uses-feature android:name="android.hardware.camera.any" />

PackageManager 在 Android 4.2 中添加了等效值。这个问题说:

但是,Play Store 需要新的逻辑来为具有较旧操作系统版本的设备提供向后兼容性,该版本尚未准备好。

因此,在该支持到位之前,请勿使用“android.hardware.camera.any”,因为任何需要它的应用程序都无法安装在运行 4.2 之前版本的设备上。

那是一个月前写的,你的经验表明情况仍然如此。

于 2012-12-18T23:51:40.020 回答