7

ActionBarSherlockを使用するアプリケーションに取り組んでいます。ドキュメントが指摘しているように:

[...]ライブラリでは、ライブラリとプロジェクトの両方がAndroid4.0以降でコンパイルされている必要があります。このプロジェクトでは、エディターと使用しているビルドシステムの両方でJDK1.6を使用してコンパイルする必要もあります。

つまり、Android 4.Xに対してアプリケーション(およびライブラリ)をコンパイルしますが、マニフェストでは、(たとえば)APIレベル9をターゲットにしていることを宣言します。

これはすべてうまく機能しますが、私を邪魔するものがあります。FAQから:

ライブラリを使用する場合、マニフェストでどのAPIレベルをターゲットにする必要がありますか?

新しいデバイスで実行するとAndroidがネイティブアクションバーを自動的に追加するため、APIレベル11以降をターゲットにする必要があります。新しいAPIに対してコンパイルしますが、アプリは古いバージョンのAndroidを搭載したデバイスで実行される可能性が高いため、SDKの最小バージョン以降に導入されたメソッドを使用しないようにするか、適切にチェックして呼び出すように特に注意する必要があります。

つまり、すべてのメソッド呼び出しを手動でチェックする必要があるので、ターゲットAPIレベル(私の場合は9)で使用できないものは使用しませんか?これは私には間違っているように聞こえます。

私のIDE(IntelliJ)に、APIレベル9のみを使用していることを伝える方法はありますか(存在しないメソッド/クラスのオートコンプリートを取得せず、誤って使用しないようにします)。次に、別のAndroidバージョンに対してコンパイルすることを選択しますか?

または、自動チェック(コンパイル時に実行される)を使用してそれをチェックできますか?

4

4 に答える 4

8

ADTのlint機能は、間違ったAPIバージョンに対してAPI呼び出しが行われている場合に警告することで、これを処理する必要があります。

ABSとプロジェクトの両方を、利用可能な最新のSDK(現在は4.1)を使用してコンパイルする必要があります。マニフェストはtargetSdkVersion可能な限り高く(理想的にはコンパイルSDKと一致する)、minSdkVersionサポートする最低バージョンに設定する必要があります。

LintはIntelliJIDEAと部分的に統合されており、コマンドラインツールとしても利用できます。

于 2012-07-30T19:50:01.460 に答える
1

ターゲットSDKを一時的にさまざまな下位のSDKに設定し、それを使用してデバッグします。最終的なビルドは最新のSDKを使用します。

于 2012-07-30T18:42:03.003 に答える
0

マニフェストで言及したものと同様のビルドターゲットを設定します。

于 2012-07-30T18:46:07.853 に答える
0

いつものように、targetSdkをマニフェストとproject.propertiesファイルの両方で利用可能な最大値に設定する必要があります(Googleがビデオの1つで推奨しているように)。これにより、ADT&SDKはそれに応じてADKを最適化できます。

minSdkを、アプリをサポートしたいものに設定し、新機能を使用する場合に問題があるかどうかをLintに通知させます。

于 2012-07-30T20:04:26.347 に答える