Właściwości wersji pakietu Android SDK

Aplikacje na Androida mogą ustawiać szereg właściwości wersji pakietu SDK w swoich build.gradle. Dokumentacja Androida build.gradle wyjaśnia, co Właściwości te mają wpływ na ogólną aplikację. Z tego dokumentu dowiesz się, na kompilacje NDK.

wersja kompilacjiSdkVersion

Ta właściwość nie ma wpływu na kompilacje NDK. Dostępność interfejsu API dla pakietu NDK wynosi podlega minSdkVersion. Wynika to z faktu, że symbole C++ rozwiązany w czasie wczytywania biblioteki, a nie leniwie rozpatrywany przy pierwszym wywołaniu (jak są w języku Java). Użycie symboli, które nie są dostępne minSdkVersion spowoduje, że biblioteka nie załaduje się w wersjach systemu operacyjnego, które to robią nie musi korzystać z nowszego interfejsu API, niezależnie od tego, czy zostaną one wywołane.

Aby utworzyć nową aplikację, wybierz najnowszą dostępną. W przypadku istniejącej aplikacji zaktualizuj do najnowszej wersji, kiedy jest to dogodne.

Wersja targetSdk

Podobnie jak w przypadku Javy, targetSdkVersion aplikacji może zmieniać środowisko wykonawcze jak działa kod natywny. Zmiany w działaniu systemu mają, o ile to możliwe, wyłącznie jest stosowana w aplikacjach z targetSdkVersionsystemem operacyjnym w wersji wyższej lub równej wersji, w której wprowadzono zmianę.

W przypadku nowej aplikacji wybierz najnowszą dostępną. W przypadku istniejącej aplikacji zaktualizuj do najnowszej wersji w dogodnym momencie (po zaktualizowaniu compileSdkVersion).

Deweloperzy aplikacji zwykle znają targetSdkVersion w swoich aplikacjach, jednak ten Interfejs API jest przydatny dla programistów bibliotek, którzy nie wiedzą, który element targetSdkVersion którą wybiorą użytkownicy.

Aby w czasie działania aplikacji uzyskać dostęp do danych (targetSdkVersion) używanych przez aplikację, wywołaj android_get_application_target_sdk_version() Ten interfejs API jest dostępny w interfejsie API na poziomie 24 i wyższych. Ta funkcja ma następujący podpis:

/**
 * Returns the `targetSdkVersion` of the caller, or `__ANDROID_API_FUTURE__` if
 * there is no known target SDK version (for code not running in the context of
 * an app).
 *
 * The returned values correspond to the named constants in `<android/api-level.h>`,
 * and is equivalent to the AndroidManifest.xml `targetSdkVersion`.
 *
 * See also android_get_device_api_level().
 *
 * Available since API level 24.
 */
int android_get_application_target_sdk_version() __INTRODUCED_IN(24);

Inne zmiany w działaniu mogą zależeć od poziomu interfejsu API urządzenia. Możesz pobrać interfejs API, poziomu urządzenia, na którym działa aplikacja, wywołując android_get_device_api_level() Ta funkcja ma następujący podpis:

/**
 * Returns the API level of the device we're actually running on, or -1 on failure.
 * The returned values correspond to the named constants in `<android/api-level.h>`,
 * and is equivalent to the Java `Build.VERSION.SDK_INT` API.
 *
 * See also android_get_application_target_sdk_version().
 */
int android_get_device_api_level();

wersja maxSdkVersion

Ta właściwość nie ma wpływu na kompilacje NDK.

Wersja minSdk

Zasada minSdkVersion ustawiona w pliku build.gradle określa, które interfejsy API są dostępne w momencie kompilacji (zobacz buildSdkVersion, aby zrozumieć, dlaczego występują różnice z kompilacji Java) i określa minimalną wersję systemu operacyjnego, są zgodne z.

Parametr minSdkVersion jest używany przez NDK do określenia, które funkcje mogą być używane podczas kompilowania kodu. Na przykład ta właściwość określa, która funkcja FORTIFY funkcje są używane w libc i mogą również umożliwiać zwiększenie wydajności lub rozmiaru (takich jak szyfry GNU lub RELR) do plików binarnych, które nie są zgodne z starszych wersji Androida. Nawet jeśli nie używasz żadnych nowych interfejsów API, ta właściwość nadal dotyczy minimalnej obsługiwanej wersji systemu operacyjnego Twojego kodu.

W przypadku nowej aplikacji zobacz dane dotyczące dystrybucji wśród użytkowników w nowym projekcie w Android Studio. Kreator lub na stronie apilevels.com. Wybierz równowagę między potencjalnego udziału w rynku i kosztów utrzymania. Im niższa wartość minSdkVersion, tym więcej czasu spędzisz na naprawianiu starych błędów i dodawaniu działań zastępczych. dla funkcji, które nie zostały jeszcze zaimplementowane.

W przypadku istniejącej aplikacji zwiększ minSdkVersion za każdym razem, gdy stare poziomy interfejsu API są niedostępne na dłużej lub obniżyć koszty obsługi, jeśli użytkownicy tego wymagają. nowych kosztów utrzymania. W Konsoli Play znajdziesz dane dotyczące rozpowszechnianie wśród użytkowników.

Element minSdkVersion aplikacji jest udostępniany podmiotowi przetwarzającemu dane za pomocą makra __ANDROID_MIN_SDK_VERSION__ (starsza wersja __ANDROID_API__ to identyczne, ale preferuje ten pierwszy, ponieważ jego znaczenie jest bardziej zrozumiałe). To makro jest jest definiowane automatycznie przez Clang, więc nie trzeba dodawać nagłówka, aby go użyć. Dla: NDK kompiluje, to makro jest zawsze zdefiniowane.