Заставить приложение Android 2.2 работать на 1.6 - PullRequest
1 голос
/ 12 ноября 2010

Я написал простое приложение для Android, и когда я впервые создал проект, я выбрал v2.2 для цели сборки.Я обнаружил, что мое приложение не работает на v1.6, оно работает в течение нескольких секунд, а затем вылетает.Поэтому я предполагаю, что я использую некоторые команды, которые не были реализованы в 1.6.Поэтому мне нужно выяснить, что это за команды, и найти эквивалент 1.6.Думаю, это не должно быть слишком сложно.

Мой настоящий вопрос таков;сделать 1.6v это единственный способ сделать это, чтобы создать новый проект и установить цель сборки на 1.6, затем скопировать и вставить исходный код и пересобрать?Или есть более простой способ?то есть я могу взять мою существующую сборку 2.2 и затем сказать, чтобы она скомпилировалась в 1.6?

Большое спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Правило состоит в том, что вы всегда строите с последним SDK, но используйте значение android:minSdkVersion атрибута <uses-sdk>, чтобы указать самый низкий уровень API, который может поддерживать ваше приложение.

Обратите внимание, что этот атрибут является лишь подсказкой для установщика, и Маркет ... установка его на 4 (для 1.6) не будет означать, что ваше приложение может магически работать на 1.6.Вы сами должны придумать хорошие запасные варианты, если более современные API недоступны (или соответствующим образом поднять minSdkVersion, если приложение не может работать без них).

Если ваше приложение может работать на 1.6 без 2.x API, тонужно быть уверенным, что использование 2.x API сделано из класса, который не будет загружен в 2.x.Вот пример:

import android.view.Display;

// Class for wrapping APIs only available in 
// API level 8 and up. (i.e. 2.2, a.k.a. Froyo)    
class ApiLevel8Only {
    public static int getDisplayRotation(Display display) {
        return display.getRotation();
    }

}

Этот вызов getRotation () вызовет принудительное закрытие на 1.6.Чтобы избежать этого, вы проверяете текущую версию до ссылки на класс API-оболочки :

if (Integer.parseInt(Build.VERSION.SDK) >= 8) {
    ApiLevel8Only.getDisplayRotation(...);
}

Надеюсь, что это имеет смысл.

1 голос
/ 12 ноября 2010

Все, что вам нужно сделать, это установить значение minsdk в вашем манифесте.Это устанавливает 1.5 как ваш minsdk и 1.6 как вашу цель, например:

<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"/>.

Управление версиями вашего приложения.

android: minSdkVersion - минимумверсия платформы Android, на которой будет работать приложение, указанная идентификатором уровня API платформы.

Таким образом, вы устанавливаете это на API # для 1.5 или 1.6, и ваше приложение будет работать на этих старых версиях Android.Но вы ДОЛЖНЫ проверить API-вызовы для более новой версии Android.Вы не можете использовать функции 2.2 в версии 1.5 и т. Д.

Таким образом, вы можете установить целевую настройку на Android 2.2 и настроить minsdk на Android 1.5.Затем вы можете использовать Build.VERSION , чтобы определить, какую версию Android использует пользователь, чтобы избежать использования более новых вызовов API в более старых версиях Android.

...