不针对最新版本的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应用程序不会工作?