Как без проблем снизить версию моего Android-приложения с 2.2 до 1.5 sdk - PullRequest
1 голос
/ 24 декабря 2010

У меня есть приложение для Android, которое я начал писать на SDK 2.2, но мой телефон на Android имеет версию Android на 1.5.Я должен понизить свое приложение до 1,5 без проблем.Я не совсем уверен, но я не использовал слишком много специфичных для 2.2 функций.Можете ли вы сказать мне, как это сделать?

Ответы [ 3 ]

1 голос
/ 24 декабря 2010

По сути следуйте по ссылке Джин сверху на dev блог и примите эти рекомендации.Вы собираетесь создать одноэлементный класс, который лениво загружает подходящий класс для соответствующего уровня API устройства, на котором он работает.Функции, которые недоступны в версии, должны обрабатывать этот вариант использования.

public abstract class StaticAct {

protected static StaticAct INSTANCE = null;

public static StaticAct getInstance() {
    final int sdkVersion = Integer.parseInt(Build.VERSION.SDK);

    if(INSTANCE==null)
    if(sdkVersion < Build.VERSION_CODES.DONUT){
        INSTANCE = new CupcakeStaticAct();
    }else if (sdkVersion < Build.VERSION_CODES.ECLAIR){
        INSTANCE = new DonutStaticAct();
    }else if(sdkVersion < Build.VERSION_CODES.FROYO){
        INSTANCE = new EclairStaticAct();
    }else if(sdkVersion < Build.VERSION_CODES.GINGERBREAD){
        INSTANCE = new FroyoStaticAct();
    }else{
        INSTANCE = new GingerbreadStaticAct();
    }

    return INSTANCE;
}

// Private constructor prevents instantiation from other classes
  protected StaticAct() {}
}

В этом абстрактном классе будут некоторые абстрактные методы, которые он определяет, например,

public abstract boolean enableStrictMode();

Для каждого классауровень API.РЕДАКТИРОВАТЬ: это все частные классы, определенные внутри файла StaticAct.java.Это позволяет ленивой загрузке работать правильно и предотвращать создание экземпляров из других классов.

 /*
  * API Level 3
  */
 private static class CupcakeStaticAct extends StaticAct

Базовый класс (расширяющий StaticAct) должен реализовывать все методы, определенные в StaticAct.Если метод недоступен для этого уровня API, обработайте этот случай, сгенерируйте ошибку или верните false (или полностью ее игнорируйте).

        @Override
        public void enableStrictMode() {
            //unavilable in cupcake, do nothing
        }

Поскольку ваши классы увеличиваются на уровне API, им нужно только реализовать методы,изменились по сравнению с предыдущими версиями.Таким образом, API мультитач стали доступны в 2.0, строгий режим в 2.3 и т. Д.

1 голос
/ 24 декабря 2010

Если вы используете Eclipse, измените манифест minSdkVersion и targetSdkVersion и настройку проекта на использование 1.5, и все, что не присутствует в этой версии API, превратится в ошибку.

0 голосов
/ 24 декабря 2010

В вашем файле manifest.xml:

<uses-sdk android:minSdkVersion="integer" 
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer" />

Подробную информацию см. здесь

Уровень API вставлен в minSdkVersion, поля targetSdkVersion и maxSdkVersion (не то, что maxSdkVersion устарело в наборе инструментов, но будет работать на рынке).Для краткого изложения:

Platform       API Level
Android 2.3   9
Android 2.2   8
Android 2.1   7
Android 2.0.1 6
Android 2.0   5
Android 1.6   4
Android 1.5   3
Android 1.1   2
Android 1.0   1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...