9

私は Gingerbread 用のアプリケーションを構築してminSdkVersion=10おりtargetSdkVersion=17、AndroidManifest.xml を使用しています。

API を呼び出す前に、API がサポートされているかどうかを確認する必要があることはわかっています。次に例を示します。

private void removeRule(RelativeLayout.LayoutParams params, int rule) {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { // API 17
        params.removeRule(rule);
    } else {
        params.addRule(rule, 0);
    }
}

しかし、より高いレベルの API を呼び出していることを忘れたり、知らない場合があり、NoSuchMethodError例外が発生してプログラムがクラッシュすることがあります。

そのため、アプリを公開する前に、常に Android SDK 2.3.3 を使用するようにプロジェクトを設定し、不正なメソッド呼び出しを行っていないことを確認します (たとえば、取得したすべてのエラーはif、Android SDK のバージョンを確認するステートメントにラップされます)。 SDK を 4.2.2 に戻します。

SDK を切り替えることなく、サポートされていない API が呼び出されないようにするより良い方法はありますか?

(PS私はIntelliJを使用しています)

4

2 に答える 2

7

Android Lint を実行して、次のことを確認できます (実行する必要があります)。

プロジェクト (またはパッケージ、クラス) を右クリック > [分析] > [コードの検査] を選択します。

ここに画像の説明を入力

于 2013-06-12T00:55:05.577 に答える
2

Eclipse Properties --> Android Lint Preferences --> NewApi で、Severity を Error に変更します。

于 2013-06-12T01:44:09.277 に答える