私はAndroidManifest.xmlにGingerbreadのアプリケーションを作成しています。minSdkVersion=10
とtargetSdkVersion=17
です。Androidでサポートされていない(上位レベルの)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
のアンドロイドSDKバージョン)、SDKを4.2.2に戻します。
サポートされていないAPIがSDKを切り替えることなく呼び出されないようにするには、より良い方法がありますか?
(私はIntelliJのを使用していP.S.)
正しい答えは、あなたの 'android:minSdkVersionよりも新しいものを使用するとわかるように、" Use Lint "(http://developer.android.com/tools/debugging/improving-w-lint.html)です。しかし、まだIntelliJの統合があるかどうかはわかりません。そうでない場合は、コマンドラインから実行する必要があります。 – CommonsWare