Обратная совместимость и библиотеки Android Open Accessory - PullRequest
2 голосов
/ 04 февраля 2012

Проблема: Я пишу приложение для Android, и одна из его функций требует совместимости с Open Accessory, которая доступна только в версии 3.1 и выше (а также для некоторых версий 2.3.4 имеется бэкпорт). ). Пакеты, которые мне нужны (android.hardware.usb или android.future.usb), полностью отсутствуют на более ранних уровнях API, но мне нужно, чтобы приложение работало как минимум на Android 2.2. Прямо сейчас он даже не установится (я получаю «INSTALL_FAILED_MISSING_SHARED_LIBRARY» в Eclipse).

Я провел некоторые исследования и нашел следующие потенциальные решения, но мне нужна помощь в выборе того, какое из них «лучшее» (простое в реализации, чистое, простое в обслуживании, наиболее логичное ...) или, если есть другое решение, которое я упустил.


Решение № 1: Создайте две ветви проекта: одну для вспомогательных принадлежностей и одну для более старых телефонов.

Pro: Содержит все в чистоте, и я мог бы просто обозначить один проект как только для телефонов, а другой только для планшетов.

Con: Требуется, чтобы я настроил проект библиотеки или разработал какой-то специальный сценарий сборки, чтобы мне не приходилось дублировать весь мой код в двух проектах.


Решение № 2: Используйте отражение, чтобы вручную загрузить необходимые классы во время выполнения, и сгенерируйте исключение, если класс не существует.

Pro: Я могу поддерживать обратную совместимость без необходимости создавать несколько проектов.

Con: Кажется немного грязным / хакерским


Итак, в двух словах ... как я могу использовать пакет, который существует только в API уровня 12 и выше, но при этом приложение работает на более ранних версиях?

Любой совет будет принят с благодарностью. Спасибо!

1 Ответ

1 голос
/ 01 июня 2012

Я закончил с решением Library Project .Подавляющее большинство кода приложения было в проекте библиотеки, но все, что связано с Open Accessory, было перенесено в его собственный проект.Это на самом деле оказалось довольно простым в обслуживании, так как было передано так много кода.Никаких сложных сценариев сборки не требуется!

...