Bu sayfada NDK'ya dahil olan kitaplıklara genel bir bakış, NDK API referansının ilgili bölümlerinin bağlantıları ve bunların nerede bulunduğu kılavuzlar sunulmaktadır.
Yerel API'leri kullanma
NDK'nın sağladığı kitaplığı iki adımda kullanabilirsiniz:
Derleme sistemine kitaplığa karşı bağlantı vermesini söyleyin.
ndk-build kullanıyorsanız: Kitaplığı, Android.mk dosyanızdaki
LOCAL_LDLIBS
klasörüne ekleyin. Baştakilib
öğesini çıkarıp-l
dediğinizi unutmayın. Örneğin,libfoo
velibbar
ile bağlantı oluşturmak için şunu yazarsınız:makefile LOCAL_LDLIBS := -lfoo -lbar
LOCAL_LDLIBS
hakkında daha fazla bilgi için Android.mk dokümanları dokümanlarına bakın.CMake kullanıyorsanız: Studio'nun NDK API'leri ekleme belgelerindeki talimatları uygulayın.
#include
.
Çekirdek C/C++
C kitaplığı
<stdlib.h>
ve <stdio.h>
gibi standart C11 kitaplık başlıkları her zamanki gibi kullanılabilir.
Android'de, Linux'un aksine ayrı libpthread
veya librt
kitaplığı olmadığını unutmayın. Bu işlev, doğrudan libc
içinde yer alır ve bunun açıkça bağlanması gerekmez.
Matematik işlevleri için ayrı bir libm
vardır (normal Unix geleneğine göre) ancak libc
gibi bu da derleme sistemleri tarafından otomatik olarak bağlanır.
<dlfcn.h>
ürününde dlopen(3) ve dlsym(3) gibi dinamik bağlayıcı işlevi kullanılabilir ancak libdl
ile açıkça bağlantı oluşturmanız gerekir.
Kitaplık: libc
/ libm
/ libdl
C++ kitaplığı
C++17 desteği mevcuttur. C++ kitaplığı desteği hakkında daha fazla bilgi için C++ kitaplığı desteği sayfasına bakın.
Günlük kaydı
<android/log.h>
, logcat'e giriş yapmak için API'ler içerir.
API düzeyi 3'ten itibaren kullanılabilir.
Kitaplık: liblog
Referans: Logging
İz
Yerel izleme API'si <android/trace.h>
, Java programlama dilindeki android.os.Trace
sınıfının yerel eşdeğerini sağlar. Bu API, izleme etkinliklerini sistem izleme arabelleğine yazarak kodunuzdaki adlandırılmış çalışma birimlerini izleyebilmenizi sağlar. Daha sonra Systrace aracını kullanarak izleme etkinliklerini toplayıp analiz edebilirsiniz.
API düzeyi 23'ten itibaren kullanılabilir.
Kitaplık: libandroid
Kılavuz: Yerel İzleme
zlib sıkıştırma
<zlib.h>
kodunu ekleyerek ve libz
ile bağlantı oluşturarak Zlib sıkıştırma kitaplığını kullanabilirsiniz.
NDK, yayın sırasında her zaman en son zlib başlık dosyalarını içerir ve statik bağlantı için NDK'ya dahil edilen libz.a
her zaman aynı sürümdür. Ancak dinamik bağlantı için libz.so
, cihazdan gelir ve bu cihazda yayınlanmış olan sürüm olabilir. Özellikle bu durum, oluşturduğunuz başlıkların cihazdaki zlib sürümüyle eşleşmediği anlamına gelir. Bu nedenle, özellikle uygulama ayrıntılarıyla ilgili varsayımda bulunmaya karşı verilen olağan uyarılar burada geçerlidir. Genel API ile ilgili herhangi bir sorundan haberdar değiliz ancak özellikle struct düzeni zaman içinde değişti ve muhtemelen değişmeye devam edecek. Sonraki zlib sürümlerindeki yeni API'nin, API'den önceki OS sürümlerinde elbette kullanılamayacağını unutmayın. Her zaman libz.so
yerine statik libz.a
kullanarak tüm bu sorunlardan kaçınmak (APK boyutunun artması pahasına) mümkündür.
API düzeyi 3'ten itibaren kullanılabilir (ancak yukarıdaki nota bakın).
Kitaplık: libz
Görseller
OpenGL ES 1.0 - 3.2
Standart OpenGL ES 1.x üstbilgileri (<GLES/gl.h>
ve <GLES/glext.h>
), 2.0 üst bilgileri (<GLES2/gl2.h>
ve <GLES2/gl2ext.h>
), 3.0 üst bilgileri (<GLES3/gl3.h>
ve <GLES3/gl3ext.h>
), 3.1 üst bilgileri (<GLES3/gl31.h>
ve <GLES3/gl3ext.h>
) ve 3.2 üst bilgileri (<GLES3/gl32.h>
ve <GLES3/gl3ext.h>
), OpenGL ES için gerekli bildirimleri içerir.
OpenGL ES 1.x kullanmak için yerel modülünüzü libGLESv1_CM
hizmetine bağlayın.
OpenGL ES 2.0 kullanmak için yerel modülünüzü libGLESv2
hizmetine bağlayın.
OpenGL ES 3.x kullanmak için yerel modülünüzü libGLESv3
hizmetine bağlayın.
Tüm Android tabanlı cihazlar OpenGL ES 1.0 ve 2.0'ı destekler.
Yalnızca gerekli GPU'ya sahip Android cihazlar OpenGL ES'nin sonraki sürümlerini tam olarak destekler, ancak kitaplıklar kullanıma sunuldukları API düzeyini destekleyen tüm cihazlarda bulunur. Kitaplıklarla bağlantı kurmak güvenlidir, ancak mevcut cihazın ihtiyaç duyduğu özellikleri destekleyip desteklemediğini belirlemek için bir uygulamanın OpenGL ES sürüm dizesini ve uzantı dizesini sorgulaması gerekir. Bu sorgunun nasıl gerçekleştirileceği hakkında bilgi için OpenGL spesifikasyonundaki glGetString()
açıklamasına bakın.
Ayrıca, ihtiyacınız olan OpenGL ES sürümünü belirtmek için manifest dosyanıza bir <uses-feature>
etiketi eklemeniz gerekir.
OpenGL ES 1.0, API düzeyi 4'ten itibaren kullanılabilmektedir.
OpenGL ES 2.0, API düzeyi 5'ten itibaren kullanılabilir.
OpenGL ES 3.0, API düzeyi 18'den itibaren kullanılabilir.
OpenGL ES 3.1, API düzeyi 21'den itibaren kullanılabilir.
OpenGL ES 3.2, API düzeyi 24'ten itibaren kullanılabilir.
EG
EGL, OpenGL ES bağlamlarını ve yüzeylerini ayırmak ve yönetmek için <EGL/egl.h>
ve <EGL/eglext.h>
başlıkları aracılığıyla yerel bir platform arayüzü sunar.
EGL, yerel koddan şu işlemleri gerçekleştirmenize olanak tanır:
- Desteklenen EGL yapılandırmalarını listeleyin.
- OpenGL ES yüzeylerini ayırın ve serbest bırakın.
- OpenGL ES bağlamlarını oluşturun ve silin.
- Yüzeyleri değiştirin veya çevirin.
API düzeyi 24 sayesinde EGL_KHR_mutable_render_buffer
, ANDROID_create_native_client_buffer
ve ANDROID_front_buffer_auto_refresh
uzantıları için destek eklendi.
API düzeyi 9'dan itibaren kullanılabilir.
Kitaplık: libEGL
Kılavuz: EGL Yerel Platform Arayüzü
Vulkan
Vulkan, yüksek performanslı 3D grafik oluşturma için kullanılan düşük genel giderli, platformlar arası bir API'dir. Vulkan, Khronos Grubu tarafından yönetilen
bir açık standarttır. Standart <vulkan/vulkan.h>
üst bilgi dosyası, kodunuzdan Vulkan oluşturma çağrıları gerçekleştirmek için gereken bildirimleri içerir.
Kod örnekleri için GitHub'daki LunarG VulkanSamples ve android-vulkan-tutorials projelerini inceleyin.
Vulkan kitaplığı, API 24 veya sonraki sürümleri destekleyen tüm cihazlarda mevcuttur ancak uygulamalar çalışma zamanında gerekli GPU donanım desteğinin mevcut olup olmadığını kontrol etmelidir. Vulkan desteği olmayan cihazlar, vkEnumeratePhysicalDevices
'ten sıfır cihaz döndürür.
API düzeyi 24'ten itibaren kullanılabilir.
Kitaplık: libvulkan
Kılavuz: Vulkangraphic API kılavuzu
Bit eşlemler
libjnigraphics
kitaplığı, Java Bitmap
nesnelerinin piksel arabelleklerine erişime izin veren API'yi gösterir. İş akışı aşağıdaki gibidir:
Belirli bir bit eşlem tutma yeri hakkında genişlik ve yükseklik gibi bilgileri almak için
AndroidBitmap_getInfo()
işlevini çağırın.Piksel arabelleğini kilitlemek ve buna işaretçi almak için
AndroidBitmap_lockPixels()
yöntemini çağırın. Bunu yapmak, uygulamaAndroidBitmap_unlockPixels()
çağırana kadar piksellerin hareket etmemesini sağlar.Piksel arabelleğini piksel biçimine, genişliğine ve diğer özelliklerine uygun şekilde değiştirin.
Arabelleğin kilidini açmak için
AndroidBitmap_unlockPixels()
numaralı telefonu arayın.
API düzeyi 8'den itibaren kullanılabilir.
Kitaplık: libjnigraphics
Referans: Bitmap API referansı
Senkronizasyon API'si
API düzeyi 26'dan itibaren kullanılabilir.
Kitaplık: libsync
Referans: Sync API referansı
Kamera
Yerel kamera API'leri, ayrıntılı fotoğraf çekme ve işleme işlemleri gerçekleştirir. Java Camera2 API'sinin aksine yerel kamera API'si, kullanımdan kaldırılan kamera HAL 1.0 uygulamalarını desteklemez (yani yerel kamera API'sindeki mevcut kamera listesinde ESKİ donanım seviyesindeki kamera cihazları listelenmez).
API düzeyi 24'ten itibaren kullanılabilir.
Kitaplık: libcamera2ndk
Referans: Kamera API referansı
Medya
Libmediandk
Media API'leri MediaExtractor
, MediaCodec
ve diğer ilgili Java API'lerine benzer alt düzey yerel arayüzler sağlar.
Kitaplık: libmediandk
Referans: Media API referansı
OpenMAX AL
Android yerel multimedya işleme, Khronos Group OpenMAX AL 1.0.1 API'sini temel alır.
Standart OpenMAX AL başlıkları <OMXAL/OpenMAXAL.h>
ve <OMXAL/OpenMAXAL_Platform.h>
, Android'in yerel tarafında multimedya çıkışı gerçekleştirmek için gerekli bildirimleri içerir.
OpenMAX AL'nin NDK dağıtımı da Android'e özel uzantılar sağlar.
Bu uzantılar hakkında bilgi edinmek için <OMXAL/OpenMAXAL_Android.h>
sayfasındaki yorumlara bakın.
API düzeyi 14'ten itibaren kullanılabilir.
Kitaplık: libOpenMAXAL
Android yerel uygulama API'leri
Daha fazla bilgi için Android NDK API referansı belgelerine bakın.
API'ler şunları içerir:
- Öğe
- Koreograf
- Yapılandırma
- Giriş
- Döngü
- Yerel Etkinlik
- Yerel Donanım Arabellekleri
- Yerel Pencere
- Bellek
- Ağ Oluşturma
- Sensör
- Depolama
- YüzeyDokusu
Kitaplık: libandroid
Kitaplık: Daha yeni Yerel Pencere işlevleri için libnativewindow
Tam referans: Android NDK API referansı
Donanım Arabelleği API'leri
İşlemler arası arabellek yönetimi için kendi ardışık düzenlerinizi oluşturmanıza olanak tanıyan iki yerel API vardır.
Yerel donanım arabellek API'si <android/hardware_buffer.h>
, işlemler arası arabellek yönetimi için kendi ardışık düzenlerinizi oluşturmak üzere doğrudan arabellek tahsis etmenize olanak tanır.
AHardwareBuffer
tahsis edebilir ve eglGetNativeClientBufferANDROID
uzantısı üzerinden EGLClientBuffer
kaynak türü elde etmek için kullanabilirsiniz. Bu arabelleği eglCreateImageKHR
'e ileterek EGLImage
kaynak türü oluşturabilirsiniz. Kaynak türü, desteklenen cihazlarda glEGLImageTargetTexture2DOES
aracılığıyla bir dokuya bağlanabilir. Bu, çapraz işlemlerde paylaşılabilecek dokular oluşturmak için yararlı olabilir.
Yerel donanım arabelleği JNI API (<android/hardware_buffer_jni.h>
), Parcelable olan ve böylece iki farklı işlem arasında aktarılabilen bir HardwareBuffer
nesnesi elde etmenizi sağlar. Bu, uygulamanıza dahili Android API'lerine erişmeden işlemler arasında kendi arabellek sıranızı oluşturma gibi SurfaceFlinger için benzer beceriler sağlar.
Ses
Ses
AAudio, şu anda desteklenen yerel ses API'sidir. OpenSL ES'nin yerini almıştır ve düşük gecikmeli ses gerektiren yüksek performanslı ses uygulamaları için daha iyi destek sağlar.
API düzeyi 26'dan itibaren kullanılabilir.
Kitaplık: libaaudio
Kılavuz: AAudio API kılavuzu
Referans: AAudio API referansı
OpenSL İspanyolca
OpenSL ES, desteklenen başka bir yerel ses API'sidir ancak aşağıdaki Rehber'deki nota bakın.
API düzeyi 9'dan itibaren kullanılabilir. API düzeyi 14'e PCM desteği eklendi.
Kitaplık: libOpenSLES
Rehber: Android için OpenSL ES kılavuzu
Sinir Ağları API'sı
Neural Networks API (NNAPI), uygulamalara cihaz üzerinde makine öğrenimi işlemleri için donanım hızlandırma sunar. API, cihaz üzerinde model oluşturmayı, derlemeyi ve yürütmeyi destekler. Uygulamalar genellikle NNAPI'yi doğrudan kullanmaz. Bunun yerine API'nin, geliştiricilerin modellerini eğitip Android cihazlarda dağıtmasını sağlayan makine öğrenimi kitaplıkları, çerçeveler ve araçlar tarafından çağrılması amaçlanmıştır.
API düzeyi 27'den itibaren kullanılabilir.
Kitaplık: libneuralnetworks
Kılavuz: Nöral Ağlar kılavuzu
Referans: Neural Networks API referansı