4

@JavascriptInterface アノテーションは、API 17 以降で機能します。私のプロジェクトでは、ターゲット API が 13 に設定されているため、注釈が見つかりません。

私のプロジェクトのビルドターゲット

私のマニフェストでは、最小SDKは11です:

 <uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18" />

プロジェクトのビルド ターゲット (Eclipse の [プロジェクト] > [プロパティ] > [Android] など) に移動し、解決策として API 17+ に変更する必要があるのはなぜですか。API 17より下のアノテーションを無視するだけでいいのに、そのSDKに対してビルドする必要があります。私は、API 17 に対してビルドし、後で以前のリリースでは実行できないコードがあることを発見するという考えは好きではありません。私の目標は、アプリが api 13 から 18 で確実に実行できるようにすることです。commonsWare があれば、私が見逃しているものを提案してくれるかもしれません...

4

1 に答える 1

1

私のプロジェクトでは、ターゲット API が 13 に設定されているため、注釈が見つかりません。

次に、それを修正するか、android:targetSdkVersion必要ないほど低く設定します@JavascriptInterface

プロジェクトのビルド ターゲット (Eclipse の [プロジェクト] > [プロパティ] > [Android] など) に移動し、解決策として API 17+ に変更する必要があるのはなぜですか。

@JavascriptInterfaceは API レベル 17 より前には存在しないため、API レベル 17DisplayManagerより前には存在しません。

API 17 より下のアノテーションを無視するだけで本当にやりたいことがある場合は、その SDK に対してビルドする必要があります。

ビルド ターゲットは、利用可能なクラス、メソッド、注釈など以外には影響しないため、その懸念は見当たりません。

API 17 に対してビルドし、後で以前のリリースでは実行できないコードがあることが判明するという考えは好きではありません。

Lint は、1 年以上にわたって API レベルの違反を報告しています。android:minSdkVersionが正しく設定されていることを確認してください。

結局、あなたはすでに this に依存していました。あなたのandroid:minSdkVersionはに設定され11、ビルド ターゲットは現在 13 に設定されています。つまり、Lint をカウントして、API レベル 12 および API レベル 13 の API を使用している場所を報告していることを意味します。それらを適切に処理します。ビルド ターゲットを上げることで行っていることは、Lint に依存するものの数を上げることだけです。

于 2013-09-25T20:41:41.700 に答える