2012-12-14 4 views
2

Допустим я настроил AndroidManifest.xml моего Android приложения следующим образом:Как искать несовместимого использования Android API в мое приложение

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

Я заинтересован в том, как я могу сканировать мой исходный код вызовы API-интерфейсов Android, которые не являются частью версии SDK minimimun, которую я указал, которая в этом примере представляет собой API-уровень 8. Таким образом, я могу проверить каждый сомнительный вызов, чтобы убедиться, что он правильно завернут с помощью теста на отражение или какой-либо другой обеспечение обратной совместимости, чтобы оно не разбивало старые устройства. В идеале я мог бы отметить этот вызов как «безопасный», чтобы он не срабатывал при последующих сканированиях.

Например, разработчик неосознанно проверяет в некотором коде, который использует DownloadManager, API, который доступен в уровнях API 9 и выше. Из-за моего заявления 'uses-sdk', MyApp будет создавать, устанавливать и запускать на устройстве Android 2.2 (API уровня 8). Но как только путь кода вызывает метод DownloadManager на этом устройстве 2.2, пользователь будет испытывать неурегулированное исключение виртуального метода (сбой). Это то, чего я пытаюсь избежать.

Идеально сканировать эти потенциально-несовместимые API-интерфейсы было бы чем-то, что я могу сделать из командной строки, во время построения; и он сможет обрабатывать изменения в android: minSdkVersion без слишком большого переоборудования.

+0

Существует много вопросов, подобных вашим уже здесь (и доступным через Google), которые могут ответить на этот вопрос. Для начала просмотрите столбец «Связанный» чуть ниже «Карьера 2.0» на правом краю. – KevinDTimm

+0

@KevinDTimm: Я не вижу никого, кто попросил или ответил бы, как сканировать используемые API, которые * не * родны для minSdkVersion. Вот что я прошу здесь. Я видел большое предложение продолжать нагнетать minSdkVersion вниз (и строить), пока вы не получите ошибки компиляции, чтобы определить самое низкое значение minSdkVersion, которое вы можете использовать. Но это не то же самое, что я прошу здесь. – Jeffro

ответ

1

Мне было трудно найти это, поэтому я отвечу ясно (хотя это вопрос 2 года).

В Eclipse, щелкните правой кнопкой мыши по проекту, нажмите «Инструменты для Android»> «Запустить lint: проверьте общую ошибку».

Это даст вам список всех странностей, которые lint может найти в вашем коде, включая несовместимости с minSdkVersion, которые вы определили в своем манифесте (можно найти в списке с категорией «Корректность»).

+0

Действительно, это создает ошибку на моей панели Lint Warnings: «Для вызова требуется уровень API 16 (текущий минимум 15)». Детали Lint говорят мне, что я могу разместить '@TargetApi (Build.VERSION_CODES.JELLY_BEAN)' в верхней части моего метода, если я знаю, что я делаю (то есть, условно проверяю правильный уровень API во время выполнения перед вызовом), тем самым подавляя это ошибка. – Jeffro