54

最新の Android SDK Package 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_CODES javadoc を参照してください。AndroidManifest.xml /ThemeTest 行 7 Android リントの問題

「AppBaseTheme」というカスタム テーマを使用しています。私の質問は、android.os.Build.VERSION_CODES javadoc を正確に参照することです。. どうすればこの問題を解決できますか?

4

6 に答える 6

100

という理由でこう言ってい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 L の公開リリースでは、代わりに 21 を使用する必要があります。

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

20 は 4.4W またはAndroid Wearに使用されました。

編集 5: Android M の公開リリースでは、代わりに 23 を使用する必要があります。

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

今後は、公式の Android ドキュメントを参照して、最新の Android API レベルを最新の状態に保つようにしてください。

于 2012-11-17T14:57:15.890 に答える
7

あなたandroid:maxSdkVersion="17"のアプリを使用している誰かがその Android OS を 17 以上のバージョンにアップデートすると、あなたのアプリは削除されることになるため、使用しないでください。

于 2012-12-20T23:28:42.047 に答える
3

この lint メッセージは、宣言された targetSdkVersion 16 より後のバージョンでは使用できない、使用した可能性のある機能に互換モードが自動的に適用されることを示しています (また、そのような新しいバージョンがあることも示しています。たとえば 17)。

これらの自動互換モード調整は、使用した可能性のあるレベル 16 の機能を置き換えるために、新しい (レベル 16 よりも後の) バージョンで追加された機能を使用して自分で達成できるものほど理想的ではない場合があります。それ以降のバージョン (存在する場合)。ただし、すべてが新しいバージョンでも引き続き機能するはずです (宣言された targetSdkVersion の API レベルよりも高いバージョンで実行するために自動的に適用される互換性コードによって行われる調整のため)。新しい機能の独自のカスタム検出および使用 (これらの機能を備えた新しいバージョンで実行されていることをアプリが検出した場合) と同様に機能しない可能性があります

以下は、minSdkLevel と targetSdkLevel の例を含む説明です。

Android 最小 SDK バージョンとターゲット SDK バージョン

考慮すべきもう 1 つの点は、プロジェクト ビルド ターゲット (アプリのコンパイルに使用される SDK のレベル) と targetSdkLevel の関係です。

Eclipseの「Build Target SDK」とAndroidManifest.xmlのandroid:targetSdkVersionの違いは?

于 2013-03-21T02:45:57.177 に答える
0

それを解決したい場合は警告メッセージですが、android:maxSdkVersion = "17"を設定できますが、誰かが現在アプリを使用していて、Android OSを17よりも大きいバージョンにアップグレードした場合は、アプリに注意する必要があります。サポートされていないバージョンのために自動的に削除されます。したがって、この事実にも注意してください。

于 2013-03-11T08:42:56.473 に答える
0

を追加し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" />

From:私の Android アプリが動かないのはなぜですか?

于 2014-09-19T09:04:26.347 に答える