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 targetSdkVersion
systemem 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.