2

Моим приложениям необходимо настроить уровень API 7 и выше, однако я бы хотел выборочно использовать функциональность из более новых версий, когда он станет доступным. Например, я мог бы иметь такой код:как поддерживать поддержку старых версий Android в eclipse

if (Build.VERSION.SDK_INT >= 8) { 
    base64String = android.util.Base64.encodeToString(bytes, android.util.Base64.DEFAULT); 
} else { 
    base64String = MyCustomBase64.encodeBytes(bytes); 
} 

Однако, когда я настроить проект в затмении нацеливать «Android 2.1» (API 7) класс android.util.Base64 не найден, так как ему только существует для API 8 и выше. Eclipse затем указывает эту строку как ошибку компиляции (красный «x»), поскольку класс не находится на пути сборки.

Мой вопрос: что такое «правильный» способ обработки такого рода разработок (поддерживающих функции, которые фактически не существуют в целевой среде) при разработке Android с использованием Eclipse?

Я всегда могу изменить цель в Eclipse до версии 2.2 (API 8), но это тоже не идеально. Это создает ситуацию, когда я могу неосознанно использовать функцию, которая существует только в 8+ и не должна быть уведомлена об этом фактом Eclipse.

+0

какой у вас MyCustomBase64? У меня такая же проблема ... – bersam

ответ

1

Вы ответили на свой вопрос.

Я всегда могу изменить цель в Eclipse, 2.2 (API 8)

То есть, как это делается. Вы все равно можете установить minSDK/targetSDK в манифесте на 7. AFAIK вам просто нужно будет использовать операторы if, как показано на любом коде, который находится на более высоком уровне API.

+0

Окружающий код из будущих уровней API с операторами if не мешает им отображаться как ошибки компиляции, когда цель проекта установлена ​​в 2.1. Этот документ, как представляется, описывает предпочтительный метод: http://tools.android.com/recent/lintapicheck – jph

+0

Кажется, что может быть ошибка. Я использовал String.isEmpty() в своем коде, используя целевой API 9 и минимальный уровень 7 (в манифесте), и он не был помечен как ошибка с помощью контрольной панели Lint. Должно быть. – jph

+0

hmm Не играл с инструментом ворса, пока он не казался изящным. Я думаю, что вам не удастся избежать ошибок компиляции, если вы собираетесь сохранить его в API 7, но хотите использовать функции API 8. Я считаю, что ваш единственный вариант - построить проект с более высоким уровнем API – FoamyGuy