我有一个相对较新的应用程序,我刚刚发布,似乎ICS(冰淇淋三明治)用户都得到“您的设备与此版本不兼容”。来自Google Play的错误消息。相同的用户可以在直接下载apk文件时安装该应用程序。
我是否必须做任何明确的事情来支持通过Google Play安装应用的ICS用户?
我的清单文件如下:
<?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>
答案 0 :(得分:1)
只需关注Android HIG(Android人机界面指南)
Android完整示例支持所有Api级别(平板电脑和手机)
答案 1 :(得分:1)
删除<supports-screens />
元素似乎解决了这个问题。
答案 2 :(得分:0)
<uses-sdk android:targetSdkVersion="10" android:minSdkVersion="4" />
至少需要API级别14:
<uses-sdk android:targetSdkVersion="14" android:minSdkVersion="4" />
API Level List和Google Play Filters提供有关该主题的更多信息。
编辑(基于评论):
您可以使用:
<uses-sdk android:targetSdkVersion="10"
android:maxSdkVersion="15"
android:minSdkVersion="4" />
并侥幸逃脱,但就我所知,它是not recommended:
警告:不建议声明此属性。首先,有 无需将属性设置为阻止部署的方法 按原样应用到Android平台的新版本 释放。通过设计,该平台的新版本是完全的 向下兼容。您的应用程序应该适用于新的 版本,只要它只使用标准API并遵循开发 最佳做法。其次,请注意在某些情况下,声明 属性可能导致您的应用程序被用户删除 系统更新到更高API级别后的设备。大多数设备上 您的应用程序可能会安装将定期收到 系统通过空中更新,所以你应该考虑它们的影响 您的应用程序在设置此属性之前。
我想,如果您尝试使用maxSdkVersion
,只需确保在模拟器API级别14+上测试,以确保在向ICS用户开放之前一切正常发现它不起作用,因为它实际上需要使用API 14+ ...