不针对最新版本的Android

不针对最新版本的Android,android,styles,themes,warnings,manifest,Android,Styles,Themes,Warnings,Manifest,尝试在最新的Android SDK包4.2上测试主题时,我收到一个警告 这是我的清单文件: <?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

尝试在最新的Android SDK包4.2上测试主题时,我收到一个警告

这是我的清单文件:

<?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;兼容模式 申请。考虑测试和更新这个版本。咨询 android.os.Build.VERSION_代码javadoc 细节。AndroidManifest.xml/ThemeTest第7行Android Lint问题


我正在使用一个名为“AppBaseTheme”的自定义主题。我的问题是,请咨询android.os.Build.VERSION\u代码javadoc。。如何解决此问题?

它之所以这样说是因为
targetSdkVersion=“16”
。API 16是Jellybean 4.1和4.1.1,而Jellybean 4.2是API 17

尝试使用:

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
编辑2:对于Android 4.4,最新的SDK版本现在是19,因此您应该使用:

...
        android:targetSdkVersion="18" />
...
        android:targetSdkVersion="19" />
编辑3:使用Android L时,必须使用以下值,如下所述:

编辑4:对于Android L的公开发行版,您必须使用21:

...
        android:targetSdkVersion="21" />
20用于4.4W,或用于

编辑5:对于Android M的公开发行版,您必须使用23:

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

将来,请咨询以使自己了解最新的Android API级别。

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

这是一条警告消息,如果您想解决此问题,则可以设置android:maxSdkVersion=“17”,但您必须注意,如果有人当前正在使用您的应用程序并将其安卓操作系统升级到高于17的版本,则您的应用程序将自动删除,因为版本不受支持。。所以也要注意这个事实

此lint消息告诉您,兼容模式将自动应用于您可能使用过的任何功能,这些功能在比您声明的targetSdkVersion 16更高的版本中不可用(并且,它还告诉您有更高的版本,例如17)

这些自动兼容性模式调整可能不如您通过使用在更高版本(而不是16级)中添加的任何功能来替换您可能已使用的16级功能(在更高版本(如果有的话)中已删除)来实现的那样理想。但在以后的版本中,一切都应该继续工作(由于兼容性代码所做的调整,该代码自动应用于在高于您声明的targetSdkVersion API级别的版本上运行);它可能无法像您自己定制的检测和使用新功能(当您的应用程序检测到它在具有这些功能的更高版本中运行时)那样工作

以下是minSdkLevel与targetSdkLevel的讨论,并附有示例:

您将要考虑的另一件事是项目构建目标(用于编译应用程序的SDK级别)与ToalSDK级别的关系:

添加
xmlns:tools=”http://schemas.android.com/tools“工具:忽略=“OldTargetApi”



From:

始终使用最新的android版本作为您的目标SDK,以获得更多好处

针对最新的API级别还可以让你的应用程序利用平台的最新功能取悦你的用户此外,从Android 10(API级别29)开始,如果应用程序针对Android 5.1(API级别22)或更低版本,用户在首次启动应用程序时会看到警告

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

有关更多详细信息,请参阅此开发者网站


事实上,不应该使用此属性。然而,由于API7(包括在内)意味着Android 2.1及以上版本,系统没有对该属性进行检查。仅适用于Android 2.0.1及更低版本,如果当前版本大于maxSdkVersion属性,则系统将删除您的应用程序,否则将忽略它。Google Play使用它来过滤设备显示的应用程序,正如所解释的,该属性用于分割apk的目标,也就是说,由于不同的播放服务SDKI,您希望为froyo和GigerRead+分发不同的apk。如果平台的API级别高于应用程序的targetSdkVersion声明的版本,系统可能会启用兼容性行为,以确保您的应用程序继续以您期望的方式工作。OP没有询问有关
maxSDKVersion
的问题,但是
targetSDKVersion
我应该如何将L作为目标?请注意,这将被
build.gradle
文件中的任何内容覆盖!添加一个用于答案的持久性和长期维护。
<?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" />
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="29" />