Допустим я настроил 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 без слишком большого переоборудования.
Существует много вопросов, подобных вашим уже здесь (и доступным через Google), которые могут ответить на этот вопрос. Для начала просмотрите столбец «Связанный» чуть ниже «Карьера 2.0» на правом краю. – KevinDTimm
@KevinDTimm: Я не вижу никого, кто попросил или ответил бы, как сканировать используемые API, которые * не * родны для minSdkVersion. Вот что я прошу здесь. Я видел большое предложение продолжать нагнетать minSdkVersion вниз (и строить), пока вы не получите ошибки компиляции, чтобы определить самое низкое значение minSdkVersion, которое вы можете использовать. Но это не то же самое, что я прошу здесь. – Jeffro