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.