Android SDK sürümü özellikleri

Android uygulamaları, build.gradle dosyası yükleyin. Android build.gradle dokümanlarında bu bilgilerin neler olduğu açıklanır: bu özelliklerin uygulama için genel olarak anlamı vardır. Bu belgede, müşterilerin bu özellikler NDK derlemelerini etkiler.

DerlemeSdkSürümü

Bu özelliğin NDK derlemeleri üzerinde hiçbir etkisi yoktur. NDK için API kullanılabilirliği: bunun yerine minSdkVersion tarafından yönetilir. Bunun nedeni, C++ simgelerinin ilk çağrıldığında gecikmeli olarak çözümlenmek yerine kitaplık yüklenme zamanında çözüldüğünde ( yardımcı olur. Google Haritalar'da bulunmayan simgeleri minSdkVersion, işletim sistemi sürümlerinde kitaplığın yüklenmemesine neden olur çağrılıp çağrılmamasından bağımsız olarak daha yeni API'ye sahip olmamalıdır.

Yeni bir uygulama için, mevcut en yeni sürümü seçin. Mevcut bir uygulamayı güncelleyin bunu uygun olduğunda en yeni sürüme geçirebilir.

hedefSdkSürümü

Java'ya benzer şekilde, uygulamanızın targetSdkVersion öğesi çalışma zamanını değiştirebilir yerel kodun davranışı. Sistemdeki davranış değişiklikleri (mümkün olduğunda) yalnızca targetSdkVersion işletim sisteminden büyük veya ona eşit olan uygulamalara uygulanır sürümüne sahip olmanız gerekir.

Yeni bir uygulama için, mevcut en yeni sürümü seçin. Mevcut bir uygulamayı güncelleyin (compileSdkVersion güncellendikten sonra) uygun olduğunda bunu en son sürüme güncelleyin.

Uygulama geliştiriciler genellikle uygulamalarının targetSdkVersion özelliğini bilse de bu, API, hangi targetSdkVersion olduğunu bilmeyen kitaplık geliştiricileri için yararlıdır tercih etmesi gerekir.

Çalışma zamanında, şunu çağırarak bir uygulama tarafından kullanılan targetSdkVersion'ı alabilirsiniz: android_get_application_target_sdk_version(). Bu API, API'de kullanılabilir için kullanılabilir. Bu işlev aşağıdaki imzaya sahiptir:

/**
 * 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);

Diğer davranış değişiklikleri cihazın API düzeyine bağlı olabilir. API'yi edinebilirsiniz aramasıyla uygulamanızın çalıştığı cihazın düzeyi android_get_device_api_level() Bu işlev aşağıdaki imzaya sahiptir:

/**
 * 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();

maxSdkSürümü

Bu özelliğin NDK derlemeleri üzerinde hiçbir etkisi yoktur.

minSdkSürümü

build.gradle dosyanızda ayarlanan minSdkVersion, hangi API'lerin kullanılabilir (derlemenin neden farklı olduğunu anlamak için BuildSdkVersion bölümüne bakın) uygulamanızın sürümünü gösterir) ve kodunuzun çalıştırılacağı işletim sisteminin minimum sürümünü uyumlu olacaktır.

minSdkVersion, hangi özelliklerin kullanılabileceğini belirlemek için NDK tarafından kullanılır bazı en iyi uygulamalardan bahsedeceğiz. Örneğin, bu özellik hangi FORTIFY özellikler libc'de kullanılır ve ayrıca performans veya boyut iyileştirmeleri sağlayabilir (ör. GNU karmaları veya RELR) ile uyumlu olmayan ikili programlarınız için Android'in eski sürümlerini kullanır. Yeni API'ler kullanmasanız bile bu özellik kodunuzun desteklenen minimum işletim sistemi sürümü geçerli olmaya devam eder.

Yeni bir uygulama için Android Studio'nun Yeni Projesi'ndeki kullanıcı dağıtım verilerine bakın. Assistant'ta veya apilevels.com adresinde bulabilirsiniz. Şunlar arasında istediğiniz dengeyi seçin: ve bakım maliyetlerine bakmaktır. minSdkVersion değeriniz ne kadar düşük olursa eski hatalar üzerinde çalışmaya ve yedek davranışlar eklemeye o kadar fazla zaman harcarsınız bazı özellikleri kontrol edebilirsiniz.

Mevcut bir uygulama için, eski API düzeyleri mevcut olmadığında minSdkVersion yükseltin daha uzun süre dayanabilir veya kullanıcılarınız talep ediyorsa yeni bakım maliyetlerine değecek. Play Console'da en iyi uygulamaları paylaştık.

Uygulamanıza ait minSdkVersion, ön işleyen tarafından kullanılabilir __ANDROID_MIN_SDK_VERSION__ makrosu üzerinden (eski __ANDROID_API__ ancak anlamı daha açık olduğundan ilkini tercih eder. Bu makro Clang tarafından otomatik olarak tanımlanır, bu nedenle kullanmak için herhangi bir başlık eklenmesi gerekmez. Örneğin, NDK derlemeleri için bu makro her zaman tanımlıdır.