Wersja aplikacji

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 zakresy versionCode dla konkretnych plików APK. Więcej informacji na temat: przypisywanie wartości versionCode 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.