Я создаю приложение для Gingerbread и с minSdkVersion=10
и targetSdkVersion=17
в своем AndroidManifest.xml.Как я могу убедиться, что в 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?
(P.S. Я использую IntelliJ)
Правильный ответ: «Использовать Lint» (http://developer.android.com/tools/debugging/improving-w-lint.html), поскольку он расскажет вам, когда вы используете что-то более новое, чем ваш 'android: minSdkVersion ', но я не уверен, есть ли интеграция IntelliJ для этого. Если нет, вам нужно будет запустить его из командной строки. – CommonsWare