Задаване на версия на Android приложение, android, програмиране
Статията съдържа превод на статии [1, 2], посветени на контрола на версиите на приложението Android и работата на приложението на различни версии на операционната системаAndroid. Потърсете всички неразбираеми термини и съкращения в Речника [3].
Контролът на версията на приложението е критичен аспект за актуализиране на приложение и за неговата бъдеща стратегия за поддръжка. Това е важно, защото:
Системата Android не използва информация за версията на приложението, за да наложи надграждане, понижаване или ограничения за съвместимост на приложения на трети страни. Вместо това, вие (като разработчик) сте отговорни за ограниченията за версията на приложението или за информирането на потребителите за това. Въпреки това системата Android гарантира, че приложението е съвместимо със системата според атрибута minSdkVersion, който е посочен в манифеста. Този атрибут позволява на приложението да посочи минималното системно API ниво, с което приложението е съвместимо. За повече информация вижте android:minSdkVersion под „Как да зададете изисквания за приложение на ниво (версия) на Android API“.
[Задаване на версията на приложението ]
За да зададете информация за версията на вашето приложение, трябва да зададете атрибути във файла на манифеста на приложението (AndroidManifest.xml, разделманифест ). Има 2 налични атрибута, на които трябва да бъдат присвоени стойности:
•android:versionCode е цяло число, което представлява версията на кода на приложението спрямо други версии. Стойността на цяло число е зададена така, че други приложения да могат да я изчислят програмно, например, за да проверят връзката между надграждане или понижаване. Можете да зададете стойността на всяко цяло число, което искате, но помнете товаактуализираното приложение трябва да има последователно увеличаващ се номер на версия. Това поведение не се налага от системата, но е нормално номерът на версията да се увеличава с нова версия.
•android:versionName е низова стойност, която представлява версията на версията на кода на приложението, която трябва да се показва на потребителите.
Стойността е низ, в който можете да опишете версията на приложението като . . , или по друг начин, изразяващ абсолютната или относителната версия на приложението като текстов идентификатор.
И двата елемента трябва да бъдат зададени в раздел на манифестния файл на приложението. Пример:
Обърнете внимание, че в този пример android:versionCode показва, че текущият .apk файл съдържа второто издание на кода на приложението, което съответства на второстепенната версия наследник на издание 1, както е показано в реда android:versionName.
Работният плот на Android предоставя API, който позволява на приложенията да запитват системата за информация за версията на приложението. Приложенията използват методаgetPackageInfo (java.lang.String, int) на обекта PackageManager, за да получат информация за версията.
[Как да зададете изисквания на приложението за ниво на Android API (версия) ]
Ако вашето приложение изисква конкретна минимална версия на платформата Android, където приложението трябва да работи, или ако приложението е проектирано да поддържа конкретен диапазон от версии на платформата Android, тогава можете да посочите тези изисквания за версията като идентификатори на нивото на API във файла на манифеста на приложението. Това ще гарантира, че вашето приложение може да бъде инсталирано само на устройства, работещи със съвместима версия на системата Android.
За да посочите изискванията за ниво на API, добавете маркер към файла на манифеста на вашето приложение и посочете inима един или повече от тези атрибути:
•android:minSdkVersion - минималната стойност на версията на платформата Android, на която ще работи приложението. Стойността на версията е посочена като числов идентификатор Ниво на API. •android:targetSdkVersion - показва номера на Нивото на API, за което е проектирано приложението. В някои случаи това ще позволи на приложението да използва манифестни елементи и да дефинира поведение въз основа на дадено целево ниво на API, вместо да бъде ограничено до използването само на определено минимално ниво на API. •android:maxSdkVersion е максималната версия на платформата на Android, на която приложението може да работи. Прочетете внимателно документацията на раздела (вижте по-долу), преди да използвате този атрибут.
При подготовката за инсталиране на приложение системата проверява тези атрибути и ги сравнява с версията на системата. Ако стойността на android:minSdkVersion е по-голяма от системната версия, инсталацията на приложението ще бъде прекъсната. По същия начин системата ще инсталира вашето приложение само ако android:maxSdkVersion е съвместим с версията на платформата.
Ако не посочите тези атрибути в манифеста, системата ще приеме, че вашето приложение е съвместимо с всички версии на платформата и също така няма ограничение за максимално ниво на API.
За да посочите минималната необходима версия на платформата за вашето приложение, добавете дъщерна секция към секцията и след това добавете атрибута android:minSdkVersion и неговата стойност.
Секцията uses-sdk се появи от API ниво 1 (т.е. веднага, започвайки с най-старите версии на Android). Синтаксисът на раздела е както следва:
Разделът uses-sdk ви позволява да изразите съвместимостта на Android приложение с една или повече версии на Android платформи (операционни системи). Товасъвместимостта се определя от номерата на нивото на API, което е посочено в атрибутите на секцията minSdkVersion, targetSdkVersion, maxSdkVersion. Версията на платформата може (което съответства на определен брой нива на API) да се различава на различните устройства с Android. Посочените API нива, предоставени от приложението в този раздел, се сравняват с API нивата на системата, на която приложението работи (или се инсталира), и въз основа на това сравнение се вземат определени решения относно инсталирането на програмата или нейната работа.
Въпреки името на секцията uses-sdk, тази секция всъщност се използва за определяне на нивото на API, но не и номера на версията на SDK на платформата Android. Нивото на API винаги е зададено на едно цяло число. Не можете да получите от свързаната с него текстова версия на Android, освен да получите такова съвпадение от таблицата с ниво на API (вижте [4]). Например API ниво 16 се отнася за Android 4.1, Android 4.1.1, Android 4.1.2. Сега помислете за присвояването на атрибутите minSdkVersion, targetSdkVersion, maxSdkVersion.
android:minSdkVersion е число, представляващо минималното API ниво, необходимо за инсталиране, стартиране и изпълнение на приложението. Системата Android няма да позволи на потребителя да инсталира приложението, ако нивото на API на системата е по-ниско от стойността, посочена в този атрибут. Винаги трябва да указвате този атрибут в секцията uses-sdk на файла AndroidManifest.xml.
Предупреждение: ако не посочите този атрибут, системата ще приеме, че стойността му по подразбиране е "1", което означава, че вашето приложение е съвместимо с всички версии на операционната система Android без изключение. Ако приложението ви е несъвместимо с всички версии (например използва API, въведен за първи път на ниво 3 на API) и не сте посочили правилно minSdkVersion, тогава при инсталиране в систематас ниво на API под 3, приложението ще се срине при опит за достъп до недостъпен API. Поради тази причина не забравяйте да декларирате подходящо API ниво в атрибута minSdkVersion.
android:targetSdkVersion този атрибут присъства от ниво на API 4. Това е цяло число, представляващо нивото на API, към което е насочено приложението (target, което означава цел). Ако този атрибут не е зададен, стойността му по подразбиране е minSdkVersion.
Този атрибут информира системата, че сте тествали приложението на това ниво на API и системата не трябва да позволява поведение на съвместимост (т.е. емулация на извиквания на API, които осигуряват специална допълнителна програмна обработка на някои извиквания на API), за да поддържа съвместимост напред на приложението с целевата версия на системата. Приложението все още може да работи на по-стари версии (до версии не по-малко от minSdkVersion).
Тъй като Android се развива с всяка нова версия, някои поведения и дори външният вид на приложението може да се променят. Въпреки това, ако нивото на API на платформата е по-високо от версията, посочена в targetSdkVersion на приложението, системата може да активира поведения за съвместимост, за да гарантира, че вашето приложение работи, както очаквате. Можете да деактивирате такова обработване на съвместимостта, като зададете targetSdkVersion равно на нивото на API на платформата Android, на която се изпълнява приложението. Например, задаването на тази стойност на „11“ или по-висока ще позволи на системата да зададе нова тема по подразбиране (Holo) за вашето приложение, когато работи на Android 3.0 или по-нова версия, и също така ще деактивира режима за съвместимост на екрана, когато работи на големи екрани (поради поддръжката на API ниво 11).имплицитно предполага поддръжка за големи екрани).
Има много поведения за съвместимост, които системата може да разреши въз основа на стойността на този атрибут. Някои от тези поведения са описани в документацията за съответната версия на платформата, вижтеBuild.VERSION_CODES.
За да сте сигурни, че вашето приложение е в съответствие с всяка нова версия на Android, трябва да увеличите този атрибут, за да съответства на най-новото ниво на API, и след това напълно да тествате поведението на приложението на тази нова версия на платформата.
android:maxSdkVersion този атрибут е въведен след ниво на API 4. Това е цяло число, указващо максималното ниво на API, на което приложението може да работи.
При Android версии 1.5, 1.6, 2.0 и 2.0.1 системата проверява стойността на този атрибут, когато приложението е инсталирано и когато приложението се проверява за съвместимост след системна актуализация. Във всеки случай, ако атрибутът на приложението maxSdkVersion е по-нисък от нивото на API на системата, тогава инсталирането на приложението ще бъде забранено. Когато проверявате приложението за съвместимост след актуализация на системата, този случай съответства на пълното премахване на приложението от устройството. За да илюстрирате как този атрибут може да повлияе на приложение след актуализация на системата, разгледайте пример.
Предупреждение: Този атрибут не се препоръчва. Първо, няма нужда да задавате този атрибут като средство за блокиране на внедряването на вашето приложение в новите версии на платформата Android, когато те станат налични. За Android е декларирана пълна обратна съвместимост на стари приложения за нови версии на Android. Вашето приложение трябва да работи правилно на всички нови версии, ако е такаизползва само стандартния API и следва най-добрите правила и практики за разработка. Второ, трябва да запомните, че прилагането на този атрибут автоматично ще премахне вашето приложение от потребителски устройства, които актуализират своята система до по-високо API ниво от посоченото в атрибута. Повечето от устройствата, на които е вероятно да бъде инсталирано вашето приложение, получават периодични системни актуализации в движение, по въздуха (по въздуха), така че трябва да имате предвид този ефект, преди да зададете този атрибут за вашето приложение.
Бъдещите версии на Android (след Android 2.0.1) вече няма да проверяват maxSdkVersion и да налагат стойността му при инсталиране или проверка на съвместимостта на приложението. Google Play обаче ще продължи да използва този атрибут като филтър, когато предоставя приложения за изтегляне от потребителите.
[Пример за задаване на версия на приложение при създаване на проект в Eclipse ]
В Eclipse, когато създавате проект, се стартира съветник, който на първия екран ви позволява да зададете опции относно версията на приложението.
Полето Minimum Required SDK дефинира стойността на атрибутаandroid:minSdkVersion на бъдещото приложение. Тук е желателно да посочите версията на доста популярна платформа, която може вече да е малко остаряла.
Полето Target SDK указва атрибутаandroid:targetSdkVersion. Посочете тук версията на системата, с която сте тествали вашето приложение. Например, дебъгвате програма на Android 4.1.2, след което в падащия списък Target SDK трябва да изберете API 16: Android 4.1 (Jelly Bean).
Полето Compile With указва версията на SDK, върху която ще бъде компилирано вашето приложение. Тук задайте текущата максимална (най-нова) версия на системата Android.