不针对最新版本的Android

当试图在最新的Android SDK Package 4.2上testing主题时,我有一个警告。

这是我的清单文件:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.themetest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppBaseTheme" > <activity android:name="com.example.themetest.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

不针对最新版本的Android; 兼容模式适用。 考虑testing和更新这个版本。 有关详细信息,请参阅android.os.Build.VERSION_CODES javadoc。 AndroidManifest.xml / ThemeTest第7行Android Lint问题

我正在使用一个名为“AppBaseTheme”的自定义主题。 我的问题是什么请参阅android.os.Build.VERSION_CODES javadoc。 。 我怎么能解决这个问题?

它说这是因为targetSdkVersion="16" 。 API 16是Jellybean 4.1和4.1.1,而Jellybean 4.2是API 17。

尝试使用:

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

另外,请记住,这是一个Lint警告。 这些警告旨在帮助您更好地使用代码,并使其易于维护,同时兼容最新的Android更改。 忽略这一点不会引起任何直接的问题。

编辑:使用Android 4.3,最新的SDK版本现在是18,所以你应该使用:

 ... android:targetSdkVersion="18" /> 

编辑2:与Android 4.4,最新的SDK版本现在是19,所以你应该使用:

 ... android:targetSdkVersion="19" /> 

编辑3:使用Android L,您必须使用以下值,如下所述:

 compileSdkVersion="android-L" minSdkVersion="L" targetSdkVersion="L" 

编辑4:随着Android的公共版本,你必须使用21代替:

 ... android:targetSdkVersion="21" /> 

20用于4.4W或Android Wear 。

编辑5:Android M的公开发布,你必须使用23:

 ... android:targetSdkVersion="23" /> 

未来,请查阅官方Android文档,以保持最新的Android API级别。

您不应该使用android:maxSdkVersion="17"因为这意味着如果有人使用您的应用程序更新其Android操作系统版本大于17,您的应用程序将被删除。

这个lint消息告诉你,兼容模式将被自动应用到你可能已经使用的,在你的声明的targetSdkVersion为16以后的版本中不可用的任何特性(并且它也告诉你有这样一些更新的版本 – 例如, 17)。

这些自动兼容模式的调整可能不如您通过使用以后(比第16级)版本中添加的任何function来替代您可能已经使用的级别16的function更高版本(如果有的话)。 但是所有东西都应该能够在更高版本中继续工作(由于兼容性代码的调整会自动应用到版本高于声明的targetSdkVersion API级别的版本上); 它可能无法像您自己的自定义检测和使用新function(当您的应用程序检测到它在具有这些function的更高版本中运行) 那样工作。

这里是一个关于minSdkLevel与targetSdkLevel的讨论。

Android Min SDK版本与目标SDK版本

您需要考虑的另一件事是Project Build Target(用于编译您的应用的SDK的级别)与targetSdkLevel的关系:

Eclipse中的“构build目标SDK”和AndroidManifest.xml中的android:targetSdkVersion之间的区别?

我遇到了同样的问题,事实certificate,在清单中现在还有一个新的(通常是未使用的)参数,您也将使用它。 将android:maxSdkVersion =“16”添加到您的uses-sdk,如下所示:

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

保存时不会发出警告(因为版本17是SDK的当前最高版本)

maxSdkVersion是没有必要的,但会帮助17版本中的某些内容发生更改。 如果您使用标准的ADK平台组件,则不需要maxSdkVersion。

它是一个警告消息,如果你想解决它,那么你可以设置android:maxSdkVersion =“17”,但你必须注意的事实,如果有人目前使用你的应用程序,并升级他的Android操作系统比17更大的版本,那么你的应用程序会自动删除,因为不支持的版本..所以照顾这个事实也..

添加xmlns:tools="http://schemas.android.com/tools" tools:ignore="OldTargetApi"

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.themetest" android:versionCode="1" android:versionName="1.0" xmlns:tools="http://schemas.android.com/tools" tools:ignore="OldTargetApi"> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> 

来自: 卡住为什么我的Android应用程序不会工作?