Android 支持ICS所需的显式配置?

Android 支持ICS所需的显式配置?,android,android-4.0-ice-cream-sandwich,google-play,Android,Android 4.0 Ice Cream Sandwich,Google Play,我刚刚发布了一个相对较新的应用程序,似乎ICS(冰激凌三明治)用户都会收到“您的设备与此版本不兼容”的错误消息。同样的用户可以在直接下载apk文件时安装应用程序 我是否需要做任何明确的事情来支持ICS用户通过Google Play安装应用程序 我的清单文件如下所示: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"

我刚刚发布了一个相对较新的应用程序,似乎ICS(冰激凌三明治)用户都会收到“您的设备与此版本不兼容”的错误消息。同样的用户可以在直接下载apk文件时安装应用程序

我是否需要做任何明确的事情来支持ICS用户通过Google Play安装应用程序

我的清单文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dmbstream.android"
    android:installLocation="auto" 
    android:versionCode="7" 
    android:versionName="1.0.7">
    <uses-sdk android:targetSdkVersion="10" android:minSdkVersion="4" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

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

    <application android:label="@string/app_name"
        android:theme="@style/MyTheme" android:icon="@drawable/icon"
        android:name=".DmbstreamApplication">
        <activity android:name=".activity.MainMenuActivity" android:configChanges="keyboardHidden|orientation">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name=".activity.LoginActivity" />
        <activity android:name=".activity.LoginWithTokenActivity" />
        <activity android:name=".activity.ChatActivity" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="stateAlwaysHidden" />
        <activity android:name=".activity.ConcertActivity" android:configChanges="keyboardHidden|orientation" />
        <activity android:name=".activity.LatestAddedConcertsActivity" android:configChanges="keyboardHidden|orientation" />
        <activity android:name=".activity.LatestPerformedConcertsActivity" android:configChanges="keyboardHidden|orientation" />
        <activity android:name=".activity.SearchActivity" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="stateVisible" />
        <activity android:name=".activity.YourFavoritesActivity" android:configChanges="keyboardHidden|orientation" />
        <activity android:name=".activity.YourPlaylistsActivity" android:configChanges="keyboardHidden|orientation" />
        <activity android:name=".activity.PlaylistActivity" android:configChanges="keyboardHidden|orientation" />
        <activity android:name=".activity.SettingsActivity" android:configChanges="keyboardHidden|orientation" />

        <activity android:name=".activity.SearchResultsActivity"
            android:windowSoftInputMode="adjustPan|stateHidden">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>
            <meta-data android:name="android.app.searchable"
                android:resource="@xml/searchable" />
        </activity>

        <service android:name=".service.DownloadServiceImpl" android:label="DMBStream Service"/>

        <receiver android:name=".receiver.MediaButtonIntentReceiver">
                <intent-filter android:priority="999">
                        <action android:name="android.intent.action.MEDIA_BUTTON" />
                </intent-filter>
        </receiver>

        <receiver android:name=".receiver.BluetoothIntentReceiver">
                <intent-filter>
                        <action android:name="android.bluetooth.a2dp.action.SINK_STATE_CHANGED"/>
                </intent-filter>
        </receiver>

        <receiver android:name=".provider.DmbstreamAppWidgetProvider" >
                <intent-filter>
                        <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
                </intent-filter>
                <meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_info"/>
        </receiver>

        <provider android:name=".provider.SearchSuggestionProvider"
                                    android:authorities=".provider.SearchSuggestionProvider"/>

        <!-- declare the default searchable Activity for the whole app -->
        <meta-data android:name="android.app.default_searchable"
            android:value=".activity.SearchActivity" />

<!--        <receiver
                android:name="com.google.android.apps.analytics.AnalyticsReceiver"
                android:exported="true" >
                <intent-filter>
                        <action android:name="com.android.vending.INSTALL_REFERRER" />
                </intent-filter>
        </receiver> -->
    </application>
</manifest>


必须至少达到API 14级:

<uses-sdk android:targetSdkVersion="14" android:minSdkVersion="4" />

并提供有关该主题的更多信息

编辑(基于评论)

您可以使用:

<uses-sdk android:targetSdkVersion="10" 
          android:maxSdkVersion="15" 
          android:minSdkVersion="4" />

但据我所知,这是:

警告:不建议声明此属性。首先,有 无需将该属性设置为阻止部署 应用程序安装到新版本的Android平台上 释放。根据设计,该平台的新版本完全可以使用 向后兼容。您的应用程序应在新服务器上正常工作 版本,前提是它只使用标准API并遵循开发流程 最佳做法。其次,请注意,在某些情况下 属性可能导致您的应用程序从用户帐户中删除 系统更新到更高API级别后的设备。上的大多数设备 您可能安装的应用程序将定期收到 系统更新的空气,所以你应该考虑他们的影响 请在设置此属性之前启动应用程序

我想,如果您尝试使用
maxSdkVersion
,只需确保在模拟器API级别14+上测试,确保一切正常,然后向ICS用户开放,结果发现它不工作,因为它实际上需要使用API 14+进行定向和构建

只需遵循安卓HIG(安卓人机界面指南)

Android完整示例支持所有Api级别(平板电脑和手机)


删除
元素似乎已经解决了这个问题。

另请参见:那么所有目标小于14的旧应用程序都不能在ICS上运行?在我看来,这似乎是错误的…从API级别列表页面的“应用程序前向兼容性”部分可以看出:“Android应用程序通常与Android平台的新版本前向兼容。”在这种情况下,我很好奇为什么我必须以v14为目标来启用ICS支持。嗯,你是对的,不必使用
android:targetSdkVersion=“14”
您可以使用
android:maxSdkVersion=“15”
并保留
android:targetSdkVersion=“10”
,但据我所知,不推荐使用。maxSdkVersion不是我喜欢使用的东西。这似乎极为有限。我的应用程序在模拟器的ICS上运行良好,即使我的目标是v10。问题是Google Play告诉人们他们的设备不兼容。ICS不应该有任何特定的配置。我也看不出你的舱单有什么明显的问题。查看应用程序下开发人员控制台中的“支持的设备”部分,看看是否有任何明显的内容。同时查看APK文件选项卡,只是为了验证API级别是否为4-16+。@kabuko Yep,APK文件选项卡显示支持API级别:4-16+。不幸的是,我不知所措。。。我能想到的唯一一件事是,您可以尝试创建一个具有基本相同清单的测试应用程序,确保您看到相同的问题,然后开始减少清单的可选行以隔离问题。@kabuko得到这个。。。我删除了
元素,发布了一个新的“测试”应用程序。ICS用户可以很好地安装。当我对我的“real”应用程序做同样的更改时,他们仍然无法安装它。我现在完全糊涂了…真是莫名其妙。。。我想你可以检查的另一件事是在你的开发控制台中,有一个叫做支持设备的部分。点击ShowDevices链接,看看你在那里看到了什么有趣的东西。不过,除此之外,我几乎没有别的想法了。
<uses-sdk android:targetSdkVersion="10" 
          android:maxSdkVersion="15" 
          android:minSdkVersion="4" />