Obsługa wersji to kluczowy element aktualizacji i konserwacji aplikacji strategii ustalania stawek. Obsługa wersji jest ważna, ponieważ:
- Użytkownicy muszą mieć określone informacje o wersji aplikacji, jest zainstalowana na ich urządzeniach i dostępne wersje licencji instalacji.
- innych aplikacji, w tym innych publikowanych jako pakietu – trzeba przesłać do systemu zapytanie o wersję aplikacji określić zgodność i określić zależności.
- W przypadku usług, w których publikujesz swoje aplikacje, również może być konieczne i wysyła zapytanie o jej wersję, aby móc wyświetlić ją użytkowników. Usługa publikowania może też musieć sprawdzić wersję aplikacji, aby określić zgodność i nawiązywać relacje dotyczące przejścia na wyższą lub niższą wersję usługi.
System Android korzysta z informacji o wersji aplikacji, aby chronić w porównaniu do obniżek. system nie używa informacji o wersji aplikacji do wymuszania ograniczeń aktualizacji ani zgodności aplikacji innych firm. Aplikacja musi egzekwować dowolne ograniczeń wersji i poinformować o nich użytkowników.
System Android wymusza zgodność wersji systemu, co wynika z
za pomocą ustawienia minSdk
w plikach kompilacji. To ustawienie
pozwala aplikacji określić minimalny systemowy interfejs API, z którym jest zgodna.
Więcej informacji o wymaganiach dotyczących interfejsu API znajdziesz
przeczytaj artykuł Określanie wymagań dotyczących poziomu interfejsu API.
Wymagania dotyczące obsługi wersji różnią się w zależności od projektu. Wielu deweloperów uważa jednak, Obsługa wersji semantycznej to dobra podstawa i obsługi wersji.
Ustawianie informacji o wersji aplikacji
Aby określić informacje o wersji aplikacji, ustaw odpowiednie wartości dla tej wersji w plikach kompilacji Gradle:
Odlotowe
android { namespace 'com.example.testapp' compileSdk 33 defaultConfig { applicationId "com.example.testapp" minSdk 24 targetSdk 33 versionCode 1 versionName "1.0" ... } ... } ...
Kotlin
android { namespace = "com.example.testapp" compileSdk = 33 defaultConfig { applicationId = "com.example.testapp" minSdk = 24 targetSdk = 33 versionCode = 1 versionName = "1.0" ... } ... } ...
Ustawienia wersji
Określ wartości obu dostępnych ustawień wersji: versionCode
i
versionName
versionCode
- Dodatnia liczba całkowita używana jako wewnętrzny numer wersji.
Ta liczba pomaga określić, czy któraś wersja jest nowsza
niż w innym, przy czym większa liczba oznacza nowsze wersje. To jest
nie numer wersji wyświetlany użytkownikom; Ten numer jest ustawiany przez
versionName
– ustawienie. System Android używa funkcji WartośćversionCode
chroniąca przed obniżeniem wersji dzięki zapobieganiu użytkownicy nie mogą instalować pakietu APK z wartościąversionCode
niższą niż która jest obecnie zainstalowana na ich urządzeniach.Wartość jest dodatnią liczbą całkowitą, dzięki czemu inne aplikacje mogą automatycznie oceniać go, aby sprawdzić na przykład relację przejścia na wyższą lub niższą wersję usługi. Dostępne opcje ustawić wartość na dowolną dodatnią liczbę całkowitą. Upewnij się jednak, że każda kolejna wersja aplikacji ma większą wartość.
Uwaga: największą wartością, jaką Google Play dopuszcza
versionCode
to 2100000000.Nie możesz przesłać pliku APK do Sklepu Play, jeśli masz
versionCode
już używane w poprzedniej wersji.Uwaga: w niektórych sytuacjach warto wykonać prześlij wersję aplikacji z wartością
versionCode
niższą niż najczęstsza w najnowszej wersji. Jeśli na przykład publikujesz wiele plików APK, możesz mieć wstępnie ustawione zakresyversionCode
dla konkretnych plików APK. Więcej informacji na temat: przypisywanie wartościversionCode
dla wielu plików APK, patrz Przypisywanie kodów wersji.Zwykle do publikowania pierwszej wersji aplikacji
versionCode
ma wartość 1, a następnie monotonicznie zwiększaj wartość niezależnie od tego, czy jest to wersja główna, wersji nieletniej. Oznacza to, że wartośćversionCode
nie zawiera muszą przypominać wersję aplikacji, będą widoczne dla użytkownika. Aplikacje i usługi publikowania nie powinny wyświetlać tej wersji dla użytkowników. versionName
Ciąg znaków używany jako numer wersji wyświetlany użytkownikowi użytkowników. To ustawienie można określić jako nieprzetworzony ciąg znaków lub jako odwołanie do zasób tekstowy.
Wartość jest ciągiem znaków, dzięki czemu możesz opisać wersję aplikacji jako <główny>.<nieletni>.<punkt> jako ciąg znaków lub dowolny inny typ (bezwzględny lub względny). Jedyną wartością jest
versionName
wyświetlanych użytkownikom.
Zdefiniuj wartości wersji
Można zdefiniować wartości domyślne dla tych ustawień, umieszczając je w sekcji
Blok defaultConfig {}
umieszczony w elemencie android {}
pliku build.gradle
lub build.gradle.kts
modułu. Dostępne opcje
możesz zastąpić te domyślne wartości dla różnych wersji swojej aplikacji, definiując osobne
dla poszczególnych typów kompilacji lub smaków produktów. Poniższy plik zawiera
Ustawienia versionCode
i versionName
w
defaultConfig {}
i productFlavors {}
.
Te wartości są następnie scalane do pliku manifestu aplikacji podczas kompilacji.
Odlotowe
android { ... defaultConfig { ... versionCode 2 versionName "1.1" } productFlavors { demo { ... versionName "1.1-demo" } full { ... } } }
Kotlin
android { ... defaultConfig { ... versionCode = 2 versionName = "1.1" } productFlavors { create("demo") { ... versionName = "1.1-demo" } create("full") { ... } } }
W bloku defaultConfig {}
tego przykładu funkcja
Wartość versionCode
oznacza, że bieżący plik APK zawiera
drugą wersję, a ciąg versionName
określa
będzie widoczna dla użytkowników jako wersja 1.1. Ten plik zawiera również 2 rodzaje produktów:
„demo” i „pełny”. Ponieważ „demonstracja” typ produktu określa versionName
jako
„1.1-demo”, „demo” kompilacja używa wartości versionName
zamiast wartości domyślnej.
Pełny blok smaku produktu nie definiuje atrybutu versionName
, więc to
korzysta z domyślnej wartości „1.1”.
Uwaga: jeśli Twoja aplikacja definiuje jej wersję bezpośrednio w parametrze
<manifest>
, wartości wersji w kompilacji Gradle.
zastępują ustawienia w pliku manifestu. Ponadto określenie tych
w plikach kompilacji Gradle pozwalają określić różne wartości
różne wersje Twojej aplikacji. Większa elastyczność i unikanie
potencjalne zastąpienie po scaleniu pliku manifestu, usuń je
z elementu <manifest>
i określić
ustawień wersji w plikach kompilacji Gradle.
Platforma Androida udostępnia interfejs API, który umożliwia wysyłanie zapytań do systemu
. Aby uzyskać informacje o wersji,
użyj
Metoda
PackageManager.getPackageInfo(java.lang.String, int)
.
Określanie wymagań dotyczących poziomu interfejsu API
Jeśli Twoja aplikacja wymaga określonej minimalnej wersji Androida
platformy, możesz określić to wymaganie dotyczące wersji jako ustawienia na poziomie interfejsu API
w pliku build.gradle
lub build.gradle.kts
aplikacji. Podczas tworzenia
te ustawienia zostaną scalone w pliku manifestu aplikacji. Określanie poziomu interfejsu API
zgodnie z wymaganiami
określającymi, że aplikację można zainstalować tylko na urządzeniach,
na zgodnej wersji platformy Androida.
Uwaga: jeśli określasz wymagania dotyczące poziomu interfejsu API bezpośrednio w sekcji
pliku manifestu aplikacji, odpowiednie ustawienia w plikach kompilacji
zastąpią ustawienia w pliku manifestu. Ponadto określenie tych
w plikach kompilacji Gradle pozwalają określić różne wartości
różne wersje Twojej aplikacji. Większa elastyczność i unikanie
potencjalne zastąpienie po scaleniu pliku manifestu, usuń je
z elementu <uses-sdk>
i zdefiniuj swój interfejs API
ustawień poziomu w plikach kompilacji Gradle.
Dostępne są 2 ustawienia poziomu interfejsu API:
minSdk
– minimalna wersja platformy Androida, na której będzie działać aplikacja, identyfikator poziomu interfejsu API platformy.targetSdk
– poziom interfejsu API na których działa aplikacja. W niektórych przypadkach umożliwia to do używania elementów manifestu lub zachowań zdefiniowanych w środowisku docelowym poziom interfejsu API, a nie tylko używanie określonych dla minimalnego poziomu interfejsu API.
Aby określić domyślne wymagania dotyczące poziomu interfejsu API w: build.gradle
lub
build.gradle.kts
, dodaj co najmniej jedno ustawienie poziomu interfejsu API do
Blok defaultConfig{}
zagnieżdżony w bloku android {}
. Dostępne opcje
możesz też zastąpić te domyślne wartości dla różnych
swojej aplikacji, dodając ustawienia do typów kompilacji lub smaków produktów.
Ten plik określa wartość domyślną
Ustawienia minSdk
i targetSdk
w
defaultConfig {}
– blokowanie i zastępowanie: minSdk
dla jednego smaku produktu:
Odlotowe
android { ... defaultConfig { ... minSdk 21 targetSdk 33 } productFlavors { main { ... } afterNougat { ... minSdk 24 } } }
Kotlin
android { ... defaultConfig { ... minSdk = 21 targetSdk = 33 } productFlavors { create("main") { ... } create("afterNougat") { ... minSdk = 24 } } }
Przygotowując się do zainstalowania aplikacji, system sprawdza wartość
te ustawienia i porównuje je z wersją systemową. Jeśli
Wartość minSdk
jest większa niż wersja systemu, wartość atrybutu
uniemożliwia zainstalowanie aplikacji.
Jeśli nie określisz tych ustawień, system zakłada, że aplikacja jest
zgodne ze wszystkimi wersjami platformy. Odpowiada to ustawieniu minSdk
na
1
Więcej informacji znajdziesz w artykule Co to jest poziom API?. Informacje o ustawieniach kompilacji Gradle znajdziesz w artykule Konfigurowanie wariantów kompilacji.