Как получить ошибку времени компиляции вместо ошибки времени выполнения NoSuchMethodError для несоответствий уровня API Android?

1

У меня есть приложение для Android Xamarin с android:minSdkVersion="15" и android:targetSdkVersion="21". Оказалось, что IDE (студия xamarin, визуальная студия) и процесс компиляции просто игнорируют, если я использую что-то выше API 15, которое здесь не ожидается.

Например, существует метод Path.addArc(float,float,float,float,float,float) из API 21, и я смог использовать его с указанными выше параметрами манифеста, которые дали мне ошибку времени выполнения NoSuchMethodError.

Существует простое исправление для использования перегрузки Path.addArc(RectF,float,float) из API 1, но мой вопрос связан скорее с тем, как получить ошибку времени компиляции или время выполнения.

[ОБНОВЛЕНИЕ]

В принципе, я хочу поддерживать обратную совместимость для API 15 (минимальная версия для Android), имея API 21 в качестве целевой версии для Android. И я хочу получить поддержку IDE, когда я пытаюсь использовать любой метод выше API 15. Это означает, что мне нужно предупредить, что я использую метод, который не существует в минимальной версии для Android, поэтому, пожалуйста, выполните проверку версии во время выполнения.

Возможно ли это?

Теги:
xamarin
nosuchmethoderror
android-api-levels
compile-time

1 ответ

1
Лучший ответ

Чтобы получить предупреждения о времени компиляции, вам необходимо установить целевую платформу для минимального SDK, который вы хотите поддержать. Это даст вам ошибки при попытке использовать apis более высокого уровня. Откройте диалоговое окно "Параметры проекта". В этом диалоговом окне нажмите "Сборка" > "Общие"

Вы можете прочитать здесь уровни api https://developer.xamarin.com/guides/android/application_fundamentals/understanding_android_api_levels/#Target_Framework

Если вы просто хотите получить сообщение об ошибке при сохранении целевой структуры, вы можете изменить свои настройки среды IDE, чтобы выбросить ошибку времени компиляции и предупреждение. Изображение 174551

  • 0
    Спасибо за ссылку, и вы абсолютно правы, чтобы получить ошибку времени компиляции, вам нужно переключить уровень API компиляции на желаемый. Возможно, мой вопрос был неясным, я его уточню, но в основном я хочу сохранить обратную совместимость для API 15 (минимальная версия для Android), в то время как API 21 является целевой версией для Android. И я хочу получить поддержку IDE, когда пытаюсь использовать любой метод выше API 15. Это означает, что мне нужно предупреждение о том, что я использую метод, который не существует в минимальной версии Android, определенной, поэтому, пожалуйста, сделайте проверка версии во время выполнения. Является ли это возможным?
  • 1
    Обновил ответ. Вы можете изменить настройки в студии Xamarin, чтобы добиться этого.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню