2

Android 15 を対象とする Android プロジェクトがありますが、最小バージョンは Android 8 です。これはマニフェスト ファイルで次のように定義されています。

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

これは、Android 8 までの機能しか使用できないことを意味します。

String クラスの isEmpty() メソッド (API 9 で追加された) のようなメソッドを使用すると、IntelliJ と Eclipse の両方で問題なくコンパイルされますが、古いデバイスで実行すると、API 8 には isEmpty( がないため) がクラッシュします。 )が実装されました。

どちらの IDE もこのようなものをキャッチできない理由を知っている人はいますか?

私の Java コンパイラはバージョン 1.6.0_33 です。IDE に古いバージョンを強制的に使用させると、ここで役立ちますか?

ありがとう!見逃した情報がある場合は、お気軽にコメントを残してください。情報を掘り下げます!

4

2 に答える 2

5

コンパイルすることになっています。これにより、ラッパー クラスを介して最新の SDK で新しいメソッドを使用できます。ターゲットSDK が 8 の場合、IDE はあなたを捕まえて文句を言います。

詳細はこちら:

http://developer.android.com/guide/practices/compatibility.html

ラッパー クラスの手法は非常に便利です。このブログ投稿には、それに関するガイドがあります。

http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html

編集:

デフォルト設定でLintを使用する Eclipse の最新の ADT (r20、おそらくそれ以前) は、minSDK を超える API メソッドの使用を探すことに注意してください。ただし、ファイルが変更された後、または Lint を実行した場合にのみ、ファイルをチェックします。

Lint の詳細: http://tools.android.com/tips/lint

于 2012-09-11T21:25:43.053 に答える
3

IntelliJ IDEAの場合:

  1. Project Structure>>Modules
  2. モジュールを選択してください
  3. Dependenciesタブで、Module SDK制限するAPIレベルに関連するを 選択します。Android 2.3.3 Google APIs例えば。

Android LintIDEAは、最新のSDKをコンパイルする場合でも、APIレベルへの準拠をより簡単にチェックできるように、サポートの改善にも取り組んでいます。

http://youtrack.jetbrains.com/issue/IDEA-85200

于 2012-09-11T21:57:28.750 に答える