Bu sayfada, NDK'nın yayınlanan tüm kararlı sürümlerindeki değişiklikler hakkında bilgi verilmektedir. NDK'nın en son kararlı sürümünü veya şu anda mevcut olan herhangi bir beta sürümünü indirmek için NDK indirmeleri sayfasına bakın.
Daha kapsamlı bilgi için android-ndk-announce Google Grubu'na göz atın ve sürüm duyurularını almak için abone olun.
Android NDK r26 LTS (Eylül 2023)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün içeriklerini buradan indirebilirsiniz.
- Duyurular
-
- KitKat (API 19 ve 20) artık desteklenmemektedir.
Android NDK r25 LTS (Temmuz 2022)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün içeriklerini buradan indirebilirsiniz.
- Duyurular
-
- Android 13 API'lerini içerir.
- LLVM, LLVM 14 geliştirme sürecine dayalı olarak clang-r450784d olarak güncellendi.
Android NDK r24 (Mart 2022)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün içeriklerini buradan indirebilirsiniz.
- Duyurular
-
-
GNU Derleyici Programı (GAS) kaldırıldı.
-fno-integrated-as
ile derliyorsanız bu işareti kaldırmanız gerekir. Derlemeyi LLVM ile uyumlu hale getirme konusunda öneriler için Clang Taşıma Notları bölümüne bakın. - GDB kaldırıldı. Bunun yerine LLDB'yi kullanın. ndk-gdb'nin varsayılan olarak LLDB'yi kullandığını ve Android Studio'nun şimdiye kadar yalnızca LLDB'yi desteklediğini unutmayın.
- Jelly Bean (API 16, 17 ve 18) artık desteklenmemektedir. NDK tarafından desteklenen minimum işletim sistemi, KitKat'tır (API düzeyi 19).
- Neon olmayan cihazlar artık desteklenmiyor. Çok az sayıda çok eski cihaz Neon'u desteklemediğinden çoğu uygulama, performans iyileştirme dışında bunu fark etmez.
- RenderScript derleme desteği kaldırıldı. RenderScript, Android 12'de kullanımdan kaldırıldı. Uygulamalarınızı RenderScript'ten başka bir sisteme taşıma işlemini tamamlamadıysanız NDK r23 LTS kullanılabilir.
-
GNU Derleyici Programı (GAS) kaldırıldı.
Android NDK r23 LTS (Ağustos 2021)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
-
GNU binutil dosyaları (GNU Derleyici Programı (GAS) hariç) kaldırıldı. GAS bir sonraki sürümde kaldırılacaktır.
-fno-integrated-as
ile derliyorsanız bu işareti kaldırmanızı engelleyen bir durum varsa hataları bildirin. -
GDB desteği sona erdi. GDB bir sonraki sürümden kaldırılacaktır.
Bunun yerine LLDB'yi kullanın.
ndk-gdb
ürününün varsayılan olarak LLDB kullandığını unutmayın. - NDK r23, Neon olmayan ürünü destekleyecek son sürümdür. NDK r24'ten başlayarak, sysroot'daki armeabi-v7a kitaplıkları Neon ile oluşturulacak. Çok az sayıda çok eski cihaz Neon'u desteklemediğinden çoğu uygulama, performans iyileştirme dışında bunu fark etmez.
- Jelly Bean (API 16, 17 ve 18), bir sonraki NDK sürümünde desteklenmeyecektir. r24 için NDK tarafından desteklenen minimum işletim sistemi, KitKat'tır (API düzeyi 19).
-
GNU binutil dosyaları (GNU Derleyici Programı (GAS) hariç) kaldırıldı. GAS bir sonraki sürümde kaldırılacaktır.
Android NDK r22b (Mart 2021)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
-
GNU binutil'leri kullanımdan kaldırılmıştır ve daha sonraki bir NDK sürümünde kaldırılacaktır. GNU derleyicisinin (
as
) bunun bir parçası olduğunu unutmayın.-fno-integrated-as
ile derliyorsanız bu işareti kaldırmanızı engelleyen bir durum varsa hataları bildirin. Doğrudanas
kullanıyorsanız bunun yerineclang
kullanın. - LLD artık varsayılan bağlayıcıdır. ndk-build ve CMake araç zinciri dosyamız da llvm-ar ve llvm-strip'i kullanmaya başladı.
- ndk-gdb artık hata ayıklayıcı olarak lldb'yi kullanıyor. gdb'nin desteği sonlandırılmıştır ve gelecekteki bir sürümde kaldırılacaktır. gdb'ye geri dönmek için --no-lldb seçeneğini kullanın. Ancak lütfen lldb'yi neden kullanamadığınızı açıklayan hata bildiriminde bulunun.
-
Artık
std::filesystem
desteği de dahil. Bilinen iki sorun vardır:-
Sorun 1258:
std::filesystem::perm_options::nofollow
eski cihazlarda kullanılamayabilir. -
Sorun 1260:
std::filesystem::canonical
, eski cihazlarda var olmayan bir yol iletildiğinde yanlışlıkla başarılı olur.
-
Sorun 1258:
-
GNU binutil'leri kullanımdan kaldırılmıştır ve daha sonraki bir NDK sürümünde kaldırılacaktır. GNU derleyicisinin (
Android NDK r21e LTS (Ocak 2021)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
-
32 bit Windows artık desteklenmiyor. Bu durum, kullanıcıların büyük çoğunluğunu etkilemez. Yine de Windows'un 32 bit sürümlerinden NDK uygulamaları derlemeniz gerekiyorsa NDK r20'yi kullanmaya devam edin.
Android Geliştirici araçlarındaki bu değişiklik hakkında daha fazla bilgi için konuyla ilgili blog yayınına bakın.
-
LLD işlevi artık test edilebilir.
AOSP varsayılan olarak LLD kullanmaya geçmiştir ve NDK bunu takip edecektir (zaman çizelgesi bilinmiyor). Bağlantı oluştururken
-fuse-ld=lld
öğesini geçerek uygulamanızda LLD'yi test edin. Sorun 843'ün, llvm-strip ve llvm-objcopy'nin aksine binutils şeridi ve objcopy ile LLD kullanan derlemeleri etkileyeceğini unutmayın. -
Eski araç zinciri yükleme yolları, gelecek sürümlerde kaldırılacaktır. Bu yollar NDK r19 yılından beri kullanılmamaktadır ve NDK'da önemli miktarda yer kaplar. Kaldırılan yollar şunlardır:
- platformlar
- kaynaklar/cxx-stl
- Sysroot
- araç zincirleri (araç zincirleri/llvm hariç)
make_standalone_toolchain.py
kullanıcıları da etkilenmez (ancak bu komut dosyası 19. yüzyıldan beri gerekli değildir). Eski araç zinciri düzeninden geçiş yapma hakkında bilgi edinmek için, kullandığınız NDK sürümüyle ilgili Sistem Bakımı Derleme Kılavuzu'na bakın. - Ağustos 2019'dan itibaren APK yüklerken Play Store 64 bit desteği gerektirecek. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşımaya hemen başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
- İmzalı ve noter onaylı bir macOS uygulama paketini artık wiki'mizden ve web sitemizden indirebilirsiniz. Yalnızca paketler RPATH kullanabildiği ve noter onayından geçebileceği için macOS için geleneksel NDK paketinin noter onayı olamayacağını unutmayın. Uygulama paketi, Android Studio ile uyumsuz hale gelecek düzen değişiklikleri gerektirdiğinden SDK, geleneksel paketi kullanmaya devam eder. NDK, SDK yöneticisi aracılığıyla indirildiğinde karantinaya alınmadığından Gatekeeper tarafından şu anda izin verilmektedir. SDK yöneticisi şu anda macOS için NDK'yı almanın en güvenilir yoludur.
-
Android NDK r20b (Haziran 2019)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
-
LLD işlevi artık test edilebilir.
AOSP, varsayılan olarak LLD'yi kullanmaya başlayacak ve bunu takip edecek (zaman çizelgesi bilinmiyor). Bağlantı oluştururken
-fuse-ld=lld
öğesini geçerek uygulamanızda LLD'yi test edin. - Ağustos 2019'dan itibaren APK yüklerken Play Store 64 bit desteği gerektirecek. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşımaya hemen başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
- Android Q API'leri eklendi.
-
LLD işlevi artık test edilebilir.
AOSP, varsayılan olarak LLD'yi kullanmaya başlayacak ve bunu takip edecek (zaman çizelgesi bilinmiyor). Bağlantı oluştururken
Android NDK r19c (Ocak 2019)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
-
Geliştiriciler uygulamalarını LLD ile test etmeye başlamalıdır. AOSP, varsayılan olarak LLD'yi kullanmaya başlamıştır. NDK ise bir sonraki sürümde bunu varsayılan olarak kullanacaktır. BFD ve Gold, LLD büyük bir çözümlenmemiş sorun (tahmini r21) içeren bir sürüm döngüsünden geçtikten sonra kaldırılacaktır. Bağlantı oluştururken
-fuse-ld=lld
öğesini geçerek uygulamanızda LLD'yi test edin. Not: lld, şu anda Windows'da sıkıştırılmış simgeleri desteklememektedir. Sorun 888. Clang, Windows'da sıkıştırılmış semboller de oluşturamaz ancak Darwin veya Linux'tan oluşturulan yapıları kullanırken bu sorun yaşanabilir. - Ağustos 2019'dan itibaren APK yüklerken Play Store 64 bit desteği gerektirecek. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşımaya hemen başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
-
Sorun 780:
Bağımsız araç zincirleri artık gereksizdir. Clang, binutils, sysroot ve diğer araç zinciri parçaları artık
$NDK/toolchains/llvm/prebuilt/<host-tag>
platformuna yüklenmiştir. Clang ise bunları otomatik olarak bulacaktır. API 26 ARM için bağımsız bir araç zinciri oluşturmak yerine, derleyiciyi doğrudan NDK'dan çağırın:$ $NDK/toolchains/llvm/prebuilt/
r19'da araç zinciri, derleme sistemlerinin yeni düzene uyum sağlaması için eski yola da yüklenir. Eski yollar r20'de kaldırılır./bin/armv7a-linux-androideabi26-clang++ src.cpp make_standalone_toolchain.py
komut dosyası kaldırılmayacak. Bu işlem artık gerekli değildir ve yukarıdaki bilgilerle birlikte bir uyarı verir ancak komut dosyası mevcut iş akışlarını korumak için kalır. ndk-build, CMake veya bağımsız bir araç zinciri kullanıyorsanız iş akışınızda herhangi bir değişiklik olmayacaktır. Bu değişiklik, artık Android'e özgü bazı kodları silebilmesi gereken üçüncü taraf derleme sistemlerinin sahipleri için anlamlıdır. Daha fazla bilgi için Sistem Bakımı Derleme kılavuzunu inceleyin. - ndk-depends kaldırıldı. ReLinker'ın, eski Android sürümlerinde yerel kitaplık yükleme sorunları için daha iyi bir çözüm olduğuna inanıyoruz.
- Sorun 862: Clang'a yönlendirilen GCC sarmalayıcı komut dosyaları, yerine geçecek kadar işlevsel olmadıkları için kaldırıldı.
-
Geliştiriciler uygulamalarını LLD ile test etmeye başlamalıdır. AOSP, varsayılan olarak LLD'yi kullanmaya başlamıştır. NDK ise bir sonraki sürümde bunu varsayılan olarak kullanacaktır. BFD ve Gold, LLD büyük bir çözümlenmemiş sorun (tahmini r21) içeren bir sürüm döngüsünden geçtikten sonra kaldırılacaktır. Bağlantı oluştururken
Android NDK r18b (Eylül 2018)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
- GCC kaldırıldı.
-
LLD işlevi artık test edilebilir.
AOSP, varsayılan olarak LLD'yi kullanmaya başlayacak ve bunu takip edecek (zaman çizelgesi bilinmiyor). Bağlantı oluştururken
-fuse-ld=lld
öğesini geçerek uygulamanızda LLD'yi test edin. - gnustl, gabi++ ve stlport kaldırıldı.
- ICS (android-14 ve android-15) desteği kaldırılmıştır. Yürütülebilir dosya kullanan uygulamaların artık hem PIE hem de PIE olmayan bir yürütülebilir dosya sağlaması gerekmiyor.
- Ağustos 2019'dan itibaren APK yüklerken Play Store 64 bit desteği gerektirecek. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşımaya hemen başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
Android NDK r17c (Haziran 2018)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
- GCC artık desteklenmiyor. NDK r18'de kaldırılacaktır.
-
libc++ artık CMake ve bağımsız araç zincirleri için varsayılan STL'dir. Manuel olarak farklı bir STL seçtiyseniz
libc++
platformuna geçmenizi kesinlikle öneririz. ndk-build ürününün varsayılan olarak STL olmadığını unutmayın. Daha fazla bilgi için bu blog yayınına göz atın. - gnustl ve stlport kullanımdan kaldırılmıştır ve NDK r18'de kaldırılacaktır.
- ARMv5 (armeabi), MIPS ve MIPS64 desteği kaldırılmıştır. Bu ABI'lerden herhangi birini oluşturmaya çalışırsanız hata oluşur.
- ICS (android-14 ve android-15) desteği r18'den kaldırılacaktır.
- Ağustos 2019'dan itibaren APK yüklerken Play Store 64 bit desteği gerektirecek. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşımaya hemen başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
Android NDK r16b (Aralık 2017)
Değişiklik günlüğü- İndirilenler
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
- Kullanımdan kaldırılan başlıklar kaldırıldı. Birleştirilmiş Üstbilgiler artık sadece "Üstbilgiler" olmuştur. Taşıma ipuçları için Birleştirilmiş Üstbilgiler Taşıma Notları sayfasına göz atın.
- GCC artık desteklenmiyor. Henüz NDK'dan kaldırılmayacak ancak artık geri bağlantı almayacak. gnustl'ın bazı bölümleri hâlâ Clang ile uyumlu olmadığından libc++ varsayılan olacak kadar kararlı hale gelene kadar kaldırılamaz. r18'deki diğer STL'ler kaldırıldığında bu kod da kaldırılacaktır.
libc++
beta sürümünden çıktı ve NDK'da tercih edilen STL oldu. r17'den itibarenlibc++
, CMake ve bağımsız araç zincirleri için varsayılan STL'dir. Manuel olarak farklı bir STL seçtiysenizlibc++
platformuna geçmenizi kesinlikle öneririz. Daha fazla bilgi için bu blog yayınına göz atın.- ARM5 (armeabi), MIPS ve MIPS64 desteği kullanımdan kaldırılmıştır. Bu uygulamalar artık ndk-build ile varsayılan olarak derlenmez, ancak açıkça adlandırılırsa yine oluşturulabilir ve "all", "all32" ve "all64" tarafından dahil edilir. Bunların her birine yönelik destek r17'de kaldırıldı. Bu ABI'lerden herhangi birini hedeflerseniz hem CMake hem de ndk-build uyarı verir.
- API'ler
-
Android 8.1 için yerel API'ler eklendi. Bu API'ler hakkında daha fazla bilgi edinmek için Yerel API'lere genel bakış konusuna bakın.
Bu sürümdeki yenilikler ve değişiklikler hakkında daha fazla bilgi için bu değişiklik günlüğünü inceleyin.
Android NDK r15c (Temmuz 2017)
Değişiklik günlüğü- İndirilenler
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
- Birleştirilmiş üstbilgiler varsayılan olarak etkindir. Bu üst bilgileri nasıl kullanacağınızı öğrenmek için Birleştirilmiş Üstbilgiler bölümüne bakın.
- GCC artık desteklenmiyor. Henüz NDK'dan kaldırılmadı ancak artık geri bağlantı almıyor. Bazı bölümleri Clang ile hâlâ uyumsuz olduğundan libc++ varsayılan olacak kadar dengeli hale gelene kadar kaldırılamaz.
- Android 2.3 (
android-9
) artık desteklenmiyor. NDK'daki minimum API düzeyi hedefi artık Android 4.0'dır (android-14
).APP_PLATFORM
değerinizandroid-14
değerinden daha düşük bir değere ayarlanırsa bunun yerineandroid-14
kullanılır. - NDK'da CMake artık x86 ve x86-64 mimarilerinde çalışmak üzere YASM'de yazılmış derleme kodu derlemeyi destekliyor. Daha fazla bilgi edinmek için Derleme kodu derleme bölümüne bakın.
Not: Kullanımdan kaldırılan başlıklar, gelecekteki bir sürümde kaldırılacaktır. Bu üst bilgilerle ilgili herhangi bir sorunla karşılaşırsanız lütfen bir hata kaydı oluşturun.
Taşıma ipuçları için birleştirilmiş üstbilgi taşıma notlarına bakın.
- API'ler
-
Android 8.0 için yerel API'ler eklendi. Bu API'ler hakkında daha fazla bilgi edinmek için Yerel API'lere genel bakış sayfasını inceleyin.
Bu sürümdeki yenilikler ve değişiklikler hakkında daha fazla bilgi için bu değişiklik günlüğünü inceleyin.
Android NDK r14b (Mart 2017)
Değişiklik günlüğü- İndirilenler
- Bu sürümü buradan indirebilirsiniz.
- Duyurular
-
- Birleştirilmiş başlıklar: Bu sürümde, Android platformuyla senkronize edilip her zaman güncel ve doğru tutulan platform başlıkları sunulmuştur. Yalnızca başlıkla ilgili hata düzeltmeleri artık tüm API seviyelerini etkiliyor. Birleştirilmiş üst bilgilerin kullanıma sunulmasıyla önceki NDK sürümlerindeki tutarsızlıklar düzeltilir. Örneğin:
- M ve N başlıkları aslında L için olan başlıklardı.
- Üstbilgilerdeki işlev bildirimleri, platform düzeyleriyle doğru şekilde eşleşmedi. Başlıklar var olmayan işlevleri bildiriyor veya kullanılabilir işlevleri bildiremedi.
- Eski API düzeylerinin bazılarında, yeni API düzeylerinde bulunan eksik veya yanlış sabit değerler vardı.
Bu yeni birleştirilmiş üstbilgiler varsayılan olarak etkin değildir. Bu üst bilgileri nasıl etkinleştirip kullanacağınızı öğrenmek için Birleştirilmiş Üstbilgiler bölümüne bakın.
- GCC'nin kullanımdan kaldırılması: Bu sürüm, etkin GCC desteğini sonlandırıyor. GCC henüz NDK'dan kaldırılmadı ancak artık geri bağlantı almayacak. gnustl'ın bazı bölümleri hâlâ Clang ile uyumlu olmadığından libc++ varsayılan olacak kadar kararlı hale gelene kadar GCC tamamen kaldırılmaz.
- Birleştirilmiş başlıklar: Bu sürümde, Android platformuyla senkronize edilip her zaman güncel ve doğru tutulan platform başlıkları sunulmuştur. Yalnızca başlıkla ilgili hata düzeltmeleri artık tüm API seviyelerini etkiliyor. Birleştirilmiş üst bilgilerin kullanıma sunulmasıyla önceki NDK sürümlerindeki tutarsızlıklar düzeltilir. Örneğin:
Bu sürümdeki yenilikler ve değişiklikler hakkında daha fazla bilgi için bu değişiklik günlüğünü inceleyin.
Android NDK r13b (Ekim 2016)
- İndirilenler
- Bu sürümün indirilen içerikleri burada arşivlenir.
- Duyurular
-
- GCC artık desteklenmiyor. Henüz NDK'dan kaldırılmayacak ancak artık geri bağlantı almayacak. gnustl'ın bazı bölümleri hâlâ Clang ile uyumlu olmadığından libc++ varsayılan olacak kadar kararlı hale gelene kadar kaldırılamaz. Bu noktadan sonra muhtemelen kaldırılır.
- Android için CPU profil aracı olan simpleperf eklendi.
- r13b
-
-
Eksik
__cxa_bad_cast
için ek düzeltmeler.
-
Eksik
- 200
-
NDK_TOOLCHAIN_VERSION
artık varsayılan olarak Clang'a ayarlanır.- libc++, r263688 olarak güncellendi.
- Güncellemeyi (neredeyse) temiz bir yukarı akışa geçirdik. Bu işlemin bir dizi hatayı kaldırması gerekir, ancak varsayılan olarak önermeden önce libandroid_support öğesini temizlememiz gerekir.
-
make-standalone-toolchain.sh
artık aracın Python sürümünü çevreleyen bir sarmalayıcıdır. Davranışla ilgili birkaç farklılık var. Ayrıntılar için kaydetme mesajına bakın. - Desteklenmeyen ABI'ler için bazı kitaplıklar (mips64r2, mips32r6, mips32r2 ve x32) kaldırılmıştır. Hâlâ hayatta takılmalar olabilir.
- ARM android-21+ için statik yürütülebilir dosya oluşturulurken bağlantı sırasında atexit hatasına neden olan crtbegin_static.o ile ilgili sorunlar çözüldü: Sorun 132
- build/cmake/android.toolchain.cmake içindeki CMake toolchain dosyası eklendi.
- Bilinen Sorunlar
-
- Bu özetin, mevcut tüm hataların kapsamlı bir listesi niteliğinde olması amaçlanmamıştır.
- libc++ ve GCC'yi kullanan bağımsız araç zincirleri çalışmaz. Bu, GCC'deki bir hata gibi görünüyor. Daha fazla bilgi için kaydetme mesajına bakın.
- Marshmallow ve N için Biyonik başlıklar ve kitaplıklar, Android-24'ün varlığına rağmen henüz kullanıma sunulmamıştır. Bu platformlar hâlâ Lollipop üst bilgileri ve kitaplıklarıdır (r11'den bir regresyon değildir).
- RenderScript araçları mevcut değil (r11'den bir regresyon değil): Sorun 7.
Android NDK r12b (Haziran 2016)
- İndirilenler
- Bu sürüme ilişkin indirilenler burada arşivlenir.
- Duyurular
ndk-build
komutu, r13'te varsayılan olarak Clang kullanır. GCC'yi sonraki bir sürümde kaldıracağız.make-standalone-toolchain.sh
komut dosyası r13'te kaldırılacak.make_standalone_toolchain.py
hizmetinin ihtiyaçlarınıza uygun olduğundan emin olun.- Sorunları GitHub'a bildirin.
ndk-gdb.py
düzeltildi. (Sorun 118)-
NdkCameraMetadataTags.h
alanını, geçersiz bir enum değeri içermeyecek şekilde güncelledik. - libc++ kullanan statik kitaplıklar için sahte uyarılara neden olan ndk-build hatası düzeltildi. Bu değişiklik hakkında daha fazla bilgi için buradaki yorumları inceleyin.
- OpenSLES başlıkları Android-24 için güncellendi.
- 200
- Armeabi-v7a-hard ABI'ye yönelik desteği kaldırdık. Daha fazla bilgi için bu açıklamaya bakın.
- GB öncesi platform düzeyleri için tüm sistem kökleri kaldırıldı. r11'de bu kişilere olan desteğimizi bıraktık, ancak bu kitleyi kaldırmayı ihmal etmedik.
- ARM32'de c++_shared'deyken istisna işleme artık çoğunlukla çalışmaktadır. Sarmalayıcı artık libc++ yerine bağlı her nesneye bağlanacak. Bu istisna işleme hakkında daha fazla bilgi için Bilinen Sorunlar sayfasına bakın.
- Varsayılan derleyici işaretleri kısaltıldı.
(Sorun 27).
- Bu değişiklikler hakkında ayrıntılı bilgi için bu değişiklik listesini inceleyin.
- Bağımsız araç zincirlerinin Python uygulaması eklendi:
build/tools/make_standalone_toolchain.py
.- Windows kullanıcılarının bu özelliği kullanmak için artık Cygwin'e ihtiyacı yok.
- r13'te bash aromasını kaldıracağız, bu nedenle şimdi yenisini deneyin.
-fno-limit-debug-info
, Clang hata ayıklama derlemeleri için varsayılan olarak etkinleştirildi. Bu değişiklik, LLDB ile hata ayıklama kabiliyetini artıracaktır.--build-id
artık varsayılan olarak etkin.- Derleme kimliği artık yerel kilitlenme raporlarında gösterilecek. Böylece, kodunuzun hangi sürümünün çalıştığını kolayca belirleyebileceksiniz.
NDK_USE_CYGPATH
artık libgcc ile ilgili sorunlara neden olmayacak. (Android Sorun 195486)-Wl
,--warn-shared-textrel
ve-Wl,--fatal-warnings
seçenekleri artık varsayılan olarak etkindir. Paylaşılan metin yerleştirmeleriniz varsa uygulamanız Android 6.0 (API düzeyi 23) veya sonraki sürümlerde yüklenemez. 64 bit uygulamalarda metin konumlarına hiçbir zaman izin verilmemiştir.- Önceden derlenmiş başlıklar daha iyi çalışır. (Sorun 14 ve Sorun 16)
- Erişilemeyen ARM (parmak olmayan) STL kitaplıkları kaldırıldı.
- Android-24'e Vulkan desteği eklendi.
- Android-24'e Choreographer API eklendi.
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
veya üzeri bir sürüme sahip cihazlar içinlibcamera2
API'leri eklendi. Daha fazla bilgi için bkz. Kamera Özellikleri.- Dil
- Clang, 3.8svn (r256229, derleme 2812033) olarak güncellendi.
- 32 bit Windows paketindeki
clang.exe
veclang++.exe
yürütülebilir dosyaları aslında 64 bittir. 32 bitlik yürütülebilir dosyanın adıclang_32.exe
.
- 32 bit Windows paketindeki
- GCC (GCC)
- ChromeOS GCC ile senkronize edilmiştir: google/gcc-4_9 r227810.
- ToT'nin (r231296) geriye dönük kapsamı temizleme yaması.
- Libatomic,
ifuncs
kullanmayacak şekilde düzeltildi. (Sorun 31) - Binutil'ler
- Sessize alınan "Erratum 843419 bulundu ve düzeltildi" bilgi mesajları.
- Büyük arm32 ikili programlarını bağlarken oluşan dahili bağlayıcı hatasını düzeltmek için
--long-plt
seçeneği kullanıma sunuldu. - AArch64 için yanlış çalışma zamanı geçersiz kılmaları düzeltildi. Bu, çok büyük DSO'lar için atlama adreslerinin yanlış hesaplanmasına neden oluyordu.
- Önceki Android sürümlerindeki dinamik bağlayıcı hatasına geçici bir çözüm bulmak için
--no-apply-dynamic
varsayılan seçeneği kullanıma sunuldu. dynamic_cast
için NDK r11 KI, Clang ile çalışmaz. x86,stlport_static
ve optimizasyonu düzelttik.- GDB
- GDB 7.11'e güncellendi. Daha fazla bilgi için GDB Haberler sayfasına bakın.
ndk-gdb.py
ile ilgili bazı hata düzeltmeleri.- Bilinen Sorunlar
- x86 ASAN hâlâ çalışmıyor. Daha fazla bilgi için bu değişiklik listesindeki tartışmaya bakın.
c++_shared
ile istisna geri alma işlemi, Android 2.3 (API düzeyi 9) veya Android 4.0 (API düzeyi 14) üzerinde ARM için hâlâ çalışmamaktadır.- Android 6.0 (API düzeyi 23) ve Android 7.0 (API düzeyi 24) için Biyonik başlıklar ve kitaplıklar, Android-24 olmasına rağmen henüz kullanıma sunulmamıştır. Bu platformlar hâlâ Android 5.0 (API düzeyi 21) başlıkları ve kitaplıklarıdır (r11'den bir regresyon değildir).
- RenderScript araçları mevcut değil (r11'den bir regresyon değil). (Sorun 7)
- Bu değişiklik günlüğü, tüm önemli hataların kapsamlı bir listesi olarak tasarlanmamıştır.
__thread
bu sefer gerçekten etkili olacak.
Android NDK r12 (Haziran 2016)
- İndirilenler
- Bu sürüme ilişkin indirilenler burada arşivlenir.
- Duyurular
ndk-build
komutu, yakında kullanıma sunulacak olan bir sürümde varsayılan olarak Clang kullanacak. GCC sonraki bir sürümde kaldırılacaktır.make-standalone-toolchain.sh
komut dosyası, yakında yayınlanacak bir sürümde kaldırılacaktır. Bu komut dosyasını kullanıyorsanız lütfen en kısa süredemake_standalone_toolchain.py
platformuna geçiş yapmayı planlayın.- 200
- Armeabi-v7a-hard ABI desteği kaldırıldı. Belgelerdeki açıklamaya bakın.
- Android 2.3 (API düzeyi 9) öncesi platform düzeyleri için tüm sistem kökleri kaldırıldı. NDK r11'de bu kişilere olan desteğimizi bıraktık, ancak gerçekten kaldırmayı ihmal etmedik.
- ARM32'de c++_shared'yi kullanırken, çoğunlukla çalışmasını sağlayacak şekilde istisna işleme güncellendi (Bilinen Sorunlar konusuna bakın). Sarmalayıcı artık libc++ yerine bağlı her nesneye bağlanmıştır.
- Varsayılan derleyici işaretleri kısaltıldı (NDK Sorunu 27). Bu güncellemenin ayrıntılarını Değişiklik 207721 bölümünde görebilirsiniz.
build/tools/make_standalone_toolchain.py
öğesine bağımsız araç zincirleri için Python uygulaması eklendi. Windows'da bu özelliği kullanmak için artık Cygwin'e ihtiyacınız yoktur. Bash aromasının yakında kullanıma sunulacak bir sürümde kaldırılacağını unutmayın. Bu nedenle lütfen yenisini test edin.- Clang hata ayıklama derlemeleri,
-fno-limit-debug-info
seçeneği varsayılan olarak etkin olacak şekilde yapılandırıldı. Bu değişiklik, LLDB ile daha iyi hata ayıklamayı sağlar. - Varsayılan seçenek olarak
--build-id
etkinleştirildi. Bu seçenek, yerel kilitlenme raporlarında bir tanımlayıcının gösterilmesine neden olur. Böylece, kodunuzun hangi sürümünün çalıştığını kolayca belirleyebilirsiniz. NDK_USE_CYGPATH
ile ilgili sorun giderilerek artık libgcc ile ilgili sorunlara neden olmayacak (Sorun 195486).- Şu seçenekler varsayılan olarak etkinleştirildi:
-Wl,--warn-shared-textrel
ve-Wl,--fatal-warnings
. Paylaşılan metin yerleştirmeleriniz varsa uygulamanız Android 6.0 (API düzeyi 23) ve sonraki sürümlerde yüklenmez. 64 bit uygulamalarda bu yapılandırmaya hiçbir zaman izin verilmediğini unutmayın. - Önceden derlenmiş başlıkların daha iyi çalışmasını sağlayan birkaç sorun düzeltildi (NDK Sorun 14, NDK Sorun 16).
- Erişilemeyen ARM (parmak olmayan) STL kitaplıkları kaldırıldı.
- Android-24'e Vulkan desteği eklendi.
- Android-24'e Choreographer API eklendi.
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
veya daha üst düzey özellikleri destekleyen cihazlar için libcamera2 API'leri eklendi. Daha fazla bilgi içinCameraCharacteristics
referansına bakın.- Dil
- Clang, 3.8svn (r256229, derleme 2812033) olarak güncellendi. 32 bit Windows paketindeki
clang.exe
veclang++.exe
yürütülebilir dosyaları aslında 64 bittir. 32 bitlik yürütülebilir dosyanın adıclang_32.exe
. __thread
, bu sefer gerçekten çalışacak şekilde düzeltildi.- GCC (GCC)
- Derleyici, ChromeOS GCC @ google/gcc-4_9 r227810 ile senkronize edildi.
- ToT'nin (r231296) geriye dönük kapsamı temizleme yaması.
libatomic
öğesinin ifuncs kullanmaması sorunu düzeltildi (NDK Sorunu 31).- Binutil'ler
- "Erratum 843419 bulundu ve düzeltildi" bilgi mesajlarının sesi kapatıldı.
- Büyük arm32 ikili programlarını bağlarken dahili bağlayıcı hatasını düzeltmek için
--long-plt
seçeneği kullanıma sunuldu. AArch64
için yanlış çalışma zamanı geçersiz kılmaları düzeltildi. Bu sorun, çok büyük dinamik paylaşılan nesneler (DSO'lar) için atlama adreslerinin yanlış hesaplanmasına neden oluyordu.- Önceki Android sürümlerindeki dinamik bağlayıcı hatasına geçici bir çözüm bulmak için
--no-apply-dynamic
varsayılan seçeneği kullanıma sunuldu. dynamic_cast
ürününün Clang, x86, stlport_static ve optimizasyon ile çalışmadığı NDK r11 ile ilgili bilinen bir sorun düzeltildi.- GDB
- GDB 7.11 sürümüne güncellendi. Bu sürüm hakkında daha fazla bilgi için GDB Haberler sayfasını inceleyin.
ndk-gdb.py
komut dosyasındaki birtakım hatalar düzeltildi.- Bilinen Sorunlar
- x86 Adres Temizleyici (ASAN) şu anda çalışmamaktadır. Daha fazla bilgi için Sorun 186276'ya bakın.
c++_shared
ile istisna geri alma işlemi, Android 2.3 (API düzeyi 9) veya Android 4.0 (API düzeyi 14) üzerinde ARM için çalışmaz.- Android 6.0 (API düzeyi 23) ve sonraki sürümler için Biyonik başlıklar ve kitaplıklar, android-24 olmasına rağmen henüz kullanıma sunulmamıştır. Bu platformlar hâlâ, NDK r11 ile tutarlı olan Android 5.0 (API düzeyi 21) başlıkları ve kitaplıklarına sahiptir.
- NDK r11 ile tutarlı olan RenderScript araçları mevcut değil. (NDK Sorun 7)
NdkCameraMetadataTags.h
başlık dosyasında, kamera meta veri etiketi enum değeriACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAP
yanlışlıkla listelenmiştir ve bir sonraki sürümde kaldırılacaktır. Bunun yerineACAMERA_STATISTICS_LENS_SHADING_MAP
değerini kullanın.
Android NDK r11c (Mart 2016)
- Değişiklikler
ndk-gdb.py
komut dosyasına ek düzeltmeler uygulandı.ndk-gdb
komutu--attach
seçeneğine isteğe bağlı bir paket adı bağımsız değişkeni eklendi. (Sorun 13)- 32 bit Windows platformu için geçersiz araç zinciri yolları düzeltildi. (Sorun 45)
ndk-which
komutu için göreli yol düzeltildi. (Sorun 29)- libgcc derleyicisi için cygpath kullanımı düzeltildi. (Android Sorun 195486)
Android NDK r11b (Mart 2016)
- 200
-
- Önemli duyurular
- Hata izleyicimizi GitHub'a taşıdık.
- Değişiklikler
ndk-gdb.py
düzeltildi. r11'de tamamen gerilemişti.- Mac için
ndk-gdb
düzeltildi. - Komut satırı araçları için daha fazla üst düzey kısayol eklendi:
ndk-depends
.ndk-gdb
.ndk-stack
.ndk-which
. Bu komut önceki sürümlerde hiç kullanılmamıştır.
__cxxabi_config.h
bulunmayan libc++ için bağımsız araç zincirleri düzeltildi.make-standalone-toolchain.sh
dilindeki--toolchain
ile ilgili yardım dokümanları düzeltildi.
- Önemli duyurular
- Dil
-
- Yazım hataları
- r11 Sürüm Notlarında bildirdiğimizin aksine
__thread
çalışmaz. Bunun nedeni, gönderdiğimiz Clang sürümünde emüle edilmiş TLS desteği ile ilgili bir hata düzeltmesinin bulunmamasıdır.
Android NDK r11 (Mart 2016)
- Dil
-
- Önemli duyurular
- Clang'a geçmenizi önemle tavsiye ederiz.
- Clang ile ilgili sorun yaşıyorsanız NDK'da Clang'a özgü sorunlar için hataları buradan bildirebilirsiniz. Daha genel Clang sorunları için bu sayfadaki talimatları uygulayarak hataları bildirin.
- Clang, 3.8svn (r243773, derleme 2481030) olarak güncellendi.
- Bu sürüm, neredeyse sade bir yukarı akış Clang'ıdır.
- Windows'un 64 bit indirilebilir NDK paketi, Clang'ın 32 bit sürümünü içerir.
- Clang'a geçmenizi önemle tavsiye ederiz.
- Eklemeler
- Clang artık emülasyonlu TLS desteği sunuyor.
- Derleyici artık pthread iş parçacığına özgü verilerle ELF TLS'yi emüle ederek
__thread
özelliğini destekliyor. - C++11
thread_local
bazı durumlarda işe yarar ancak sıra dışı olmayan yıkıcılar içeren verilerde işe yaramaz. Bunun nedeni, bu tür durumlarda libc'nin desteklenmesidir. Bu sınırlama, Android 6.0 (API düzeyi 23) veya sonraki sürümlerde çalışırken geçerli değildir. - Emülasyonlu TLS, paylaşılan bir kitaplıktan TLS değişkenlerine erişildiğinde henüz Aarch64 ile çalışmaz.
- Derleyici artık pthread iş parçacığına özgü verilerle ELF TLS'yi emüle ederek
- Clang artık emülasyonlu TLS desteği sunuyor.
- Önemli duyurular
- GCC (GCC)
-
- Önemli duyurular
- NDK'daki GCC'nin desteği sonlandırılarak yerine Clang kullanıma sunuldu.
- NDK, 5.x sürümüne geçmeyecek ve kritik olmayan geri bağlantıları kabul etmeyecektir.
- 4.9 sürümündeki yanlış derlemeler ve dahili derleyici hatalarının bakımı her örnek için ayrı ayrı gerçekleştirilir.
- Kaldırma işlemleri
- GCC 4.8 kaldırıldı. Tüm hedefler artık GCC 4.9 sürümünü kullanıyor.
- Diğer değişiklikler
- google/gcc-4_9 ile r224707 arasında senkronize edildi. Daha önce r214835 ile senkronize ediliyordu.
- 200
-
- Önemli duyurular
- Örnekler artık NDK paketine dahil değildir. Bunların yerine GitHub'da bulunur.
- Belgeler artık NDK paketinde yer almıyor. Bunun yerine Android geliştirici web sitesinde yer alır.
- Eklemeler
android-23
için yerel izleme API'si eklendi.android-23
adlı ağa yerel çoklu ağ API'si eklendi.- API düzeyi 21'den başlayarak sürüm simgeleri sağlamak için libc, m, ve dl etkinleştirildi.
- API düzeyi N'ye Vulkan başlıkları ve kitaplığı eklendi.
- Kaldırma işlemleri
_WCHAR_IS_8BIT
için destek kaldırıldı.- sed kaldırıldı.
- Mclinker kaldırıldı.
- Perl kaldırıldı.
- Bu kitaplıkların platform sürümlerinin desteklemediği tüm NDK libc, m ve dl sürümlerinden kaldırılan semboller.
- mips64r2 desteği kısmen kaldırıldı. Diğerleri gelecekte kaldırılacaktır.
- Diğer değişiklikler
- ARM bağımsız araç zincirleri varsayılan olarak arm7 olarak değiştirildi.
-target
seçeneğiniarmv5te-linux-androideabi
olarak belirterek eski davranışı geri yükleyebilirsiniz.
- Derleme sistemi, platform içerikleri için
-isystem
kullanılacak şekilde değiştirildi.- Biyonik nedenlerin artık uygulama derlemelerini bozmadığına dair uyarılar.
- Bir ikili program gabi++ aracılığıyla istisnalar attığında oluşan segfault düzeltildi. (Sorun 179410)
- libc++ platformundaki ODR sorunlarını önlemek için libc++ ürününün satır içi ad alanı
std::__ndk1
olarak değiştirildi. - Tüm libc++ kitaplıkları artık libc++abi ile geliştirilmiştir.
- Varsayılan
APP_PLATFORM
değeri Gingerbread olarak değiştirildi.- Froyo ve daha eski sürümler için destek, gelecekteki bir sürümde kaldırılacaktır.
- ARM bağımsız araç zincirleri varsayılan olarak arm7 olarak değiştirildi.
- 64 bit için gabi++
_Unwind_Exception
struct güncellendi. - CPU özelliklerine aşağıdaki özellikler eklendi:
- SSE4.1 ve SSE4.2'yi algılayın.
- x86_64 işletim sisteminde CPU özelliklerini algılayın.
- libc++abi yukarı akış r231075 olarak güncellendi.
byteswap.h
,endian.h
,sys/procfs.h
,sys/ucontext.h
,sys/user.h
veuchar.h
, ToT Bionic'ten güncellendi.sys/cdefs.h
tüm API düzeylerinde senkronize edildi.- Kol için
fegetenv and fesetenv
düzeltildi. - mips64 ve x86_64 için
crtend_*
uç işaretçi boyutunu/hizalamayı düzeltin.
- Önemli duyurular
- Binutil'ler
-
- Eklemeler
- Yeni bir seçenek eklendi:
--pic-veneer
.
- Yeni bir seçenek eklendi:
- Kaldırma işlemleri
- 32 bit Windows paketinde artık ld.gold yer almamaktadır. Bunun yerine, 64 bit Windows paketinden ld.gold alabilirsiniz.
- Değişiklikler
- Android ve ChromiumOS arasında birleştirilmiş binutils kaynağı. Bu değişiklik hakkında daha fazla bilgi için buradaki yorumları inceleyin.
- aarch64 için Gold'un güvenilirliği artırıldı. Bfd yerine altın kullanmak için bağlantı sırasında
-fuse-ld=gold
kullanın. Varsayılan ayar muhtemelen bir sonraki sürümde değiştirilecektir. - Gold ARM arka ucu için büyük ikili programlar için iyileştirilmiş bağlantı süresi (hata ayıklaması yapılabilir Chrome Tarayıcı için bağlantı süresinde% 50'ye varan azalma).
- Eklemeler
- GDB
-
- Kaldırma işlemleri
- ndk-gdb.py'nin yerini alan ndk-gdb kaldırıldı.
- Değişiklikler
- gdb, 7.10 sürümüne güncellendi.
- Gelişmiş performans.
- Hata mesajları iyileştirildi.
- Göreli proje yolları düzeltildi.
- Ctrl-C'nin arka planlı gdbserver'ı sonlandırması durduruldu.
- İyileştirilmiş Windows desteği.
- Kaldırma işlemleri
- YASM
-
- Değişiklikler
- YASM, 1.3.0 sürümüne güncellendi.
- Değişiklikler
- Bilinen sorunlar
-
- x86 ASAN şu anda çalışmıyor. Daha fazla bilgi için buradaki tartışmayı inceleyin.
- Clang, x86, stlport_static ve
-O0
değerinden daha yüksek optimizasyon seviyelerinin kombinasyonu,dynamic_cast
ile test hatalarına neden oluyor. Daha fazla bilgi için buradaki yorumları inceleyin. - İstisna işleme, ARM32'de c++_shared ile genellikle başarısız olur. Temel neden, libc++abi'nin ARM32 ve libgcc için kullandığı LLVM açıcı arasındaki uyumsuzluktur. Bu davranış, r10e'den gelen bir regresyon değildir.
Android NDK r10e (Mayıs 2015)
- İndirilenler
- Bu sürüme ilişkin indirilenler burada arşivlenir.
- Önemli değişiklikler:
-
- Cortex-A53 Erratum 843419 geçici çözümü,
aarch64-linux-android-4.9
bağlayıcıya entegre edildi. Bu geçici çözüm hakkında daha fazla bilgi için Cortex-a53erratum 843419 için geçici çözüm bölümüne bakın. - Clang 3.6 eklendi.
NDK_TOOLCHAIN_VERSION=clang
artık varsayılan olarak Clang sürümünü seçiyor. - Clang 3.4 kaldırıldı.
- GCC 4.6 kaldırıldı.
ld.gold
ürününde tüm mimariler için çoklu iş parçacıkları oluşturma desteği uygulandı. Artık çoklu iş parçacıkları desteği ile veya destek olmadan bağlantı oluşturabilir; varsayılan olarak bunu olmadan yapmak kullanılır.- Çoklu iş parçacığı işlemeyle derlemek için
--threads
seçeneğini kullanın. - Çoklu iş parçacıkları olmadan derlemek için
--no-threads
seçeneğini kullanın.
- Çoklu iş parçacığı işlemeyle derlemek için
- Tüm mimariler için GDB/gdbserver sürümü 7.7'ye yükseltildi.
- 32 bit Darwin için NDK paketi kaldırıldı.
- Cortex-A53 Erratum 843419 geçici çözümü,
- Önemli hata düzeltmeleri:
-
- Ana iş parçacığının dışında OpenMP döngüleri olduğunda meydana gelen kilitlenme düzeltildi.
- Kullanıcı
#pragma GCC optimize ("O0")
bildirdiğinde ancak komut satırında farklı bir optimizasyon düzeyine sahip olduğunda oluşan GCC 4.9 dahili derleyici hatası (ICE) düzeltildi.pragma
önceliklidir. - Şu hata mesajını içeren bir kilitlenme oluşturmak için kullanılan hata düzeltildi:
in add_stores, at var-tracking.c:6000
- LLVM otomatik vektörleştirmesinin, ARM talimat kümesinde eşdeğeri olmayan bir talimat olan
llvm.cttz.v2i64()
oluşturduğu Clang 3.5 sorunu için geçici bir çözüm uygulandı.
- Diğer hata düzeltmeleri:
-
- Aşağıdaki başlık ve kitaplık düzeltmeleri yapıldı:
media/NdkMediaDrm.h
öğesindePROPERTY_*
düzeltildi.mips64
içinsys/ucontext.h
düzeltildi.__builtin_isnan
ve__builtin_isinf
için Clang sürüm kontrolü bırakıldı.android-21/arch-mips/usr/include/asm/reg.h
veandroid-21/arch-mips64/usr/include/asm/reg.h
eklendi.- GCC 4.9'un x86 için oluşturduğu sahte dizi sınırları uyarısı düzeltildi ve GCC 4.9'un ARM için oluşturduğu dizi sınırları uyarısı yeniden etkinleştirildi. ARM uyarısı daha önce koşulsuz olarak devre dışı bırakılmıştı.
mips
vemips64
için Clang 3.5, yazılabilir bir.gcc_except_table
bölümü oluşturacak ve böylece GCC davranışını eşleştirecek şekilde düzeltildi. Bu değişiklik, aşağıdaki bağlayıcı uyarısından kaçınmanızı sağlar:.../ld: warning: creating a DT_TEXTREL in a shared object
- Clang
mips64
için derlendiğinde kilitlenmeye neden olancompiler-rt
sorunlarına yönelik düzeltme geri aktarıldı. Daha fazla bilgi için LLVM Sorunu 20098 sayfasına bakın. - ASCII olmayan yorumlarda meydana gelen Clang 3.5 kilitlenmeleri düzeltildi. (Sorun 81440)
stlport collate::compare
değeri,-1
ve1
değerlerini döndürecek şekilde düzeltildi. Önceden, rastgele imzalı sayılar döndürüyordu.- 64 bit ABI'ler için
ndk-gdb
düzeltildi. (Sorun 118300) - RenderScript için HelloComputeNDK örneğinin Android 4.4'te (Android API düzeyi 19) oluşturduğu kilitlenme düzeltildi. Daha fazla bilgi için bu sayfaya göz atın.
- GCC için
libc++ __wrap_iter
düzeltildi. Daha fazla bilgi için LLVM Sorunu 22355'e bakın. - ABI
x86_64
için.asm
desteği düzeltildi. - GCC 4.8
stlport
sorunu için geçici bir çözüm uygulandı. (Sorun 127773) - Windows'da proje yolundan sondaki
\\
dizin ayırıcısı kaldırıldı. (Sorun 160584) gradle
ürünündenndk-build.cmd
komutunu yürüterek tek bir.c
dosyası derlenirken oluşanno rule to make target
hatası düzeltildi. (Sorun 66937)- Aşağıdaki ana makine araç zincirlerinde bulunmayan
libatomic.a
velibgomp.a
kitaplıkları eklendi:aarch64-linux-android-4.9
mips64el-linux-android-4.9
mipsel-linux-android-4.9
x86_64-4.9
- Diğer değişiklikler:
-
aarch64
içinld.gold
eklendi. Varsayılan bağlayıcıld.bfd
olarak kalır.ld.gold
özelliğini açık bir şekilde etkinleştirmek içinLOCAL_LDFLAGS
veyaAPP_LDFLAGS
değişkenine-fuse-ld=gold
ekleyin.- Gelişmiş R6 desteği sağlayan
binutils-2.25
ile MIPS ve MIPS64 araç zincirlerini oluşturdu. -fstandalone-debug
(tam hata ayıklama bilgisi), Clang için varsayılan seçenek haline getirildi.- GCC 4.9, Clang 3.5 ve Clang 3.6 için ARM, AArch64, X86 ve X86_64 araç zincirlerinde
-fstack-protector
değeri-fstack-protector-strong
ile değiştirildi. - Derleme sisteminin paket adını geçersiz kılmasına izin vermek için
--package
komut satırı anahtarındk-gdb
öğesine eklendi. (Sorun 56189) -
-mno-ldc1-stc1
, MIPS için kullanımdan kaldırıldı. Bu seçenek yeni-fpxx
ve-mno-odd-spreg
seçenekleriyle veya FPXX ABI ile çalışmayabilir. cpu-features
ürününe MIPS MSA ve R6 algılama eklendi.
Android NDK r10d (Aralık 2014)
- Önemli değişiklikler:
-
- Tüm 32 bit ABI'ler için GCC 4.8 varsayılan yapıldı. GCC 4.6 kullanımdan kaldırılmıştır ve bir sonraki sürümde kaldırılacaktır. Önceki davranışı geri yüklemek için ndk-build'e
NDK_TOOLCHAIN_VERSION=4.6
ekleyin veya komut satırındamake-standalone-toolchain.sh
çalıştırırken--toolchain=arm-linux-androideabi-4.6
ekleyin. GCC 4.9, 64 bit ABI'ler için varsayılan olarak kalmaya devam eder. - Varsayılan olarak tüm x86[_64] araç zincirinin
-mstackrealign
eklemesi durduruldu. NDK araç zinciri, 16 baytlık yığın hizalaması olduğunu varsayar. Varsayılan olarak kullanılan araçlar ve seçenekler bu kuralı zorunlu kılar. Derleme kodu yazan kullanıcı, yığın hizalamasını koruduğundan ve diğer derleyicilerin de bu kurala uyduğundan emin olmalıdır. (GCC hatası 38496) - Clang 3.5 desteğine ARM ve x86 ABI'lerine Adres Temizleyici işlevi eklendi. Bu değişiklik hakkında daha fazla bilgi için Adres Temizleyici projesine bakın.
- API düzeyi 21'den itibaren, derleme sırasında
-fPIE -pie
kullanma şartı eklendi. API düzeyi 16 ve üzeri olan ndk-build, derleme sırasındaPIE
kullanır. Bu değişikliğin bir dizi etkisi vardır ve bunlar, Geliştirici Önizlemesi Sorunu 888 sayfasında ele alınmıştır. Bu sonuçlar, paylaşılan kitaplıklar için geçerli değildir.
- Tüm 32 bit ABI'ler için GCC 4.8 varsayılan yapıldı. GCC 4.6 kullanımdan kaldırılmıştır ve bir sonraki sürümde kaldırılacaktır. Önceki davranışı geri yüklemek için ndk-build'e
- Önemli hata düzeltmeleri:
-
- aarch64-linux-android-4.9 bağlayıcıdaki
A53 Errata #835769 ile ilgili daha fazla düzeltme yapıldı. Bu kapsamda,
-mfix-cortex-a53-835769
(varsayılan olarak etkindir) belirtildiğinde GCC yeni bir seçenek olan--fix-cortex-a53-835769
iletir. Daha fazla bilgi için bu binutils mesajına ve bu binutils mesajına bakın. - API düzeyi 21'de meydana gelen libc++
sscanf/vsscanf
kilitlenmesine yönelik düzeltme belgelendi. Bu düzeltme r10c'de uygulanmıştı. (Sorun 77988) -Os
belirtildiğinde GCC 4.9'da oluşan bir AutoFDO (-fauto-profile
) kilitlenmesi düzeltildi. (Sorun 77571)
- aarch64-linux-android-4.9 bağlayıcıdaki
A53 Errata #835769 ile ilgili daha fazla düzeltme yapıldı. Bu kapsamda,
- Diğer hata düzeltmeleri:
-
- Aşağıdaki başlık ve kitaplık düzeltmeleri yapıldı:
posix_memalign
, API düzeyi 16'ya eklendi. Ayrıca,stdlib.h
ile 16-19 arasındaki API düzeylerine bir prototip eklendi. (Sorun 77861)stdatomic.h
değeri, yalnızca C++11 için<atomic>
içerecek şekilde düzeltildi.- Bağımsız kullanım için şu başlıklar değiştirildi:
sys/user.h
ve API düzeyi 21 içingl2ext.h
,dlext.h
,fts.h
,sgidefs.h
. mxcsr_mask
adınımxcr_mask
olarak yeniden adlandırmak veu_ar0
veri türünü değiştirmek içinsys/user.h
değiştirildiint
olansysconf()
döndürme değeri türülong
olarak değiştirildi.LOCAL_ARM_MODE
için ndk-build'inthumb
işlemesi düzeltildi: r10d'de, ndk-build, aşağıdaki koşullardan biri geçerli olmadığı sürece varsayılan olarakLOCAL_LDFLAGS+=-mthumb
değerini ekler:LOCAL_ARM_MODE
değeriniarm
değerine eşit olarak ayarladınız.- Önceki araç zincirleriyle uyumluluğu korumak için ARM modu varsayılan olarak varsayılan olan bir hata ayıklama derlemesi yapıyorsunuz (örneğin,
android:debuggable="true"
içerenAPP_OPTIM=debug
veAndroidManifest.xml
gibi ayarlarla). (Sorun 74040) - ndk-build'deki
LOCAL_SRC_FILES
, Windows mutlak yollarını kullanacak şekilde düzeltildi. (Sorun 74333) - ndk-gdb'den bash'a özel kod kaldırıldı. (Sorun 73338)
make-standalone-toolchain.sh
öğesinden bash'a özel kod kaldırıldı. (Sorun 74145)System.loadLibrary()
geçişli bağımlılıklarının düzeltmesiyle ilgili dokümanlar revize edildi. (Sorun 41790)- 64 bit paketlerin Ubuntu 14.04 ve OS X 10.10 (Yosemite) üzerinde ayıklanmasını engelleyen bir sorun düzeltildi. (Sorun 78148)
- Clang desteğini iyileştirmek için
LOCAL_PCH
ile ilgili bir sorun düzeltildi. (Sorun 77575) - ld.gold'dan gelen "yürütülebilir yığın gerektirir" uyarısına açıklık getirildi. (Sorun 79115)
unsigned long
yerine struct user_regs_struct* olacaktır.
Android NDK r10c (Ekim 2014)
- Önemli değişiklikler:
-
- İndirme yapısında aşağıdaki değişiklikler yapıldı:
- Her paket artık kendi platformu için hem 32 hem de 64 bit başlıklar, kitaplıklar ve araçlar içeriyor.
- Hata ayıklama bilgileri içeren STL kitaplıklarının artık ayrı olarak indirilmesine gerek yoktur.
- Daha önce
Android-L
adı verilen her şey, resmi sürüm tanımı olanandroid-21
olarak değiştirildi. - GCC deposunun
google
dalına yeniden yönlendirilerek GCC 4.9 güncellendi. GCC 4.9'un yukarı akış sürümüyle arasındaki önemli farklar şunlardır: -O2
seçeneği artık döngü soyma olmadan ancak daha agresif açma ile vektörleştirmeyi etkinleştirir.- FDO ve LIPO geliştirmeleri
- Tüm barındırıcılara Clang 3.5 desteği eklendi:
NDK_TOOLCHAIN_VERSION=clang
artık Clang 3.5'i seçiyor. Unutmayın: - ARM ve x86 varsayılan olarak entegre derleyiciyi kullanır. Bu durum sorunlara neden oluyorsa çözüm olarak
-fno-integrated-as
kullanın. - Clang 3.5, GCC'nin desteklediği
-finline-functions
seçeneği gibi kullanılmayan işaretler için daha fazla uyarı verir. - Android 5.0 cihazlarda, sanal makinesi olarak ART'ı kullanan ve
art-on
seçeneğini belirleyerek ART hata ayıklama moduna girilebilir. Daha fazla bilgi için NDK'yı içeren dizindeprebuilt/common/gdb/common.setup
öğesine bakın. - Clang 3.3 desteği kaldırıldı.
- GCC 4.6 için destek sonlandırılmıştır ve gelecekteki sürümlerden kaldırılabilir.
- mclinker, Özdeş Kod Katlama ("ICF") desteğiyle 2.8 sürümüne güncellendi.
--icf
seçeneğini kullanarak ICF'yi belirtin. - x86 ve x86_64'te daha geniş
arm_neon.h
desteği, NEON yerleşik özelliklerinin yaklaşık% 93'ünü kapsama sağladı. NEON desteği hakkında daha fazla bilgi için:- NDK Programcı Kılavuzu'na (
docs/Programmers_Guide/html/
) gidip Mimariler ve CPU'lar > Neon bölümüne gidin. samples/
içinde güncellenmişhello-neon
örneğini inceleyin.- Intel'in ARM NEON'dan Intel SSE'ye taşıması hakkındaki kılavuzuna bakın.
- NDK Programcı Kılavuzu'na (
headers/libs/android-21
bölgesinde_FORTIFY_SOURCE
desteği belgelendi. Bu destek, r10'da (android-21
hâlâAndroid-L
olarak adlandırıldığında) görünüyordu ancak doküman yoktu.
Daha ayrıntılı bilgi için aşağıdaki Önemli hata düzeltmeleri bölümüne bakın.
GCC kullanarak projelerden geçiş yaparken, daha uzun vadede ne yapacağınıza karar verene kadar kullanılmayan işaretleri göz ardı etmek için
-Wno-invalid-command-line-argument
ve-Wno-unused-command-line-argument
kullanabilirsiniz. - Önemli hata düzeltmeleri:
-
- Aşağıdaki hata mesajına (Sorun 77564) neden olan, GCC4.9/aarch64 dahili bir derleyici hatası düzeltildi:
internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
- GCC4.9/arm'dan yanlış kod oluşturma işlemi düzeltildi. (Sorun 77567)
- Satır içi montaj içeren GCC4.9/mips dahili derleyici hatası düzeltildi. (Sorun 77568)
- GCC4.9/arm'ın
x = (cond) ? y : x
için oluşturduğu yanlış kod düzeltildi. (Sorun 77569)- GCC4.9/aarch64 ve Clang3.5/aarch64 için varsayılan olarak Cortex-A53 modeli (835769) geçici olarak çalışılacak şekilde düzeltildi.
-mno-fix-cortex-a53-835769
belirterek geçici çözümü devre dışı bırakın. - Diğer hata düzeltmeleri:
-
android-21
öğesine aşağıdaki başlık ve kitaplık düzeltmeleri yapıldı:- Daha fazla TV anahtar kodu eklendi:
android/keycodes.h
android/sensor.h
ürününe daha fazla sabit değer ve altı yeni sensör işlevi eklendi:ASensorManager_getDefaultSensorEx
,ASensor_getFifoMaxEventCount
,ASensor_getFifoReservedEventCount
,ASensor_getStringType
,ASensor_getReportingMode
veASensor_isWakeUpSensor
.- GCC 4.6 ile uyumluluğu iyileştirmek ve
<atomic>
başlığı için destek sağlamak üzerestdatomic.h
düzeltildi. sys/ucontext.h
vesys/user.h
tüm API düzeylerine eklendi.signal.h
başlığı artık<sys/ucontext.h>
içeriyor. Mevcutstruct ucontext
tanımını kaldırabilirsiniz.posix_memalign
API düzeyleri 17, 18 ve 19'a eklendi.- Tüm mimarilere şu işlevler eklendi:
android_set_abort_message
,posix_fadvise
,posix_fadvise64
,pthread_gettid_np
. native-media/AndroidManifest.xml
örneğine gerekli izinler eklendi. (Sorun 106640)- API düzeyi 21'e
clock_nanosleep
veclock_settime
eklendi. (Sorun 77372) - Şu semboller tüm mimarilerden kaldırıldı:
get_malloc_leak_info
,free_malloc_leak_info
,__srget
,__swbuf
,__srefill
,__swsetup
,__sdidinit
,__sflags
,__sfp
,__sinit
,__smakebuf
,__sflush
,__sread
,__swrite
,__sseek
,__sclose
,_fwalk
,__sglue
, {2,/} {2,__wait4
__get_thread
__futex_wake
__open
__get_tls
__getdents64
dlmalloc
- 64 bit mimarilerden şu işlevler kaldırıldı:
basename_r
,dirname_r
,__isthreaded
,_flush_cache
(mips64). - Şu işlev 32 bit mimarilerden kaldırıldı:
__signalfd4
. - Şu işlevlerde
size_t
olan üçüncü bağımsız değişkenin türüint
olarak değiştirildi:strtoll_l
,strtoull_l
,wcstoll_l
vewcstoull_l
. - Şu işlevler 64 bit mimariye geri yüklendi:
arc4random
,arc4random_buf
vearc4random_uniform
. cxa_*
,new
vedelete
operatörleri tekrarlibstdc++.so
klasörüne taşındı. Bu değişiklik r9d davranışını geri yükler; önceki r10 sürümleri yer tutucu dosyaları içeriyordu.
- Daha fazla TV anahtar kodu eklendi:
- Mip'ler için GCC 4.8 ve 4.9 sürümlerinde MXU desteği geri yüklendi. GCC'nin bu sürümleri MXU'yu desteklemeyen binutils-2.24 ile derlendiği için bu destek r10 ve r10b'de bulunmuyordu. Artık destekleniyor.
make-standalone-toolchain.sh
öğesindeki--toolchain=
düzeltildi, böylece artık Clang sürümünü belirten bir son ekin kullanımını düzgün bir şekilde destekliyor.- libc++/armeabi
strtod()
işlevleri düzeltildi. docs/
içinde NDK dokümanlarında düzeltmeler yapıldı.
- Diğer değişiklikler:
-
- Şu talimat grupları için ARMv8 desteğini algılamak üzere
cpu-features
geliştirildi: AES, CRC32, SHA2, SHA1 ve 64 bit PMULL/PMULL2. (Sorun 106360) - GCC 4.8, GCC 4.9 ve Clang'da kullanılabilen
*-gcc-ar
kullanmak için değiştirilmiş ndk-build. Clang,*-ar
yerine bunu belirtir. Bu ayar, iyileştirilmiş LTO desteği sağlar. - GCC derleyicisinden
include-fixed/linux/a.out.h
veinclude-fixed/linux/compiler.h
üst bilgileri kaldırıldı. (Sorun 73728) - Mac OS X'te GCC 4.8'de
-flto
ile ilgili bir sorun giderildi. Hata mesajı şu şekildeydi:
.../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so Symbol not found: _environ
build-binary.mk.
yazım hatası düzeltildi (Sorun 76992) - Şu talimat grupları için ARMv8 desteğini algılamak üzere
- Bilinen önemli sorunlar:
-
- GCC4.9'da -Os (
-fauto-profile
) belirtilmesi kilitlenmeye neden olabilir. (Sorun 77571)
- GCC4.9'da -Os (
Android NDK r10b (Eylül 2014)
- Önemli notlar:
-
- İndirilebilir paketlerdeki 512 MB boyut kısıtlaması nedeniyle aşağıdaki 32 bit öğeler, 32 bit NDK indirme paketlerinde yer almıyor. Bunun yerine, 64 bit olanlarda bulunurlar:
- Android-L başlıkları
- GCC 4.9
- Şu anda NDK tarafından sağlanan tek Renderscript desteği Android 4.4 (API düzeyi 19) yüklü 32 bit Renderscript içindir. HelloComputeNDK (tek Renderscript örneği), Renderscript (32 veya 64 bit) ve Android sürümünün başka bir kombinasyonuyla derleyemezsiniz.
- Yerel Codec'i derlemek için tüm Android-L üstbilgilerinin bulunduğu 64 bit NDK paketi kullanmanız gerekir.
- Önemli hata düzeltmeleri:
- Diğer hata düzeltmeleri:
-
stdio.h
, tüm GCC sürümlerinininclude-fixed/
dizininden kaldırıldı. (Sorun 73728.)platforms/android-L/arch-*/usr/include/linux/netfilter*/
dizinlerindeki Windows paketlerinden yinelenen üstbilgi dosyaları kaldırıldı. (Sorun 73704.)- Clang'ın HelloComputeNDK derlemesini engelleyen bir sorun düzeltildi.
- Sabit çıkış. (Sorun 66595.)
docs/
vesources/third_party/googletest/README.NDK
dokümanlarında çeşitli düzeltmeler yapıldı. (Sorun 74069.)- Android-L başlıklarında aşağıdaki düzeltmeler yapıldı:
ctype.h
vewchar.h
işlevlerine şu işlevler eklendi:dn_expand()
,grantpt()
,inet_nsap_addr()
,inet_nsap_ntoa()
,insque()
,nsdispatch()
,posix_openpt()
,__pthread_cleanup_pop()
,__pthread_cleanup_push()
,remque()
,setfsgid()
,setfsuid()
,splice()
,tee()
,twalk()
(Sorun 73719) ve 42*_l()
.cmsg_nxthdr
adlı dosya__cmsg_nxthdr
olarak yeniden adlandırıldı.__libc_malloc_dispatch
kaldırıldı.ptrace()
prototipilong ptrace(int, ...);
olarak değiştirildi.sha1.h
kaldırıldı.android_dlextinfo
,android/dlext.h
içinde uzatıldı.stdlib.h
,time.h
,wchar.h
vecomplex.h
içinde kayan veya çift tür değerleri alan veya döndüren işlevler için ek açıklamalı__NDK_FPABI__
.
- Diğer değişiklikler:
-
mipsel-linux-android-4.9
vemips64el-linux-android-4.9
güncellendi, yeni bir çoklu lib dizin düzeni uygulandı ve gdb-7.7 desteği sağlandı.cpu-features
, daha fazla arm64 özelliği algılamak üzere iyileştirildi. (Değişiklik listesi 100339.)
Android NDK r10 (Temmuz 2014)
- Önemli değişiklikler:
-
- 3 yeni ABI eklendi. Tümü 64 bit: arm64-v8a, x86_64, mips64. Unutmayın:
- GCC 4.9, 64 bit ABI'ler için varsayılan derleyicidir. Clang şu anda 3.4 sürümü.
NDK_TOOLCHAIN_VERSION=clang
arm64-v8a ve mips64'te çalışmayabilir. - Android-L, 64 bit destekli ilk seviyedir. Bu API seviyesinin yalnızca L önizlemesi için geçici olduğunu unutmayın. L sürümünde bunun yerini gerçek bir API düzeyi numarası alacaktır.
- Bu sürüm artık
APP_ABI
içinall32
veall64
ayarlarını içeriyor.APP_ABI=all32
,APP_ABI=armeabi,armeabi-v7a,x86,mips
işlevine eş değerdir.APP_ABI=all64
,APP_ABI=arm64-v8a,x86_64,mips64
işlevine eş değerdir.APP_ABI=all
tüm ABI'leri seçer.
- Android-L'deki yeni GNU libstdc++ tüm
<tr1/cmath>
öğelerini içerir Bağlayıcıdaki "çok tanımlı" hatalarından kaçınmak için, kendi matematik fonksiyonunuzu tanımlamadan önce_GLIBCXX_USE_C99_MATH_TR1
işlevini kontrol ederek bu ada sahip bir işlevin zaten olup olmadığını kontrol edin. - CPU özellikleri kitaplığı, ARMv8 çekirdeği için güncellendi. Mevcut CPU özellikleri kitaplığı, ARMv8 platformunda NEON olup olmadığını tespit edemeyebilir. Kodunuzu yeni sürümle yeniden derleyin.
- Yeni bir
platforms/android-L/
API dizini eklendi. Şunları içermektedir: - Android API düzeyi 3 (Cupcake)'den 19'a (KitKat) geçmemiş olan Bionic üstbilgileri güncellendi. L seviyesi için bu yeni sürüm AOSP ile senkronize edilecek.
- Yeni medya API'leri ve yerel Codec örneği.
- SLES/OpenSLES için güncellenmiş
Android.h
başlığı, AudioPlayer'da tek duyarlıklı, kayan noktalı ses biçimi için destek sağlar. libGLESv3.so.
için GLES 3.1 ve AEP uzantıları- GLES2 ve GLES3 başlıkları en son resmi Khronos sürümlerine güncellendi.
- 32/64 bit ABI'lere GCC 4.9 derleyicileri eklendi. GCC 4.9, daha önce de belirtildiği gibi, 64 bit ABI'ler için varsayılan (tek) derleyicidir. 32 bit ABI'ler için GCC 4.9 hâlâ varsayılan olduğundan GCC 4.9'u açıkça etkinleştirmeniz gerekir.
- ndk-build için
Application.mk
içineNDK_TOOLCHAIN_VERSION=4.9
ekleyerek veya komut satırından ortam değişkeni olarak dışa aktararak 32 bit, GCC 4.9 derlemesini etkinleştirin. - Bağımsız bir araç zinciri için
make-standalone-toolchain.sh
komut dosyasındaki--toolchain=
seçeneğini kullanın. Örneğin:--toolchain=arm-linux-androideabi-4.9.
- GDB, GCC 4.8/4.9 ve x86* sürümünde 7.6 sürümüne yükseltildi. GDB hâlâ GCC 4.6'daki (ARM ve MIPS için varsayılan) GDB-7.3.x sürümünde olduğundan ndk-gdb'yi GDB 7.6'yı seçmek üzere etkinleştirmek üzere
NDK_TOOLCHAIN_VERSION=4.8
veya4.9
ayarını yapmanız gerekir. - SSSE3 desteği sağlamak için
-mssse3
derleme seçeneği eklendi ve ABI x86 için varsayılan yapıldı (SSE3'ten yükseltme). Google tarafından yayınlanan görüntü, SSSE3 talimatlarını içermiyor. - GCC 4.8 4.8.3 sürümüne güncellendi.
- gabi++ yerine libc++abi'ye geçiş yapılarak ARM libc++ EH desteği iyileştirildi. Ayrıntılar için dokümanların "C++ Desteği" bölümüne bakın. Unutmayın:
- Yerel ayar hariç tüm testler artık Clang 3.4 ve GCC 4.8'i geçer. Daha fazla bilgi edinmek için dokümanların "C++ Desteği" bölümüne bakın.
- X86 ve MIPS libc++ için libc++ kitaplıkları hâlâ gabi++ kullanır.
- GCC 4.7 ve sonraki sürümler artık <atomic> kullanabilir.
__list_imp::_end
_ TBAA kurallarını bozduğundan<list>
kullanıyorsanız-fno-strict-aliasing
eklemeniz gerekir. (Sorun 61571.)- GCC 4.6 sürümünden itibaren LIBCXX_FORCE_REBUILD:=true artık libc++'yı yeniden derlememektedir. Yeniden oluşturmak için farklı bir derleyici kullanılması gerekir. Clang 3.3'ün test edilmediğini unutmayın.
- mclinker artık 2.7 sürümü ve aarch64 Linux desteği içeriyor.
LOCAL_PCH
tarafından belirtilen üstbilgiler için önceden derlenmiş üstbilgi desteği eklendi. (Sorun 25412).
- Önemli hata düzeltmeleri:
-
- libc++, artık
std::feof
vb. derleyecek şekilde düzeltildi (Sorun 66668). - ABI armeabi için bazı libc++ testlerinde kilitlenmelere neden olan Clang 3.3/3.4 atom kitaplığı çağrısı düzeltildi.
- Önceden derlenmiş başlıkların okunmasında meydana gelen Clang 3.4 kilitlenmeleri düzeltildi. (Sorun 66657).
- Clang 3.3/3.4
-O3
iddiası şurada düzeltildi: - Aşağıdaki Clang 3.3/3.4 kilitlenmesi düzeltildi:
llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef
(Sorun 57381).): Assertion Weights.size() >= 2 && "Need at least two branch weights!" Assertion failed: (!Fn && "cast failed but able to resolve overload expression!!"), function CheckCXXCStyleCast, file Volumes/data/ndk-toolchain/src/llvm-3.3/llvm/tools/clang/lib/Sema/SemaCast.cpp, line 2018
. (Sorun 66950). - libc++, artık
- Diğer hata düzeltmeleri:
-
- Düzeltilen başlıklar:
- 32 bit
ssize_t
,long int
yerineint
olarak düzeltildi. WCHAR_MIN
veWCHAR_MAX
, üzerinde çalıştıkları mimariye uygun işaretler alacakları şekilde düzeltildi:- X86/MIPS: imzalı.
- ARM: imzasız.
- X86/MIPS'yi varsayılan olarak imzasız yapmaya zorlamak için
-D__WCHAR_UNSIGNED__
işlevini kullanın. wchar_t
işlemini 16 bit olmaya zorlamak için-fshort-wchar
işlevini kullanın.- Mevcut olmayan simgeler 32 bit
libc.so
sürümünden kaldırıldı, Android API düzeyi 12 ve sonraki sürümler içinpread64
,pwrite64
,ftruncate64
eklendi. (Sorun 69319). Daha fazla bilgi için AOSP değişiklik listesiyle birlikte gönderilen kaydetme mesajını 94137 inceleyin. putchar
öğesinin yeniden tanımlanmasıyla ilgili GCC uyarısı düzeltildi. Uyarı mesajı:make-standalone-toolchain.sh --stl=libc++
aşağıdaki şekilde düzeltildi:- Kopya
cxxabi.h
. (Sorun 68001). - NDK yükleme dizini dışındaki dizinlerde çalışır. (Sorunlar 67690 ve 68647).
- GCC/Windows'un, yalnızca harici programlardaki üreme işlemleri için gerekli olduğunda bağımsız değişkenleri alıntılayacak şekilde düzeltildi. Bu değişiklik, 32K uzunluk sınırını aşma olasılığını azaltır.
APP_PLATFORM
ortam değişkeninin ayarlanmasını imkansız hale getiren bir sorun düzeltildi.- crazy_linker'daki
IsSystemLibrary()
uygulaması, kitaplık yolunun gerçek temel adını bulmak içinstrchr()
yerinestrrchr()
kullanacak şekilde düzeltildi. - Yerel sesin hata ayıklama modunda derleme yapamaması düzeltildi.
- Gdb'nin aşırı kayan nokta sayılarını yazdıramaması düzeltildi. (Sorun 69203).
- Clang 3.4'ün
-Wl,-shared
ile derleme yapılamaması (derleme sorunu olmayan-shared
yerine) düzeltildi. Sorun,-shared
veya-static
yoksa Clang'ın Android hedefleri için-pie
eklemesiydi. Hatalı olan bu davranış, bağlayıcının-shared
ve-pie
öğelerinin birlikte var olamayacağından şikayet etmesine neden olmuştur.
include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int);
(Değişiklik listesi 91185). - Diğer değişiklikler:
-
arm_neon.h
, x86 araç zincirine eklendi. Böylece Neon'un yaklaşık% 47'sini emüle etti. 64 bit türleri şu anda desteklenmemektedir. Daha fazla bilgi için x86 belgelerindeki ARM Neon yerleşik destek bölümüne bakın.- ARM/GOT_PREL optimizasyonu (GCC google şubesinden derlenen GCC 4.6'da sunulur) ARM GCC 4.8/4.9'a taşındı. Bu optimizasyon bazen genel değişkenlere erişirken talimat sayısını azaltır. Örnek olarak
$NDK/tests/build/b14811006-GOT_PREL-optimization/
içindeki build.sh komut dosyasını inceleyin. - STL gabi++, stlport ve libc++ için ARM sürümü eklendi. Artık hem bunu hem de Küçük Resim modunu kullanabilirler.
- Artık make-standalone-toolchain.sh komut dosyasını
--toolchain=x86_64-linux-android-4.9
ile çağırabilirsiniz. Bu,--toolchain=x86_64-4.9
ile eşdeğerdir.
Android NDK r9d (Mart 2014)
- Önemli değişiklikler:
-
- Clang 3.4 derleyicisi için destek eklendi.
NDK_TOOLCHAIN_VERSION=clang
seçeneği artık Clang 3.4'ü seçer. GCC 4.6 hâlâ varsayılan derleyicidir. APP_ABI=armeabi-v7a-hard
, ek çoklu lib seçeneği olan-mfloat-abi=hard
eklendi. Bu seçenekler ARM GCC 4.6/4.8 ve Clang 3.3/3.4 (4.8'in derleyici, bağlayıcı ve librelerini kullanır) ile kullanım içindir. Bu seçenekleri kullanırken aşağıdaki değişikliklere dikkat edin:-
ndk-build
komut dosyasını çalıştırırken armeabi-v7a hedefi için aşağıdaki seçenekleri ekleyin:TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1 TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
Oluşturulan kitaplıklibs/armeabi-v7a
öğesine kopyalanır. Beklendiği gibi davranmak için hemarmeabi-v7a
hem dearmeabi-v7a-hard
öğelerini hedef olarak belirtemezsiniz (ör. APP_ABI= satırında). Bu işlem, sayfalardan birinin yoksayılmasına neden olur.APP_ABI=all
işlevinin hâlâarmeabi armeabi-v7a x86 mips
işlevine eşdeğer olduğunu unutmayın. make-standalone-toolchain.sh
komut dosyası,/hard
dizininin altındaki ek kitaplıkları kopyalar. GCC veya Clang'ın/hard
içindeki kitaplıklara bağlanmasını sağlamak için yukarıdakiCFLAGS
veLFLAGS
öğelerini yapı dosyanıza ekleyin.- Yasm derleyicisinin yanı sıra x86 hedefleri için
LOCAL_ASMFLAGS
veEXPORT_ASMFLAGS
işaretleri eklendi.ndk-build
komut dosyası,.asm
uzantısına sahipLOCAL_SRC_FILES
derlemek içinprebuilts/*/bin/yasm*
kullanır. - MClinker,
-gc-sections
desteğini ekleyerek 2.6.0 olarak güncellendi. - Deneysel libc++ desteği eklendi (upstream r201101). Aşağıdaki adımları uygulayarak bu yeni özelliği kullanabilirsiniz:
Application.mk
içineAPP_STL := c++_static
veyaAPP_STL := c++_shared
ekleyin.LIBCXX_FORCE_REBUILD := true
aracılığıyla kaynaktan yeniden oluşturabilirsiniz- libc++ başlıkları/libreleri ile bağımsız bir araç zinciri oluşturmak için
make-standalone-toolchain.sh --stl=libc++
uygulamasını çalıştırın.
CPLUSPLUS-SUPPORT.html
sayfasını inceleyin. (Sorun 36496)
- Clang 3.4 derleyicisi için destek eklendi.
- Önemli hata düzeltmeleri:
-
- GCC 4.6/4.8 ARM EABI için beklenmedik bir istisna işleyiciden kaynaklanan yakalanmamış bir hata düzeltildi. (GCC Sorunu 59392)
- GCC 4.8, bağımlı, tür olmayan bir şablon bağımsız değişkeniyle şablonun kısmi özelliğini artık doğru şekilde çözecek şekilde düzeltildi. (GCC Sorunu 59052)
- Önceden oluşturulmuş python'a daha fazla modül eklendi (Sorun 59902):
- Mac OS X:
zlib
,bz2
,_curses
,_curses_panel
,_hashlib
,_ssl
- Linux:
zlib
,nis
,crypt
,_curses
ve_curses_panel
- Mac OS X:
- x86 ve MIPS gdbserver sorunları
event_getmsg_helper
düzeltildi. - RenderScript NDK araç zincirinde, eski cihazlar arasında uyumluluk ve C++ yansıması gibi çok sayıda sorun düzeltildi.
- Diğer hata düzeltmeleri:
-
- Başlık düzeltmeleri:
- Android API düzeyi 13 ve sonraki sürümler için
android/asset_manager.h
öğesinde eksik olan#include <sys/types.h>
düzeltildi. (Sorun 64988) - Android API düzeyi 14 ve sonraki sürümler için
android/rect_manager.h
öğesinde eksik olan#include
düzeltildi. JNICALL
JNI_OnLoad
vejni.h
adlı gruplaraJNI_OnUnload
eklendi.JNICALL
metninin__NDK_FPABI__
olarak tanımlandığını unutmayın. Daha fazla bilgi için bkz.sys/cdefs.h
.- Aşağıdaki üst bilgiler, bağımlılıklarını manuel olarak eklemeye gerek kalmadan eklenebilecek şekilde güncellendi (Sorun 64679):
android/tts.h EGL/eglext.h fts.h GLES/glext.h GLES2/gl2ext.h OMXAL/OpenMAXSL_Android.h SLES/OpenSLES_Android.h sys/prctl.h sys/utime.h
- Android API düzeyi 13 ve sonraki sürümler için
- Tüm mimariler için
sys/cachectl.h
eklendi. MIPS geliştiricileri artık#ifdef __mips__
yazmak yerine bu başlığı ekleyebilir. - kayan veya çift değer alan ya da döndüren işlevlere
__NDK_FPABI__
eklenerekplatforms/android-18/include/android/input.h
düzeltildi. - Android API düzeyi 12 ve sonraki sürümlerin 64 bit eşdeğeri olarak yanlış bir şekilde ayarlanan MIPS
struct stat
düzeltildi. Bu yanlış ayar, r9c sürümünde sunulan bir regresyondu. - Android API düzeyi 9 ve altı için
__PTHREAD_MUTEX_INIT_VALUE
,__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE
ve__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE
tanımlandı. - API 18 ve sonraki sürümler için
scalbln
,scalblnf
vescalblnl
, x86libm.so
bölümüne eklendi. sources/android/support/include/iconv.h
metninde bir yazım hatası düzeltildi. (Sorun 63806)
- Kullanıcı tanımlı bir
std::terminate()
işleyicinin çalışma fırsatı elde etmesi için gabi++std::unexpected()
öğesininstd::terminate()
yöntemini çağırması düzeltildi.std::nullptr
için gabi++ düzeltildi.- Sabit Çaydanlık ve MoreTeapot örnekleri:
- Speküler değişkenleri orta hassasiyeti kullanacak şekilde değiştirerek Tegra 2 ve 3 çipleriyle ilgili bir problem çözüldü. Yansıma gücü değerleri artık 1,0'dan küçük olabilir.
- Örnekler, ses düğmesine basıldığında yoğun içerik moduna geri yüklenip
SYSTEM_UI_FLAG_IMMERSIVE_STICKY
geçersiz hale gelecek şekilde değiştirildi. Ekran rotasyonuonSystemUiVisibilityChange
özelliğini tetiklemez ve bu nedenle, yoğun içerik modu geri yüklenmez.
- Yürütülebilir dosyaları bağlamak için
ld.bfd
kullanmak amacıyla-rpath-link=$SYSROOT/usr/lib
ve-rpath-link=$TARGET_OUT
eklenecekndk-build
komut dosyası düzeltildi. (Sorun 64266)-Bsymbolic
, tüm STL derlemelerinden kaldırıldı.python.exe
öğesine iletmek yerineSHELL
değerini ortam değişkeni olarak ayarlayarakndk-gdb-py.cmd
düzeltildi. Bu durum, ayarı yok sayar. (Sorun 63054)make-standalone-toolchain.sh
komut dosyası,--stl=stlport
seçeneğinin gabi++ başlıklarını sembolik bağlantı oluşturmak yerine kopyalayacak şekilde düzeltildi.cmd.exe
ve MinGW kabukları, cygwin tarafından oluşturulan sembolik bağlantıları anlamaz. - Başlık düzeltmeleri:
- Diğer değişiklikler:
-
- Geliştiriciler, cygwin'de önerilen
ndk-build
komut dosyası yerinendk-build.cmd
kullanmayı tercih etmeleri durumunda, daha önce yalnızcacmd.exe
kabuğunda kullanılmak üzere tasarlanan tüm*cmd
komut dosyalarına yürütme izinleri uygulandı. - Belirtilen hedef dizin yoksa kopyalama yerine taşıyarak
make-standalone-toolchain.sh
komut dosyasının hızı artırıldı.
- Geliştiriciler, cygwin'de önerilen
Android NDK r9c (Aralık 2013)
Bu, yalnızca hata düzeltme amaçlı bir sürümdür.
- Önemli hata düzeltmeleri:
-
- Yığın işaretçisinin çok erken geri yüklenmesine neden olan GCC 4.8 ARM sorunu düzeltildi. Bu sorun, çerçeve işaretçisinin yığın çerçevesindeki bir değişkene güvenilir bir şekilde erişmesini engelledi. (GCC Sorunu 58854)
- GCC 4.8 libstdc++ ile ilgili bir sorun giderildi. std::nth_element içindeki bir hata, rastgele bir segfault üreten kod oluşturulmasına neden oluyordu. (Sorun 62910)
-fuse-ld=mcld
ile cc1/cc1plus öğesindeki GCC 4.8 ICE, artık aşağıdaki hatanın oluşmaması için düzeltildi:cc1: internal compiler error: in common_handle_option, at opts.c:1774
__builtin
matematik işlevi için-mhard-float
desteği düzeltildi. STL ile-mhard-float
için düzeltmeler hakkında ayrıntılı bilgi edinmek üzere lütfen 61784 numaralı sorunu uygulayın.
- Diğer hata düzeltmeleri:
-
- Başlık düzeltmeleri:
poll.h
grubundapoll
prototipipoll(struct pollfd *, nfds_t, int);
olarak değiştirildi.- Android API düzeyleri 12 ve 19 için
libc.so
uygulamasınautimensat
eklendi. Bu kitaplıklar artık 12 ile 19 arasındaki tüm Android API düzeyleri için dahil edilmiştir. - Android API düzeyi 19 için
libc.so
uygulamasınafutimens
eklendi. - Android API düzeyi 8 ve sonraki sürümler için
time.h
'e eksik olanclock_settime()
veclock_nanosleep()
özellikleri eklendi. CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,
veCLOCK_BOOTTIME_ALARM
,time.h.
listesine eklendi- Eski
CLOCK_REALTIME_HR
veCLOCK_MONOTONIC_HR.
kaldırıldı
- Çaydanlık, MoreTeapots ve
source/android/ndk_helper
numunelerinde:- Bunları, artık armeabi-v7a için sabit şamandıra kullanacak şekilde değiştirdiler.
- Bunları, Android API düzeyi 19 ve sonraki sürümlerde yoğun içerik modunu kullanacak şekilde güncelledik.
/system/lib/libdvm.so
platformunda x86 cihazlarda kilitlenmelere neden olanCheck_ReleaseStringUTFChars
sorunu giderildi.
- NDK paketi sembolik bağlantı aracılığıyla referans verildiğinde cygwin'de meydana gelen
ndk-build
hatası düzeltildi. LOCAL_SRC_FILES
mutlak yol içerdiğindecmd.exe
pencerelerinde oluşanndk-build.cmd
hatası düzeltildi. (Sorun 69992)- Rutin, dosya adı veya satır numarası bulunamadığı için
ndk-stack
komut dosyasının bir kareyi ayrıştıramadığında bile devam etmesi düzeltildi. Bu durumlarda,??
yazdırır. - Windows-x64_64 hedefleri için
ndk-stack
yığını,stack:
bölümündepc
,eip
veyaip
içermeyen bir çizgiyle hatalı bir şekilde eşleşmeyecek şekilde düzeltildi. Örneğin:I/DEBUG ( 1151): #00 5f09db68 401f01c4 /system/lib/libc.so
- Gabi++ şu şekilde düzeltildi:
- C++ iş parçacığı-yerel nesnelerini ayırmak için Malloc() kullanmaz.
- userdebug/eng Android platformu derlemelerinde libc.debug.malloc değerinin sıfır olmadığı durumlarda gabi++'da kilitlenmeleri önler.
- Başlık düzeltmeleri:
- Diğer değişiklikler:
-
LOCAL_EXPORT_LDFLAGS
eklendi.- Seçeneklerin
ndk-build
ürününe açıkça iletildiği entegre bir derleme sisteminde kullanılmak üzereNDK_PROJECT_PATH=null
ayarı kullanıma sunuldu. Bu ayar kullanıldığındandk-build
,NDK_PROJECT_PATH.
araması yapmaz. Bu ayar, değişkenlerin NDK_PROJECT_PATH yolundan varsayılan ayarlar türetmesini de engeller. Sonuç olarak, şu değişkenler artık açık bir şekilde belirtilmelidir (varsa varsayılan değerleriyle):NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG
(isteğe bağlı, varsayılan olarak 0'dır) veApplication.mk
içinde yer alan diğerAPP_*
'ler. APP_ABI
artık virgülle ayrılmış bir listede numaralandırılabilir. Örnek:APP_ABI := "armeabi,armeabi-v7a"
-g
seçeneği kullanılarakandroid-ndk-r9c-cxx-stl-libs-with-debugging-info.zip
adlı isteğe bağlı ayrı bir pakette, hata ayıklama bilgileriyle tüm STL'yi yeniden derleyebilme olanağı sağlandı. Bu seçenek,ndk-stack
komut dosyasının STL genelinde daha iyi bir yığın dökümü sağlamasına yardımcı olur. Bu değişiklik, sadeleştirilmiş nihai dosyanın kodunu/boyutunu etkilememelidir.- Derlemede
APP_ABI
raporu almak içinhello-jni
örnekleri iyileştirildi. - Statik kitaplıklar oluşturmak için belirleyici modda
ar
aracını (-D
seçeneği) kullandılar. (Sorun 60705)
Android NDK r9b (Ekim 2013)
- Önemli değişiklikler:
-
- 13, 15, 16 ve 17 seviyelerinin eklenmesi de dahil olmak üzere 18'e kadar olan tüm Android API seviyeleri için
include/android/*h
vemath.h
güncellendi. Eklenen API'ler hakkında bilgi için Değişiklikleri 68012 ve 68014'teki kaydetme mesajlarını inceleyin. (Sorunlar 47150, 58528 ve 38423) - Renderscript bağlaması dahil olmak üzere Android API düzeyi 19 için destek eklendi.
- Mevcut armeabi-v7a ABI'ye
-mhard-float
desteği eklendi. Clang ile ilgili daha fazla bilgi ve mevcut kısıtlamalar içintests/device/hard-float/jni/Android.mk
sayfasını inceleyin. - GNU Derleyici Koleksiyonu (GCC) 4.8 sürümünden 4.8.2 sürümüne geçiş yapıldı ve rapor rengi desteği eklendi. Teşhis renklerini etkinleştirmek için
-fdiagnostics-color=auto
,-fdiagnostics-color=always,
değerini ayarlayın veya aşağıda gösterildiği gibiGCC_COLORS
öğesini dışa aktarın:GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
Daha fazla bilgi için GCC Dilden Bağımsız Seçenekler bölümüne bakın. - OpenGL ES 3.0 özelliklerini göstermek için iki yeni örnek eklendi: Teapot ve MoreTeapots. Bu örnekler, Android 4.1 (API düzeyi 16) ve sonraki sürümleri çalıştıran cihazlarda çalışır.
- GCC 4.7 ve Clang 3.2 desteği kullanımdan kaldırıldı. Bunlar bir sonraki sürümde kaldırılacaktır.
- 13, 15, 16 ve 17 seviyelerinin eklenmesi de dahil olmak üzere 18'e kadar olan tüm Android API seviyeleri için
- Önemli hata düzeltmeleri:
-
- 16 bit göreli atlama tablolarının oluşturulamamasıyla ilgili ARM GCC 4.6
thumb2
sorunu düzeltildi. (GCC Sorunu) g++.dg/cpp0x/lambda/lambda-defarg3.C
işletim sisteminde GCC 4.8 dahili derleyici hatası (ICE) düzeltildi. (62770 Değişikliği, GCC Sorunu)- Windows 32 bit
*-gdb.exe
yürütülebilir dosyalarının başlatılmaması sorunu giderildi. (Sorun 58975) - Madde işareti kitaplığı oluştururken GCC 4.8 ICE düzeltildi. Hata mesajı şöyledir:
internal compiler error: verify_flow_info failed
(Sorun 58916, GCC Sorunu) - Başlangıç kodunda geri sarma işlemi için
ARM.exidx
verilerini atlayacak şekilde değiştirilmiş GDB/ARM derlemesi ve exidx tabanlı yığın geri alma işlemini kontrol etmek için bir komut (set arm exidx-unwinding
) eklendi. (Sorun 55826) - HI ve LO kayıtlarının yanlış bir şekilde yeniden kullanılmasına neden olan Clang 3.3 MIPS derleyici sorunu düzeltildi.
dbx_reg_number
ürününde MIPS 4.7 ICE ile ilgili sorun düzeltildi. Hata mesajı şöyledir:external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
(GCC Yaması)
- 16 bit göreli atlama tablolarının oluşturulamamasıyla ilgili ARM GCC 4.6
- Diğer hata düzeltmeleri:
-
- Başlık düzeltmeleri
- ARM
WCHAR_MIN
veWCHAR_MAX
öğelerinin spesifikasyona uygun şekilde imzası kaldırılacak (X86/MIPS sürümleri imzalanmış). Eski davranışı geri yüklemek için_WCHAR_IS_ALWAYS_SIGNED
öğesini tanımlayın. (Sorun 57749) include/netinet/tcp.h
değeri,TCP_INFO
durum sıralaması içerecek şekilde düzeltildi. (Sorun 38881)cdefs_elh.h
makrosu_C_LABEL_STRING
, c++11 modu kullanılırken GCC 4.8 araç zincirinde uyarı oluşturmayı durduracak şekilde düzeltildi. (Sorun 58135, Sorun 58652)- Var olmayan
imaxabs
veimaxdiv
işlevleriinttypes.h
başlığından kaldırıldı. pthread_exit()
döndürme değerleri vepthread_self()
ile ilgili sorun düzeltildi. (Sorun 60686)bionic
üstbilgisistdlib.h
içinde zaten mevcut olan eksikmkdtemp()
işlevi eklendi.
- ARM
- Android API düzeyi 11'de Clang ile
samples/gles3jni
oluşturma sorunu düzeltildi. - MCLinker'ın, şu seçeneklerin birden fazla kez görüntülenmesine izin verecek şekilde düzeltildi:
-gc-sections
ve--eh-frame-hdr
. - MCLinker'ın
--no-warn-mismatch
seçeneğini kabul etmesi düzeltildi. - Tüm VFPv4 cihazlarının IDIV'yi desteklediğini varsaymak için
cpu-features
seçeneği değiştirildi. Bu seçenek artık IDIV'i Nexus 4 de dahil olmak üzere yalnızca beyaz listedeki cihazlara ekler. (Sorun 57637) - Etkinlik öncesi işlemlerde
android_native_app_glue.c
hatalarının hatalı bir şekilde günlüğe kaydedilmesiyle ilgili sorun düzeltildi. gabi++
sonlandırma ve beklenmeyen_handler üzerindeki tüm işlemlerin iş parçacığı güvenli olması düzeltildi.ssax-instructions
vefenv
testlerini geçebilmesi için Clang-integrated-as
seçeneğiyle ilgili bazı sorunlar düzeltildi.- GCC 4.6/4.7/4.8 derleyicisi, statik yürütülebilir dosyalar için bile bağlayıcı seçeneğini
--eh-frame-hdr
iletecek şekilde düzeltildi. Daha fazla bilgi için GCC yamasına bakın. CPU-ARCH-ABIS.html
içindeki fazladan kesme işareti düzeltildi. Daha fazla bilgi içinNDK-DEPENDS.html
inceleyin. (Sorun 60142)- Windows'da ndk-build çıktısındaki ekstra tırnak işaretleri düzeltildi. (Sorun 60649)
- ARM'ın
__atomic_fetch_add
,__atomic_fetch_sub
ve__atomic_fetch_or
gibi yerleşik atomik işlemlerini derlemek üzere Clang 3.3 düzeltildi. - Özelleştirilmiş
vfprintf
ile Clang 3.3 ICE düzeltildi. (Clang sorunu)
- Başlık düzeltmeleri
- Diğer değişiklikler:
-
- OpenMP tüm GCC derlemeleri için etkinleştirildi. Bu özelliği kullanmak için derleme ayarlarınıza aşağıdaki işaretleri ekleyin:
LOCAL_CFLAGS += -fopenmp LOCAL_LDFLAGS += -fopenmp
Kod örnekleri içintests/device/test-openmp
sayfasına bakın. ld.mcld
boyutu önemli ölçüde azaltıldı (1,5 MB'a karşılıkld.bfd
3,5 MB veld.gold
7,5 MB) ve hız yaklaşık %20 arttı.- Yalnızca C için geçerli olan seçenekleri belirtmek üzere
LOCAL_CONLYFLAGS
veAPP_CONLYFLAGS
eklendi, ancak C++ için geçerli olmayan seçenekler eklendi. MevcutLOCAL_CFLAGS
veAPP_CFLAGS
de C++ derlemesi için kullanılır (çoğu seçeneği iki kez belirtme sorununu ortadan kaldırmak için). Bu nedenle-std=gnu99
gibi seçenekler, g++ derlemelerinde uyarıyla başarısız olabilir ve clang++ derlemelerinde hata olabilir. gabi++
dizisi yardımcı işlevleri eklendi.- Değiştirilmiş GCC, yığının
__aeabi_idiv0
gibi daha önce engellenen noktaların ardından açılmasını sağlamak için tümlibgcc.a
dosyalarının-funwind-tables
ile oluşturulmasını sağlar. - MIPS GCC4.6/4.7/4.8 sürümüne yeni
-mmxu
seçeneğiyle Ingenic MXU desteği eklendi. - Genişletilmiş MIPS GCC4.6/4.7/4.8
-mldc1-sdc1
, ldxc1/sdxc1 dosyasını da kontrol etmek için kullanılır - Çılgın bağlayıcı eklendi. Daha fazla bilgi için
sources/android/crazy_linker/README.TXT
inceleyin. bitmap-plasma
değeri, 200x200 piksellik bir alan yerine tam ekrana çizim yapacak şekilde düzeltildi.- Aynı dosyalara sembolik bağlantılar oluşturarak linux ve darwin araç zinciri boyutları% 25 azaltıldı.
- OpenMP tüm GCC derlemeleri için etkinleştirildi. Bu özelliği kullanmak için derleme ayarlarınıza aşağıdaki işaretleri ekleyin:
Android NDK r9 (Temmuz 2013)
- Önemli değişiklikler:
-
- Android 4.3 (API düzeyi 18) için destek eklendi. Daha fazla bilgi için
STABLE-APIS.html
bölümüne vesamples/gles3jni/README
ile ilgili yeni kod örneklerine göz atın. - Android 4.3 (API düzeyi 18) ve sonraki sürümler tarafından desteklenen OpenGL ES 3.0 için başlıklar ve kitaplıklar eklendi.
- NDK'ya GNU Derleyici Koleksiyonu (GCC) 4.8 derleyicisi eklendi. GCC 4.6 hâlâ varsayılan sürüm olduğundan bu seçeneği açıkça etkinleştirmeniz gerekir:
ndk-build
derlemeleri içinNDK_TOOLCHAIN_VERSION=4.8
dosyasını dışa aktarın veyaApplication.mk
dosyasına ekleyin.- Bağımsız derlemeler için
make-standalone-toolchain.sh
öğesinde--toolchain=
seçeneğini kullanın. Örneğin:
--toolchain=arm-linux-androideabi-4.8
Not:
-Wunused-local-typedefs
seçeneği-Wall
tarafından etkinleştirildi.sources/cxx-stl/stlport/stlport/stl/config/features.h
, 311. satır gibi derleme zamanı iddiaları kullanıyorsanız__attribute__((unused))
eklediğinizden emin olun. Daha fazla bilgi için 55460'ı değiştirme konusuna bakın.Not: GCC 4.7 ve sonraki sürümlerde ARM derleyicileri, ARMv6 ve daha yüksek derleme hedefleri için varsayılan olarak uyumsuz erişim kodu oluşturur. Bu özelliği desteklemeyen çekirdekler için derleme yaparken
-mno-unaligned-access
derleme seçeneğini eklemeniz gerekebilir. - Clang 3.3 desteği eklendi.
NDK_TOOLCHAIN_VERSION=clang
derleme seçeneği artık varsayılan olarak Clang 3.3'ü seçiyor.Not: Hem GCC 4.4.3 hem de Clang 3.1 kullanımdan kaldırılmıştır ve bir sonraki NDK sürümünden kaldırılacaktır.
- GNU Project Debugger (GDB), python 2.7.5'i destekleyecek şekilde güncellendi.
- Windows barındırıcılarını desteklemek için MCLinker eklendi. Kullanılabilir olduğunda
ld.gold
varsayılan olduğundan MCLinker'ı etkinleştirmek içinLOCAL_LDFLAGS
veyaAPP_LDFLAGS
içinde-fuse-ld=mcld
eklemeniz gerekir. - ELF kitaplığı bağımlılıklarını yazdıran
ndk-depends
aracı eklendi. Daha fazla bilgi içinNDK-DEPENDS.html
inceleyin. (Sorun 53486)
- Android 4.3 (API düzeyi 18) için destek eklendi. Daha fazla bilgi için
- Önemli hata düzeltmeleri:
-
android_native_app_glue
içindeki olası olay işleme sorunu düzeltildi. (Sorun 41755)- NEON yükleme ve depolama talimatları VST ile VLD için yeterli hizalama oluşturmak üzere ARM/GCC-4.7 derlemesi düzeltildi. (GCC Sorunu 57271)
- Bir dize değişmez değerinde sabit negatif dizin değeri için bir GCC 4.4.3/4.6/4.7 dahili derleyici hatası (ICE) düzeltildi. (Sorun 54623)
- Bir nesne adresiyle sürekli başlatma için oluşan GCC 4.7 segmentasyon hatası düzeltildi. (Sorun 56508)
- Boost 1.52.0 kullanılırken
-O
değerleri için GCC 4.6 ARM segmentasyonu hatası düzeltildi. (Sorun 42891) libc.so
velibc.a
,wait4()
işlevini destekleyecek şekilde düzeltildi. (Sorun 19854)- x86 libc.so ve libc.a dosyaları,
clone()
işlevini içerecek şekilde güncellendi. linker.list
dosyasının boş veya kullanılmadığıLOCAL_SHORT_COMMANDS
hatası düzeltildi.- GCC MIPS derlemesi, Mac OS'te CFI yönergeleri kullanacak şekilde düzeltildi. Bu yapı olmadan
ld.mcld --eh-frame-hdr
, sıklıkla başarısız oluyor. llvm/lib/VMCore/Value.cpp
ürününde Clang 3.2 X86/MIPS dahili derleyici hatası düzeltildi. (Değişiklik 59021)- GCC 4.7 64 bit Windows derleyici kilitlenmesi düzeltildi. (Hata:
out of memory allocating 4294967280 bytes
). ndk-gdb
komut dosyası,--start
veya--launch
işlemlerinin artık GNU Hata Ayıklama Sunucusu'nu bekleyeceği şekilde güncellendi. Böylece, yürütme yolunun başlarında ayarlanan kesme noktalarını (JNI kodundaki kesme noktaları gibi) daha güvenilir şekilde isabet ettirebilir. (Sorun 41278)Not: Bu özellik jdb gerektirir ve bekleyen kesme noktaları hakkında uyarı üretir. Önceki davranışı geri yüklemek için
--nowait
seçeneğini belirleyin.- Kitaplık listesi boş olduğunda GDB kilitlenmesi düzeltildi.
bx pc
veyablx pc
Beğenme talimatını geçmiş birstepi
komutu kullanıldığında oluşan GDB kilitlenmesi düzeltildi. (Sorun 56962, Sorun 36149)- MIPS
gdbserver
hatası,DT_DEBUG
yerineDT_MIPS_RLD_MAP
araması yapacak şekilde düzeltildi. (Sorun 56586) - ndk-build komut dosyasında döngüsel bir bağımlılık düzeltildi. Örneğin: A->B ve B->B ise B, derlemeden çıkarıldı. (Sorun 56690)
- Diğer hata düzeltmeleri:
-
ndk-build
komut dosyası, komut satırı seçeneği olarak Clang sürümünü (ör.NDK_TOOLCHAIN_VERSION=clang3.2
). Daha önce, yalnızca ortam değişkeni olarak sürümü belirtmek mümkündü.- Clang derleyicisi kullanılırken MIPS derleme hedefleri için
_Unwind_Exception
değerinin gabi++ boyutu 24 olacak şekilde düzeltildi. (Değişiklik 54141) ndk-build clean
komutu kullanılırken, oluşturulan kitaplıkların önceden oluşturulmuş statik kitaplıklar içeren projelerden gerçekten kaldırıldığından emin olmak içinndk-build
komut dosyası düzeltildi. (Değiştir: 54461, 54480'i değiştir)NDK_ANALYZE=1
seçeneği daha az ayrıntı içerecek şekilde değiştirildi.gnu-libstdc++/Android.mk
sorunu, geriye dönük uyumluluk kullanan derlemeler için birbackward/
yolu içerecek şekilde düzeltildi. (Sorun 53404)stlport new
işlevinin bazen rastgele değerler döndürmesine neden olan bir sorun düzeltildi.ndk-gdb
değeri,APP_ABIS
ile değil,CPU_ABIS
öğesinin sıralamasıyla eşleşecek şekilde düzeltildi. (Sorun 54033)- MacOSX'te NDK 64 bit derlemesinin derleyici için yanlış yolu seçmesine neden olan sorun düzeltildi. (Sorun 53769)
- Derleme komut dosyalarının 64 bit Windows Vista'yı algılaması için düzeltme uygulandı. (Sorun 54485)
- x86
ntonl/swap32
hatası düzeltildi:invalid 'asm': operand number out of range
. (Sorun 54465, Değişiklik 57242) - Dize değişmez değerlerini birleştirmek için
ld.gold
düzeltildi. ld.gold
, büyük simge hizalamasını işleyecek şekilde düzeltildi.--sort-section=name
seçeneğini etkinleştirmek içinld.gold
güncellendi.- GCC 4.4.3/4.6/4.7'nin, statik olarak bağlı programlar için
-export-dynamic
seçeneğini engellemesi düzeltildi. GCC artık statik olarak bağlı programlar için.interp
bölümü eklemiyor. - Tutarsız
_Unwind_Control_Block
typedef
ile ilgilistlport
derleme hatası düzeltildi. (Sorun 54426) - Windows'da oluşturulan ve sonda
\r
karakter içerebilen ve derleme hatalarına neden olabilenAndroidManifest.xml
dosyalarını işleyecekawk
komut dosyaları düzeltildi. (Sorun 42548) make-standalone-toolchain.sh
uygulamasının, ana makinenin 32 bit mi 64 bit mi olduğunu algılamak içinprebuilts/
dizinini yoklaması düzeltildi.- Clang 3.2
-integrated-as
seçeneği düzeltildi. - Clang 3.2 ARM EHABI kompakt modeli
pr1
vepr2
işleyici verileri düzeltildi. - Şu Arlang hatasını düzeltmek için Clang
-mllvm -arm-enable-ehabi
seçeneği eklendi:clang: for the -arm-enable-ehabi option: may only occur zero or one times!
- Uygulama manifestinde
uses-sdk
öğesi olmadığında yapılan derleme hatası düzeltildi. (Sorun 57015)
- Diğer değişiklikler:
-
- Başlık Düzeltmeleri
errno.h
içindeki__set_errno
kullanımdan kaldırıldığı velibc.so
artık bunu dışa aktarmadığı için başlıklarda değişiklik yaparak__set_errno
satır içi işlev yapıldı.elf.h
,stdint.h
içerecek şekilde değiştirildi. (Sorun 55443)sys/un.h
öğesinin diğer başlıklardan bağımsız olarak dahil edilmesi düzeltildi. (Sorun 53646)MotionEvent_getHistorical
API ailesinin tümüconst AInputEvent* motion_event
alanını alacak şekilde düzeltildi. (Sorun 55873)malloc_usable_size
,const void*
alacak şekilde düzeltildi. (Sorun 55725)- Stdint.h, C99 ile daha uyumlu olacak şekilde düzeltildi. (Değişiklik 46821)
WCHAR_MAX
veWCHAR_MIN
yeniden tanımlanmayacak şekildewchar.h
değiştirildi- İşaretçiyle ilgili
PRI
veSCN
makroları için<inttypes.h>
bildirimi düzeltildi. (Sorun 57218) sys/cdefs.h
üst bilgisi, 9'un altındaki API seviyeleri için__WCHAR_TYPE__
öğesi 32 bit olacak şekilde değiştirildi. Bu,wchat_t
'nin tüm API seviyeleri için 32 bit olduğu anlamına gelir. Önceki davranışı geri yüklemek için_WCHAR_IS_8BIT
boole değişkenini tanımlayın. (Sorun 57267)
- NDK
docs/
özelliğine daha fazla biçimlendirme ve çeşitli doküman düzeltmeleri eklendi. - Statik kitaplıklar oluşturulurken ince bir arşiv tekniği için destek eklendi. (Sorun 40303)
--stl=stlport
seçeneğini belirttiğinizdegnustl
komut dosyasına ek olarakstlport
kitaplığını da desteklemek içinmake-standalone-toolchain.sh
komut dosyası güncellendi. Daha fazla bilgi içinSTANDALONE-TOOLCHAIN.html
inceleyin.- Ana makinenin clang ve clang++ tanımlarının yanlışlıkla kullanılmasını önlemek için
make-standalone-toolchain.sh
komut dosyası,--llvm-version=
seçeneğiclang
veclang++
'e ek olarak$TOOLCHAIN_PREFIX-clang
ve$TOOLCHAIN_PREFIX-clang++
komut dosyalarını oluşturacak şekilde güncellendi. - Yayın Clang'ında iki optimizasyonu yeniden etkinleştirmek için iki işaret eklendi ancak GCC tarafından derlenen kodla daha iyi uyumluluk için NDK'da devre dışı bırakıldı:
- Clang 3.2 ve sonraki sürümlerde eksik dönüş anlamını yeniden etkinleştirmek için bir
-fcxx-missing-return-semantics
işareti eklendi. Normalde, değer döndüren bir işlev için tüm yollar bir Return ifadesiyle sonlanmalıdır. Aksi takdirde clang, yola bir dönüş ifadesi olmadan tanımlanmamış bir talimat (veya hata ayıklama modunda tuzak) ekler. Kodunuzun doğru olduğundan eminseniz, optimize edicinin tanımlanmamış davranıştan yararlanabilmesi için bu işareti kullanın. Emin değilseniz bu işareti kullanmayın. Arayan kişi yine de rastgele ve yanlış bir değer alabilir, ancak optimize edici bu değerden yararlanmaz ve kodunuzda hata ayıklamayı zorlaştırır. - Statik oluşturucuyla genel değişkenlerin tanıtımını sabit değer olacak şekilde yeniden etkinleştirmek için
-fglobal-ctor-const-promotion
işareti eklendi. Bu işaretle, LLVM'nin genel değişken optimizasyon geçişi, genel değişkenleri statik kurucularla değerlendirmeye ve bunları genel sabitlere yükseltmeye çalışır. Bu optimizasyon doğru olsa da, GCC tarafından derlenen kod ile bazı uyumsuzluklara neden olabilir. Örneğin kod, sabit değeri değişkene dönüştürmek ve değiştirmek içinconst_cast
işlemini yapabilir. GCC'de değişken okuma-yazma modundadır ve kod yanlışlıkla çalıştırılır. Clang'da Cont değişkeni salt okunur bellektedir ve uygulamanızın kilitlenmesine neden olabilir.
- Clang 3.2 ve sonraki sürümlerde eksik dönüş anlamını yeniden etkinleştirmek için bir
-mldc1-sdc1
, MIPS GCC ve Clang derleyicilerine eklendi. Varsayılan olarak derleyiciler, 8 baytlık nesneleri düzgün bir şekilde hizalar ve bunları taşımak içinldc1
vesdc1
talimatlarını yayınlar. Uygulamanız, varsayılan ayırıcıyla aynı şekilde yeni bir nesnenin 8 baytlık sınırıyla her zaman uyumlu olmayan özel bir ayırıcı kullanıyorsa uyumlu olmayan bellektekildc1
vesdc1
işlemleri nedeniyle kilitlenebilir. Bu durumda, sorunu geçici olarak çözmek için-mno-ldc1-sdc1
işaretini kullanın.APP_PLATFORM_LEVEL
değeri,APP_MIN_PLATFORM_LEVEL
değerinden büyükse etkinlik önem derecesi uyarıdan bilgi değerine düşürüldü. NDK'da tüm seviyeler için başlık bulunmadığındanAPP_PLATFORM_LEVEL
,jni/Application.mk
içindekiAPP_PLATFORM
değerinden düşük olabilir. Bu durumda, gerçek düzey aşağı kayar.APP_MIN_PLATFORM_LEVEL
, uygulamanızın manifest dosyasındakiandroid:minSdkVersion
tarafından belirtilir. (Sorun 39752)cpu-features.c
öğesineandroid_getCpuIdArm()
veandroid_setCpuArm()
yöntemleri eklendi. Bu ekleme, ARM CPUID bilgilerinin daha kolay alınmasını sağlar. (Sorun 53689)- Clang derlemesi için GCC 4.7'deki
as/ld
kullanılacak şekildendk-build
değiştirildi.Not: GCC 4.7'de
monotonic_clock
veis_monotonic
, sırasıylasteady_clock
veis_steady
olarak yeniden adlandırıldı. ndk-build
komut dosyasına aşağıdaki yeni uyarılar eklendi:- Statik kitaplık modüllerinde
LOCAL_LDLIBS/LDFLAGS
kullanılırsa uyarılar eklendi. - Bir yapılandırmanın derlenecek modülü yoksa uyarı eklendi.
- Paylaşılan bir kitaplığın veya yürütülebilir modüllerin
LOCAL_LDLIBS/LDFLAGS
tanesinde kullanılan sistem dışı kitaplıklar için uyarı eklendi.
- Statik kitaplık modüllerinde
- Derleme komut dosyaları güncellendi. Böylece,
APP_MODULES
tanımlanmamışsa veAndroid.mk
öğesinde yalnızca statik kitaplıklar listeleniyorsa komut dosyası bunların tümünü zorunlu olarak oluşturur. (Sorun 53502) ndk-build
,LOCAL_SRC_FILES
içindeki mutlak yolları destekleyecek şekilde güncellendi.-tui
seçeneği etkin durumdayken*-gdb
yürütülebilir dosyanın kopyası olan*-gdbtui
yürütülebilir dosya kaldırıldı.- Derleme komut dosyaları, Edison Design Group (EDG) derleyici ön ucu
_STLP_HAS_INCLUDE_NEXT
'yi tekrar etkinleştirdiğinde sizi uyaracak şekilde güncellendi. (Sorun 53646) libraries/gdbserver
yolunun varsayılan$PROJECT/libs
değerinden geçersiz kılınmasına olanak tanımak içinNDK_LIBS_OUT
ortam değişkeni eklendi. Daha fazla bilgi içinOVERVIEW.html
inceleyin.- ndk-build komut dosyası varsayılanları, biçim dizesi korumasıyla kodu derlemek üzere
-Wformat -Werror=format-security
değiştirildi. Devre dışı bırakmak içinLOCAL_DISABLE_FORMAT_STRING_CHECKS=true
ayarlayabilirsiniz. Daha fazla bilgi içinANDROID-MK.html
inceleyin. ndk-gdb-py
ürününe STL güzel yazdırma desteği eklendi. Daha fazla bilgi içinNDK-GDB.html
inceleyin.- Googletest çerçevelerine dayalı testler eklendi.
- Araç zinciri derleme komut dosyasına, mevcut kabuk
bash
değilse sizi uyaran bir bildirim eklendi.
- Başlık Düzeltmeleri
Android NDK r8e (Mart 2013)
- Önemli değişiklikler:
-
- 64 bit ana makine araç zinciri grubu (paket adı son eki
*-x86_64.*
) eklendi. Daha fazla bilgi içinCHANGES.HTML
veNDK-BUILD.html
sayfalarını inceleyin. - Clang 3.2 derleyici eklendi. GCC 4.6 hâlâ varsayılan sürümdür. Clang derleyicisini kullanmayla ilgili bilgi edinmek için
CHANGES.HTML
sayfasını inceleyin. - Linux/MacOSX ana makineleri için statik kod analizcisi eklendi. Analiz aracını kullanmayla ilgili bilgi için
CHANGES.HTML
bölümüne bakın. - Deneysel özellik olarak Linux/MacOSX ana makineleri için MCLinker eklendi.
ld.gold
bağlayıcısı, mevcut olduğu yerlerde varsayılandır. Bu nedenle, bu bağlayıcıyı açıkça etkinleştirmeniz gerekir. Daha fazla bilgi içinCHANGES.HTML
sayfasını inceleyin. - ndk-build, modül bağımlılıkları için topolojik sıralama kullanacak şekilde güncellendi. Bu, derlemenin
LOCAL_STATIC_LIBRARIES
,LOCAL_WHOLE_STATIC_LIBRARIES
veLOCAL_SHARED_LIBRARIES
içinde belirtilen kitaplıkların sırasını otomatik olarak sıraladığı anlamına gelir. Daha fazla bilgi içinCHANGES.HTML
inceleyin. (Sorun 39378)
- 64 bit ana makine araç zinciri grubu (paket adı son eki
- Önemli hata düzeltmeleri:
-
-O2
ürününde tüm araç zincirlerini derleyecek derleme komut dosyası düzeltildi. Önceki sürümlerdeki araç zincirleri, hatalı bir şekilde optimizasyon olmadan oluşturuluyordu.- 64 bit olarak MacOSX için Clang/llvm ürününü koşulsuz olarak oluşturan derleme komut dosyası düzeltildi.
- GCC 4.6/4.7 dahili derleyici hatası düzeltildi:
gen_thumb_movhi_clobber at config/arm/arm.md:5832
. (Sorun 52732) - GCC/ARM 4.6/4.7'nin 64 bit atomik yerleşik işlevleri kullanarak kodu bağlayamadığı derleme sorunu düzeltildi. (Sorun 41297)
- GCC 4.7 bağlayıcı DIV kullanım uyuşmazlığı hataları düzeltildi. (Kaynak Yazılım Sorunu)
- GCC 4.7 dahili derleyici hatası
build_data_member_initialization, at cp/semantics.c:5790
düzeltildi. - GCC 4.7 dahili derleyici hatası
redirect_eh_edge_1, at tree-eh.c:2214
düzeltildi. (Sorun 52909) - GCC 4.7 segfault düzeltildi. (GCC Sorunu)
<chrono>
saat çözünürlüğü düzeltildi vesteady_clock
etkinleştirildi. (Sorun 39680)- GCC 4.7 libstdc++ için
_GLIBCXX_HAS_GTHREADS
özelliğinin etkinleştirilmesini sağlayan araç zinciri düzeltildi. (Sorun 41770, Sorun 41859) - Eksik
posix_memalign
nedeniyle X86 MXX/SSE kodunun bağlanamamasıyla ilgili sorun düzeltildi. (Değişiklik 51872) i386.c
,distance_non_agu_define_in_bb()
işlevindeki GCC4.7/X86 segmentasyon hatası düzeltildi. (Değiştirin 50383)- Önceki
cmov
davranışını geri yüklemek için GCC4.7/X86 düzeltildi. (GCC Sorunu) - libstdc++/GCC4.7'de
setlocale()
değerinin NULL değerinin işlenmesi düzeltildi. (Sorun 46718) __exidx_start
ve__exidx_start_end
içinld.gold
çalışma zamanı tanımlanmamış referansı düzeltildi. (Değişim 52134)- Eigen kitaplığı kullanılırken Clang 3.1 dahili derleyici hatası düzeltildi. (Sorun 41246)
- C++11 modundaki
<chrono>
dahil olmak üzere Clang 3.1 dahili derleyici hatası düzeltildi. (Sorun 39600) - Tek tip başlatılan bir
rvalue
öğesine yönelik yöntem çağrısı için nesne kodu oluşturulurken Clang 3.1 dahili derleyici hatası düzeltildi. (Sorun 41387) - Clang 3.1/X86 yığın yeniden hizalaması düzeltildi. (Değişiklik 52154)
- Android 4.1.2'de hata ayıklama sırasında yaşanan GNU Debugger (GDB) SIGILL sorunu düzeltildi. (Sorun 40941)
- Simgeler uzun, dolaylı dosya yolları içerdiğinde GDB'nin
source:line
kesme noktası ayarlayamaması sorunu düzeltildi. (Sorun 42448) - MIPS PIE yürütülebilir dosyaları için GDB
read_program_header
düzeltildi. (Değiştir 49592) uncaught_exception()
içinSTLport
segmentasyon hatası düzeltildi. (Değişiklik 50236)DW_EH_PE_udata2
,DW_EH_PE_udata4
veDW_EH_PE_udata8
için hizalamasız erişim nedeniyle istisna işlemedekiSTLport
veri yolu hatası düzeltildi.nothrow new[]
operatörüyle ilişkili Gabi++ sonsuz yineleme sorunu düzeltildi. (Sorun 52833)- Gabi++ öğesinin istisna işleyici işaretçisine göre yanlış ofset sorunu düzeltildi. (Değiştir 53446)
- İstisna nesnesinde gereksiz olan Gabi++ artık kaldırıldı (53447'yi değiştirin)
- Diğer hata düzeltmeleri:
-
- Düzeltilen NDK başlıkları:
size_t
,ssize_t
veptrdiff_t
için gereksiz tanımlar kaldırıldı.- MIPS ve ARM
fenv.h
başlığı düzeltildi. stddef.h
, araç zincirinde zaten mevcut olduğundanoffsetof
öğesini yeniden tanımlamayacak şekilde düzeltildi.elf.h
değeri,Elf32_auxv_t
veElf64_auxv_t
içerecek şekilde düzeltildi. (Sorun 38441)OpenSLES_AndroidConfiguration.h
başlık dosyasındaki#ifdef
C++ tanımları düzeltildi. (Sorun 53163)
STLport
ürününün, bellek yetersiz hatasından sonra sessizce çıkmak yerine iptal edilmesi düzeltildi.- API düzeyi 8 ve önceki sürümlerle derlenebilecek sistem ve Gabi++ başlıkları düzeltildi.
cpufeatures
,/proc/self/auxv
değerini ayrıştırmayacak şekilde düzeltildi. (Sorun 43055)ld.gold
öğesinin,libgcc_sjlj_1.dll
kitaplığına bağlı olmayacak şekilde libstdc++ ana makine ve Windows platformlarına bağlı olmayacak şekilde düzeltildi..vsave
içinde tutarsız kayıt listesi yayınlayan ve derleyicide başarısız olan Clang 3.1 düzeltildi. (49930'u değiştirin)- Clang 3.1'in libgabi++ derleyebilmesi ve MIPS derleme hedefleri için
test-stlport
testlerini geçebilmesi için düzeltme yapıldı. (Değiştirin 51961) - Clang 3.1'in istisnayı varsayılan olarak yalnızca C++ için etkinleştirecek, C için etkinleştirmeyecek şekilde düzeltildi.
- Clang 3.1'deki GNU istisna testlerinin çoğunu geçebilecek bazı sorunlar düzeltildi.
- Bağımsız NDK derleyicisinde
clang
veclang++
komut dosyaları,-cc1
öğesini algılayacak ve bulunduğunda-target
belirtecek şekilde düzeltildi. Application.mk
hücresindekiNDK_APP_OUT
kümesini gözlemlemek içinndk-build
düzeltildi.setjmp.h
içinde zaten tanımlanmışsigsetjmp
vesiglongjmp
işlevleri bulunmayan X86libc.so
velib.a
düzeltildi. (Sorun 19851)- C++ 11'de Clang ile çalışmak üzere GCC 4.4.3/4.6/4.7 libstdc++ için yama uygulandı. (Clang Sorunu)
HOST_AWK
öğesine iletilen bağımsız değişkendeki cygwin yolu düzeltildi.- Projenin JNI dizininden çalıştırılırken pencerelerdeki
ndk-build
komut dosyası uyarısı düzeltildi. (Sorun 40192) - Makefile dosyasının
LOCAL_PATH
tanımının sonunda boşluk varsandk-build
komut dosyasının oluşturulmaması sorunu düzeltildi. (Sorun 42841)
- Düzeltilen NDK başlıkları:
- Diğer değişiklikler:
-
- GCC/MIPS araç zincirinde iş parçacığı desteği etkinleştirildi.
__cxa_begin_cleanup
ve__cxa_type_match
GCC istisna işleme yardımcıları güncellendi. Bu yardımcılar, GNU libstdc++'taki önceki gizli görünürlükten varsayılan görünürlüğe sahip olacak şekilde güncellendi. Daha fazla bilgi içinCHANGES.HTML
sayfasına bakın.- Derleme komut dosyaları güncellendi. Böylece Gabi++ ve STLport statik kitaplıkları artık istisna işleme yardımcıları dışında gizli görünürlükle derlenecek.
STLport
, küçük resim modunda ARM için derlenecek şekilde güncellendi.- Gabi++'da
std::set_new_handler
desteği eklendi. (Sorun 52805) - GNU libstdc++ için
FUTEX
sistem çağrısı etkinleştirildi. ndk-build
uygulaması, önceden oluşturulmuş statik kitaplığı projeninobj/local/<abi>/
dizinine artık kopyalamayacak şekilde güncellendi. (Sorun 40302)__ARM_ARCH_5*__
, ARMtoolchains/*/setup.mk
komut dosyasından kaldırıldı. (Sorun 21132)- ARM için ek GNU libstdc++ kitaplıkları oluşturuldu.
- MIPS kayan nokta
madd/msub/nmadd/nmsub/recip/rsqrt
talimatları, 32 bit FPU ile etkinleştirildi. - Daha fazla optimizasyona olanak tanımak için GCC 4.6 ve 4.7'de grafit döngü optimize edici etkinleştirildi:
-fgraphite
,-fgraphite-identity
,-floop-block
,-floop-flatten
,-floop-interchange
,-floop-strip-mine
,-floop-parallelize-all
ve-ftree-loop-linear
. (bilgi) - Linux ve Max OS X 32 bit ana makinelerde Clang 3.1 için
polly
etkinleştirildi. Bu işlem, bellek erişimini analiz ve optimize eder. (bilgi) -flto
, linux'ta GCC 4.7, 4.6, Clang 3.2 ve Clang 3.1'de (LLVMgold.so aracılığıyla Clang LTO) etkinleştirilir.ld.gold
kullanılamadığından MIPS derleyici hedefleri desteklenmiyor.- GCC 4.6/4.7'de
ld.gold
için--plugin
ve--plugin-opt
etkinleştirildi. - GCC 4.7'de
ld.gold
için--text-reorder
etkinleştirildi. - GNU libstdc++, biyonik başlıktaki
isinf
komut dosyasının tanımını kaldıran_GLIBCXX_USE_C99_MATH
ile yapılandırıldı. Daha fazla bilgi içinCHANGES.html
inceleyin. APP_LDFLAGS
, derleme komut dosyalarına eklendi. Daha fazla bilgi içinANDROID-MK.html
inceleyin.- Derleme komut dosyaları,
NDK_LOG=0
tarafındanNDK_LOG
devre dışı bırakılmasına izin verilecek şekilde güncellendi. - Derleme komut dosyaları,
NDK_HOST_32BIT=0
ürününün, ana makine geliştirici ortamının 32 bit araç zincirini devre dışı bırakmasına izin verecek şekilde güncellendi. - Varsayılan GCC/X86 işaretleri
-march=
ve-mtune=
,pentiumpro
vegeneric
ikeni686
veatom
olarak değiştirildi. - Geliştirilmiş araç zinciri oluşturma komut dosyaları:
build-gcc.sh
içindemingw
derleme türü için önemli miktarda paralel derleme işlemeyi engelleyen yarış durumu düzeltildi.build-gabi++.sh
vebuild-stlport.sh
güncellendi. Bu uygulamalar artık NDK paketinden çalıştırılabilir. (Sorun 52835)MSys
yardımcı programlar koleksiyonundakirun-tests.sh
düzeltildi.- Geliştirilmiş 64 bit ana makine araç zinciri ve Kanada Arası Derleme desteği.
build-mingw64-toolchain.sh
komut dosyası daha yeni sürüme güncellendi.- Gizli görünürlük olmadan
libgnustl_static.a
vestlport_static.a
oluşturma seçeneği eklendi.
Android NDK r8d (Aralık 2012)
- Önemli değişiklikler:
-
- NDK'ya GNU Derleyici Koleksiyonu (GCC) 4.7 derleyicisi eklendi. GCC 4.6 derleyicisi hâlâ varsayılan ayar olduğundan, yeni sürümü aşağıdaki şekilde açıkça etkinleştirmeniz gerekir:
ndk-build
içinNDK_TOOLCHAIN_VERSION=4.7
değişkenini dışa aktarın veyaApplication.mk
öğesine ekleyin.- Bağımsız derlemeler için
make-standalone-toolchain.sh
öğesine--toolchain=
seçeneğini ekleyin. Örneğin:--toolchain=arm-linux-androideabi-4.7
Not: Bu özellik deneyseldir. Lütfen deneyip sorunları bildirin.
- gabi++ üzerinden
stlport
istisna desteği eklendi. Yeni gabi++,dlopen
ve ilgili koda bağlıdır. Bunun anlamı şudur:- Artık
-static
seçeneğiyle statik yürütülebilir dosya oluşturamaz veyaAPP_STL := stlport_static
kullanaraklibstlport_static.a
dosyasını dahil edemezsiniz. (-static
seçeneğini bağımsız bir araç zinciriyle kullanmaya devam edebilirsiniz.) Derleyici otomatik olarak-ldl
seçeneğini eklediğinden,include $(BUILD_EXECUTABLE)
kullanılarak yürütülebilir bir dinamik derlenme işlemi devam eder. - Projeniz
-nostdlib
ve {-Wl,--no-undefined} kullanarak bağlanıyorsa-ldl
seçeneğini manuel olarak eklemeniz gerekir.
CPLUSPLUS-SUPPORT.html
inceleyin.Not: Bu özellik deneyseldir ve GCC 4.6/4.7 derleyicileriyle, GCC 4.4.3 veya Clang 3.1 ile karşılaştırıldığında daha iyi çalışır. Lütfen deneyip sorunları bildirin.
- Artık
- x86'ya eski Android C kitaplığıyla (biyonik) uyumlu olan global varsayılan yol ile GCC 4.6 ve daha yüksek derleyicileri kullanarak
-fstack-protector
,-fstack-protector-all
ve-fstack-protector-strong
için yeni tls yolu (%gs:20) arasından seçim yapmak için-mstack-protector-guard=
seçeneği eklendi.Not:
-mstack-protector-guard
ayarının kendisi herhangi bir-fstack-protector*
seçeneğini etkinleştirmez. - Android 4.1 ve sonraki sürümlerde
/proc
aracılığıyla otomatik algılamanın mümkün olmadığı durumlarda kullanılmak üzereandroid_setCpu()
işlevisources/android/cpufeatures/cpu-features.c
öğesine eklendi. (Chromium Sorunu 164154)
- NDK'ya GNU Derleyici Koleksiyonu (GCC) 4.7 derleyicisi eklendi. GCC 4.6 derleyicisi hâlâ varsayılan ayar olduğundan, yeni sürümü aşağıdaki şekilde açıkça etkinleştirmeniz gerekir:
- Önemli hata düzeltmeleri:
-
ndk-build
komut dosyası kullanılırken nesne dosyalarının gereksiz yere yeniden oluşturulması düzeltildi. (Sorun 39810)- Mac OS X 10.6.x için aşağıdaki hatayı üreten NDK 8c sürümünde bağlayıcı hatası giderildi:
dyld: lazy symbol binding failed: Symbol not found: _memmem Referenced from: ...../arm-linux-androideabi/bin/ld Expected in: /usr/lib/libSystem.B.dylib
Bu sorun, Mac OS 10.6.x ve NDK ile uyumlu olmayan ikili programlar oluşturan Mac OS X 10.7'de derleme yapılmasından kaynaklanmıştır. - Clang++ bağımsız derleme komut dosyasından
-x c++
seçenekleri kaldırıldı. (Sorun 39089) - Cygwin'de
NDK_TOOLCHAIN_VERSION=clang3.1
seçeneğini kullanmayla ilgili sorunlar düzeltildi. (Sorun 39585) make-standalone-toolchain.sh
komut dosyası, Cygwin veya MinGW ortamları kullanılarak bağımsız bir araç zinciri oluşturulmasına olanak tanıyacak şekilde düzeltildi. Ortaya çıkan araç zinciri Cygwin, MingGW veya CMD.exe ortamlarında kullanılabilir. (Sorun 39915, Sorun 39585)- ARM ve X86 için Android-14 derlemelerine eksik olan
SL_IID_ANDROIDBUFFERQUEUESOURCE
seçeneği eklendi. (Sorun 40625) ANDROID_CPU_X86_FEATURE_MOVBE
özelliği için x86 CPU algılama düzeltildi. (Sorun 39317)- Standart Şablon Kitaplığı'nın (STL)
.cpp
dosya uzantısına sahip olmayan C++ kaynaklarını kullanmasını engelleyen bir sorun düzeltildi. - refresh1.c:1061 sırasındaki GCC 4.6 ARM dahili derleyici hatası düzeltildi. (Sorun 20862)
- emit-rtl.c:1954 adresindeki GCC 4.4.3 ARM dahili derleyici hatası düzeltildi. (Sorun 22336)
- postreload.c:396 adresindeki GCC 4.4.3 ARM dahili derleyici hatası düzeltildi. (Sorun 22345)
- GCC 4.6/4.7'de lambda işlevlerinin atlanmasıyla ilgili sorun düzeltildi. (Sorun 35933)
- Diğer hata düzeltmeleri:
-
- NDK başlık dosyası düzeltmeleri:
__WINT_TYPE__
vewint_t
öğelerinin aynı tür olması düzeltildi.android/bitmap.h
yazım hatası düzeltildi. (Sorun 15134)errno.h
yazım hatası düzeltildi.sys/cdefs.h
konumunda__STDC_VERSION__
varlığına ilişkin kontrol eklendi. (Sorun 14627)byteswap.h
vedirent.h
başlıklarında yeniden düzenleme yapıldı.limits.h
değeri,PAGE_SIZE
ayarlarını sağlayanpage.h
öğesini içerecek şekilde düzeltildi. (Sorun 39983)glGetAttribLocation()
veglGetUniformLocation()
değerlerininint
değerindenGLint
değerine sabit döndürme türü.- x86 derlemeleri için
__BYTE_ORDER
sabiti düzeltildi. (Sorun 39824)
ndk-build
komut dosyasının, ARM derlemeleri için-O2
ile-Os
öğesinin üzerine yazılmaması sorunu düzeltildi.- Derleme komut dosyaları
HOST_AWK
,HOST_SED
veHOST_MAKE
ayarlarının üzerine yazılmasına izin verecek şekilde düzeltildi. fsck_msdos
işletim sistemindeld.gold
ile ilgili sorun, Intel C/C++ derleyicisi (ICC) tarafından derlenen bağlantı nesneleri oluşturur.- Spesifikasyonlara uymak için Clang'da ARM EHABI desteği düzeltildi.
- GNU Hata Ayıklayıcısı (GDB),
solib
etkinlikleri sırasında hedefin bağlantı haritasını yürürken harcanan süreyi kısaltmak için düzeltildi. (Sorun 38402) - Paylaşılan kitaplıkları bağlarken karşılaşılan eksik
libgcc.a
dosyası düzeltildi.
- NDK başlık dosyası düzeltmeleri:
- Diğer değişiklikler:
-
- ARM için GCC 4.6 sürümüne geçmiş 64 bit yerleşik atom işlevleri.
- Diğer dokümanlar ve düzeltmelerin yanı sıra ses çıkışı gecikmesiyle ilgili dokümanlar eklendi.
- Clang ile hata ayıklama derlemeleri düzeltildi. Bu sayede geçersiz olmayan işlevler, dönüş ifadesi olmayan yollar için
SIGILL
sinyali oluşturabilir. make-standalone-toolchain.sh
, GCC 4.6 araç zincirine--llvm-version=3.1
eklemeye eşdeğer olan-clang3.1
son ekini kabul edecek şekilde güncellendi.- GCC ve Clang hata raporu URL'si şu şekilde güncellendi: https://source.android.com/source/report-bug s.html
llvm-objdump
için ARM ELF desteği eklendi.- Clang derlemeleri için c girişinin c++ olarak işlenmesi uyarısı atlandı.
- Derleme,
libiberty.a
ürününün yalnızca 32 bit sürümü derleniplib32/
içine yerleştirilecek şekilde güncellendi.
Android NDK r8c (Kasım 2012)
- Önemli değişiklikler:
-
- Clang 3.1 derleyicisi NDK'ya eklendi. GNU Derleyici Koleksiyonu (GCC) 4.6 hâlâ varsayılan sürüm olduğundan Clang derleyici seçeneğini aşağıdaki gibi açıkça etkinleştirmeniz gerekir:
ndk-build
içinNDK_TOOLCHAIN_VERSION=clang3.1
dosyasını dışa aktarın veya bu ortam değişkeni ayarınıApplication.mk
değerine ekleyin.- Bağımsız derlemeler için
make-standalone-toolchain.sh
öğesine--llvm-version=3.1
öğesini ekleyin ve model dosyanızdakiCC
ileCXX
değerlerini<tool-path>/bin/clang
ve<tool-path>/bin/clang++
ile değiştirin. Ayrıntılar içinSTANDALONE-TOOLCHAIN.html
sayfasını ziyaret edin.
Not: Bu özellik deneyseldir. Lütfen deneyip sorunları bildirin.
- Windows araç zinciri için Altın bağlayıcı
ld.gold
eklendi. Altın bağlayıcı ayrıca tüm ana makinelerde ARM ve X86 için varsayılan seçenektir.Android.mk
öğesineLOCAL_LDFLAGS += -fuse-ld=bfd
ekleyerek veya bağlantıyı yapan g++/clang++ komut satırına-fuse-ld=bfd
öğesini geçirebilirsiniz. Böyleceld.bfd
bağlayıcıyı kullanmak için bunu geçersiz kılabilirsiniz. - Teşhis edilmesi zor derleme hatalarını önlemek için
ndk-build[.cmd]
vendk-gdb
komut dosyalarına NDK yolundaki boşluklarla ilgili kontroller eklendi. - API düzeyinde işleme aşağıdaki değişiklikler yapıldı:
- Derleme mantığı değiştirilerek
APP_PLATFORM
,project.properties
veyadefault.properties
içindeandroid-10
ileandroid-13
arası değerleri belirten projelerandroid-14
yerineandroid-9
öğesine bağlanacak. - Derleme, Android-16 (Jelly Bean) veya sonraki sürümleri kullanan yürütülebilir dosyaların, konumdan bağımsız yürütülebilir dosyalar (PIE) için
-fPIE
seçeneğiyle derlenmesi için güncellendi. Yeni birAPP_PIE
seçeneği bu davranışı kontrol etmenize olanak tanıyor. Ayrıntılar içinAPPLICATION-MK.html
sayfasını ziyaret edin.Not: 14'ün üzerindeki tüm API düzeyleri hâlâ
platforms/android-14
ile bağlantılıdır ve yeniplatforms/android-N
eklenmemiştir. - Ayarlanan API düzeyi, projenin
AndroidManifest.xml
öğesindeandroid:minSdkVersion
değerinden büyükse uyarı vermek içinndk-build
değiştirildi.
- Derleme mantığı değiştirilerek
cpu-features
yardımcı kitaplığı, ARM'ye özgü daha fazla özellik içerecek şekilde güncellendi. Ayrıntılar içinsources/android/cpufeatures/cpu-features.h
sayfasını ziyaret edin.- X86 platformundaki uzun çift, 8 bayt olacak şekilde değiştirildi. Bu veri türü, artık çift sayı ile aynı boyuttadır ancak farklı bir tür olarak ele alınır.
APP_ABI=armeabi-v7a
için derleme güncellendi:- Bu derleme türü,
-march=armv7-a
parametresini bağlayıcıya iletilecek şekilde değiştirildi. Bu değişiklik, v7'ye özel kitaplıkların vecrt*.o
ile doğru şekilde bağlantı kurulmasını sağlar. - Önceki sürümlerde kullanılan
-mfpu=vfp
seçeneği yerine-mfpu=vfpv3-d16
,ndk-build
bölümüne eklendi.
- Bu derleme türü,
- Clang 3.1 derleyicisi NDK'ya eklendi. GNU Derleyici Koleksiyonu (GCC) 4.6 hâlâ varsayılan sürüm olduğundan Clang derleyici seçeneğini aşağıdaki gibi açıkça etkinleştirmeniz gerekir:
- Önemli hata düzeltmeleri:
-
make-standalone-toolchain.sh
hizmetinin kök ayrıcalıklarıyla çalıştırılması, bağımsız araç zincirinin bazı kullanıcılar tarafından erişilemez olmasına neden olan sorun düzeltildi. (Sorun 35279)- NDK sürüm paketindeki tüm dosyalar ve yürütülebilir dosyalar, hepsi için okuma ve yürütme izinlerine sahip olacak şekilde ayarlandı.
libstdc++.a
öğesinin sahipliği/grubu artık kopyalandığında korunur.
- Windows'un önceden oluşturulmuş
echo.exe
sürümünden gereksiz\r
kaldırıldı. Gereksiz\r
nedeniyle,gdb.setup
yanlışlıkla yolun bir parçası haline geldiği için GNU Debugger'da (GDB) başarısız oldu. (Sorun 36054) host-mkdir
uygulamasındaki zamanlama sorunları nedeniyle bazen başarısız olan Windows paralel derlemeleri düzeltildi. (Sorun 25875)- GCC 4.4.3 GNU
libstdc++
ürününün,typeinfo
adlarını varsayılan olarak birleştirmemesi şeklinde düzeltme uygulandı. Ayrıntılı bilgi içintoolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo
sayfasını inceleyin. (Sorun 22165) - GCC 4.6
cp/mangle.c::write_unscoped_name
'danull
bağlamıyla ilgili sorun düzeltildi. Burada bağlamnull
olduğunda veTREE_CODE
'da referansı kaldırılmış olabilir. - Kayan öğeler için ARM NEON'a özgü tür tanımlarında GCC 4.4.3 kilitlenmeleri düzeltildi. (Sorun 34613)
- Referansı kaldırılan değeri tutan eski bir yığın konumunun döndürüldüğü ve çalışma zamanı kilitlenmelerine neden olan
STLport
dahili_IteWrapper::operator*()
uygulaması düzeltildi. (Sorun 38630) - ARM'ye özel düzeltmeler:
- ARM GCC 4.4.3/4.6
g++
, <va_list> yönetiminin GCC 4.4'te değiştirildiği uyarısını vermeyecek şekilde düzeltildi. Bu uyarıyı önlemek için-Wno-psabi
anahtarını kullanan geçici çözüm artık gerekli değildir. LOCAL_SRC_FILES
içinde.arm
veya.neon
son eklerine sahip bir projeAPP_STL
kullandığında ortaya çıkan sorun düzeltildi.APP_STL
ilendk-build
komut dosyası, derlemeye STLheader/lib
yollarını eklemeden önceLOCAL_SRC_FILES
içinde C++ dosyalarını arar. Aramadan önce.arm
ve.neon
soneklerini filtrelemek içinndk-build
değiştirildi. Aksi takdirde,LOCAL_SRC_FILES
içindekimyfile.cpp.arm.neon
gibi öğeler C++ kodu olarak derlenmez.binutils-2.21/ld.bfd
ürününün,tag_FP_arch
olmadan eski binutil dosyalarındaki nesneyi bağlama özelliğine sahip olması ve bu nedenle GNU Binutils'de onay başarısız hata mesajları oluşması düzeltildi. (Sorun 35209)binutils-2.21
yeni sürüm tarafından önceden oluşturulmuşbinutils-2.19/ld
nesneye bağlantı verildiğinde Bilinmeyen EABI nesne özelliği 44 uyarısı kaldırıldıarmv7-a/thumb
alt dizinindekiheaders/libs
alanını doldurmak içinmake-standalone-toolchain.sh
değiştirilerek hem-mthumb
hem de-march=armv7-a
ile yapılan GNUstdc++
derlemesindeki sorun giderildi. (Sorun 35616)- Çözümlenemeyen R_ARM_THM_CALL yeniden konumlandırma hatası düzeltildi. (Sorun 35342)
char
öğesinden imza genişletmesi sırasında yanlış işlenen türü bekleyen ARM arka ucunun neden olduğureload1.c:3633
konumunda dahili derleyici hatası düzeltildi. (GCC Sorunu 50099)- Negatif kaydırma miktarına sahip dahili derleyici hatası düzeltildi. (GCC Sorunu)
- ARM GCC 4.4.3/4.6
- Aynı zamanda
ndk-build
x86 ABI hedefi için de varsayılan değer olan X86 için-fstack-protector
düzeltildi. - MIPS'ye özel düzeltmeler:
- MIPS
libstlport_*
derlenirken_STLP_LITTLE_ENDIAN
değeri 1 olarak ayarlanarakSTLport
uç durumu düzeltildi. - LLVM derlenirken yaşanan GCC
__builtin_unreachable
sorunu düzeltildi. (GCC Sorunu 54369) - %100 CPU kullanan
cc1
derleme işlemi için geriye dönük düzeltme. (GCC Sorunu 50380)
- MIPS
- GNU Hata Ayıklayıcı'ya özel düzeltmeler:
- Derleme sırasında gdb-7.x'te Python desteği devre dışı bırakılır. Aksi takdirde gdb-7.x yapılandırma işlevi, ana makinede mevcut olan Python sürümünü alıp Python'un belirli bir sürümüne kablolu bağımlı bir şekilde
gdb
oluşturabilir. (Sorun 36120) APP_ABI
,all
içerdiğinde ve bilinen mimarilerin hiçbiriyle eşleşmediğindendk-gdb
düzeltildi. (Sorun 35392)- Windows yol adı desteği, sürücü harfiyle başlayan bir Windows yolunun parçası gibi görünüyorsa
:
karakterini koruyarak düzeltildi. (GDB Sorun 12843) gdbserver
ürününde ARM için donanım ayrılma noktası desteğinin eklenmesi düzeltildi. (GDB Sorunu)- Bağlayıcı tutarlı olduğunda yalnızca mevcut
solibs
öğesini okuyacak düzeltme eklendi. Bu değişiklik,solib
etkinliklerinin işlenmesini hızlandırır. (Sorun 37677) solib
ayrılma noktasını bulmak için tekrarlanan denemeler yapmak üzere düzeltme eklendi. GDB, artık hersvr4_current_sos()
çağrısında işlem başarılı olana kadarenable_break()
işlemini yeniden dener. (43563'ü değiştirin)dlopen-ed
kitaplıklarına yerleştirilen kesme noktalarındagdb
öğesinin durmaması sorunu düzeltildi. (Sorun 34856)sym_addr
LSB
değerinin korunmaması nedeniyle/system/bin/linker
öğesinin sembollerin kaldırıldığı vertld_db_dlactivity()
öğesininThumb
olarak uygulandığı sistemdedlopen()
çağrısı yapılırken dinamik bağlayıcıdakiSIGILL
düzeltildi. (Sorun 37147)
- Derleme sırasında gdb-7.x'te Python desteği devre dışı bırakılır. Aksi takdirde gdb-7.x yapılandırma işlevi, ana makinede mevcut olan Python sürümünü alıp Python'un belirli bir sürümüne kablolu bağımlı bir şekilde
- Diğer hata düzeltmeleri:
-
- Düzeltilen NDK başlıkları:
- Orijinal çekirdekten hatalı şekilde kaldırılan
arch-mips/include/asm/*
kodu düzeltildi. (Değiştir 43335) sys/cdefs.h
bölgesinde#define __unused
ile çakışmayı önlemek içinlinux/sysctl.h
velinux/icmp.h
bölgesinde__unused
struct üye verileri__linux_unused
ile değiştirildi.__BEGIN_DECLS
ve__END_DECLS
içeren ekli C işlevleri içinfenv.h
düzeltildi.malloc.h
içinde uygulanmamış işlevler kaldırıldı.- ANSI derleyicileri için
uint64_t
öğesininstdint.h
tanımı düzeltildi. (Sayı 1952) <arch>/include/machine/*
öğesindeki ön işlemci makroları düzeltildi.- MIPS için
link.h
, tüm platformları destekleyen yeni sürümle değiştirildi. linux-unistd.h
kaldırıldı- GLibc'e özgü
LONG_LONG_MIN
,LONG_LONG_MAX
veULONG_LONG_MAX
makrolarını<pthread.h>
değerinden<limits.h>
değerine taşıyın.
- Orijinal çekirdekten hatalı şekilde kaldırılan
ndk-stack-parser
içindeki arabellek taşması düzeltildi.- Tanımlanmadığında
_STLP_USE_EXCEPTIONS
, tüm__Named_exception
açıklamalarını ve kullanımlarını atlayacak şekilde düzeltildi. Derlenme ve__Named_exception
ayarlarının kullanımı yalnızcaSTLport
ürününün istisnalar kullanmasına izin verildiğinde gerçekleşir. - Windows kodu da derlemeden yalnızca Linux'a özel NDK paketlerinin oluşturulması düzeltildi. Bu tür bir derleme gerçekleştirmek için aşağıdaki ayarları kullanın:
./build/tools/make-release.sh --force --systems=linux-x86
libc.so
,atexit()
ve__do_handler
öğelerini dışa aktarmayacak şekilde düzeltildi. Bu semboller, eski yerel kitaplıkları desteklemek amacıyla ARM derlemeleri için C kitaplığının sistem sürümü tarafından dışa aktarılır. NDK tarafından oluşturulan bu tür verilere hiçbir zaman doğrudan başvuruda bulunmamalıdır. Bunun yerine, paylaşılan her kitaplık veya yürütülebilir dosya, bu sembollerincrtbegin_*.o
tarafından sağlanan kendi sürümünü yerleştirmelidir.Projeniz
-nostdlib -Wl,--no-undefined
seçenekleriyle bağlantılıysa bu örnektecrtbegin_so.o
bağlı olmadığından kendi__dso_handle
sağlamanız gerekir. Aşağıdaki örnek kodda gösterildiği gibi__dso_handle
içeriği önemli değildir:extern "C" { extern void *__dso_handle __attribute__((__visibility__ ("hidden"))); void *__dso_handle; }
- Daha okunabilir bir
function@plt
formu oluşturmak amacıylaobjdump
içindeplt
girişlerinde ARM için kullanılan simge kod çözücü düzeltildi. - GCC 4.6
libgcc.a
sürümünde sunulan şu simgeler, X86 platformununlibc.so
kitaplığından kaldırıldı:__aeabi_idiv0
,__aeabi_ldiv0
,__aeabi_unwind_cpp_pr1
ve__aeabi_unwind_cpp_pr2
. - Kullanılmayan
.ctors
,.dtors
ve.eh_frame
, MIPScrt*_so.S
politikasından kaldırıldı. ndk-gdb
,ndk-build
DUMP_XXXX
için yalnızca son çıkış satırını alacak şekilde güncellendi. Bu değişiklik,Application.mk
veyaAndroid.mk
öğesinin$(info ...)
söz dizimiyle yazdırdığı bir öğeninDUMP_XXXX
sonucuna eklenmemesini sağlar. (Daha fazla bilgi)
- Düzeltilen NDK başlıkları:
- Diğer değişiklikler:
-
arch-x86
vearch-mips
üstbilgileriplatforms/android-[3,4,5,8]
etiketlerinden kaldırıldı. Hem X86 hem de MIPS ABI'leri yalnızca API 9 veya sonraki sürümlerde desteklendiği için bu başlıklar eksikti.- Basitleştirilmiş c++, aşağıda gösterildiği gibi bağımsız paketlerdeki yolu içerir.
(Sorun 35279)
<path>/arm-linux-androideabi/include/c++/4.6.x-google to: <path>/include/c++/4.6/
ndk-build
, varsayılan olarak daha fazla C++ dosya uzantısını tanıyacak şekilde düzeltildi:.cc .cp .cxx .cpp .CPP .c++ .C
. Bu uzantı ayarlarının üzerine yazmak içinLOCAL_CPP_EXTENSION
politikasını kullanmaya devam edebilirsiniz.samples/san-angeles
özelliğinde, yeniden başlatma sırasında siyah ekrana veya karenin donmasına neden olan bir sorun düzeltildi.- NDK örneklerinde desteği sonlandırılmış API'ler değiştirildi.
(Sayı 20017)
- Android-5'ten android-7'ye
hello-gl2
- Android-9'dan android-10'a
native-activity
- Android-9'dan android-10'a
native-audio
- Android-9'dan android-10'a
native-plasma
- Android-5'ten android-7'ye
- Hata ayıklama araçlarının uygun şekilde çalışabilmesi için
.note.android.ident
bölümünde (crtbegin_static/dynamic.o
içinde tanımlanmıştır) daha basit bir şemayla Android yürütülebilir dosyaları için yeni markalama özelliği eklendi. Yapı üyesi ve değerler aşağıdaki gibi tanımlanır:static const struct { int32_t namesz; /* = 8, sizeof ("Android") */ int32_t descsz; /* = 1 * sizeof(int32_t) */ int32_t type; /* = 1, ABI_NOTETYPE */ char name[sizeof "Android"]; /* = "Android" */ int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ }
.note.ABI-tag
bölümünde yer alan önceki markalama seçenekleri kullanımdan kaldırılmıştır. - Çeşitli koşullara sahip
run-tests.sh
vestandalone/run.sh
değerlerini çağıran yeni birrun-tests-all.sh
komut dosyası eklendi.run-tests.sh
komut dosyası,--abi
seçeneği olmadan çalışır. Ayrıca, desteklenen tüm ABI'ler için testlerin çoğunu derleyip ekli tüm cihazlarda çalışacak şekilde geliştirilmiştir.
Android NDK r8b (Temmuz 2012)
Bu sürümün ana özellikleri, yeni GNU Derleyici Koleksiyonu (GCC) 4.6 araç zinciri ve Android 4.1 (API Düzeyi 16) sistem görüntüsü için hata ayıklama desteği sunan GNU Debugger (GDB) 7.3.x aracı zinciridir.
- Önemli hata düzeltmeleri:
-
- Statik kitaplıklar için Mac OS, Windows Cygwin ortamlarında
LOCAL_SHORT_COMMANDS
sorunları düzeltildi. Liste dosyası oluşturma işlemi daha hızlıdır ve projelerin tekrar tekrar başlatılmasını önlemek için yeniden oluşturulmaz. ndk-gdb
öğesinde bazı sorunlar düzeltildi:- Araç, daha tutarlı bir şekilde ayarlamak için
-e
,-d
ve-s
işaretlerini iletecek şekilde güncellendi. - Araç, boşluk içeren cihaz seri adlarını kabul edecek şekilde güncellendi.
- Araç,
/system/bin/link
bilgilerini almak için güncellendi.Böylece ana makinedekigdb
,__dl_rtld_db_dlactivity
içinde bir ayrılma noktası ayarlayabilir ve bağlayıcı etkinliğinden haberdar olabilir (ör.dlopen()
çağrıldığındasolib
simgelerini yeniden tara).
- Araç, daha tutarlı bir şekilde ayarlamak için
- Windows'da
./libs/*/lib*.so
uygulamasını kaldırılamayanndk-build clean
düzeltildi. make
başarısız olduğundandk-build.cmd
değerinin sıfır olmayan birERRORLEVEL
döndürmesi düzeltildi.libc.so
işlevinin,__exidx_start
ve__exidx_end
simgelerini yanlış dışa aktarmayı durdurması düzeltildi.- ARM ve MIPS için yığının
__libc_init
değerini geçerken oluşanSEGV
düzeltildi.
- Statik kitaplıklar için Mac OS, Windows Cygwin ortamlarında
- Önemli değişiklikler:
-
- Orijinal GCC 4.4.3 araç zinciriyle (
binutils
2.19 ve GDB 6.6) birlikte kullanılmak için GCC 4.6 araç zinciri (gold
ve GDB 7.3.x ilebinutils
2.21) eklendi.- GCC 4.6 artık varsayılan araç zinciridir. Orijinal öğeyi seçmek için
Application.mk
içindeNDK_TOOLCHAIN_VERSION=4.4.3
değerini ayarlayabilirsiniz. gold
bağlayıcı desteği, yalnızca Linux ve Mac OS ana makinelerinde ARM ve x86 mimarileri için mevcuttur. Bu destek varsayılan olarak devre dışıdır. Etkinleştirmek içinAndroid.mk
hizmetineLOCAL_LDLIBS += -fuse-ld=gold
uygulamasını ekleyin.-fPIE
ile derlenen programlar, Android 4.1 (API Düzeyi 16) sistem görüntülerindeki ikili programlar da dahil olmak üzere hata ayıklama için yeniGDB
uygulamasını gerektirir.binutils
2.21ld
aracı, 2.22 sürümündeki geriye dönük düzeltmeler içerir:- Harici kitaplıklara zombi referanslarını yanlış bir şekilde koruyan
ld --gc-sections
düzeltildi. (daha fazla bilgi). - Geçerli olmaları durumunda,
GNU_RELRO
bölümündeki orijinalp_align
vep_flags
öğelerini korumak için ARMstrip
komutu düzeltildi. Bu düzeltme olmadan,-fPIE
ile oluşturulan programlarda hata ayıklaması yapılamadı. (daha fazla bilgi)
- Harici kitaplıklara zombi referanslarını yanlış bir şekilde koruyan
- Eski platformlarla uyumluluk için
sincos()
optimizasyonu devre dışı bırakıldı.
- GCC 4.6 artık varsayılan araç zinciridir. Orijinal öğeyi seçmek için
- Hiçbir zaman çıkarma (NX) bitini ve
relro
/bind_now
korumalarını varsayılan olarak etkinleştirmek için derleme seçenekleri güncellendi:- Yığın ve yığın üzerinde NX bitini etkinleştirerek arabellek taşması saldırılarına karşı NX koruması sağlayan derleyiciye
--noexecstack
ve bağlayıcıya-z noexecstack
eklendi. - Bellek bozulmasının neden olduğu güvenlik açıklarına karşı koruma sağlamak amacıyla, bağlantı kurduktan sonra dahili veri bölümlerinin sağlamlaştırılması için bağlayıcıya
-z relro
ve-z now
eklendi. (daha fazla bilgi: 1, 2) - Bu özellikler, aşağıdaki seçenekler kullanılarak devre dışı bırakılabilir:
- derleyici için
--execstack
, bağlayıcı için de-z execstack
seçeneğini ayarlayarak NX korumasını devre dışı bırakın. - Bağlayıcı için
-z norelro
ve-z lazy
seçeneklerini ayarlayarak dahili verileri sağlamlaştırmayı devre dışı bırakın. - Aşağıdaki seçenekleri ayarlayarak NDK'da bu korumaları
jni/Android.mk
devre dışı bırakabilirsiniz:LOCAL_DISABLE_NO_EXECUTE=true # disable "--noexecstack" and "-z noexecstack" DISABLE_RELRO=true # disable "-z relro" and "-z now"
Ayrıntılı bilgi için
docs/ANDROID-MK.html
belgesine göz atın. - derleyici için
- Yığın ve yığın üzerinde NX bitini etkinleştirerek arabellek taşması saldırılarına karşı NX koruması sağlayan derleyiciye
- Hata ayıklama araçlarının uygun şekilde çalışabilmesi için
.note.ABI-tag
bölümündeki (crtbegin_static/dynamic.o
içinde) Android yürütülebilir dosyaları için markalama eklendi. Yapı üyesi ve değerler aşağıdaki şekilde tanımlanır:static const struct { int32_t namesz; /* = 4, sizeof ("GNU") */ int32_t descsz; /* = 6 * sizeof(int32_t) */ int32_t type; /* = 1 */ char name[sizeof "GNU"]; /* = "GNU" */ int32_t os; /* = 0 */ int32_t major; /* = 2 */ int32_t minor; /* = 6 */ int32_t teeny; /* = 15 */ int32_t os_variant; /* = 1 */ int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ }
- Orijinal GCC 4.4.3 araç zinciriyle (
- Diğer hata düzeltmeleri:
-
mips-linux-gnu
yerinin değiştirilmesi,R_MIPS_TLS_LDM
soruna sığacak şekilde kısaltıldı. (daha fazla bilgi)--gc-sections
kullanılırkenld
araç segfaultları düzeltildi. (daha fazla bilgi)- MIPS
GOT_PAGE
sayma sorunu düzeltildi. (daha fazla bilgi) mips_elf_count_got_symbols
için uyarı simgesini takip etme bağlantısı düzeltildi.mips_elf_allocate_lazy_stub
için uyarı simgesini takip etme bağlantısı düzeltildi.- Yazılabilir olması için MIPS
.dynamic
veri segmentine taşındı. - Simgelerin sabit kodlanmış değerleri, MIPS için doğru segment boyutlarıyla değiştirildi.
- MIPS araç zincirindeki varsayılanlardan
-mno-shared
seçeneği kaldırıldı. Android araç zinciri için varsayılan değer-fPIC
'dir (veya destekleniyorsa-fpic
).-mshared
,-fpic
,-fPIC
,-fpie
veya-fPIE
öğesini açık bir şekilde belirtmezseniz MIPS derleyicisi, PIC'yi devre dışı bırakan-mno-shared
değerini ekler. Bu durumda derleyicinin-mno-shared
eklememesi düzeltildi. hello-jni
vetwo-libs
örneklerindeki yanlış paket adları düzeltildi, böylece altındakitests
projesi derlenebilir.
- Diğer Değişiklikler:
-
- İkili programların konumları değiştirildi:
gdbserver
,toolchain/<arch-os-ver>/prebuilt/gdbserver
konumundanprebuilt/android-<arch>/gdbserver/gdbserver
konumuna taşındı.i686-android-linux-
olan x86 araç zinciri öneki,i686-linux-android-
olarak yeniden adlandırıldı.sources/cxx-stl/gnu-libstdc++/include
velib
, GCC 4.6 ile derlendiğindesources/cxx-stl/gnu-libstdc++/4.6
konumuna veya GCC 4.4.3 ile derlendiğindesources/cxx-stl/gnu-libstdc++/4.4.3
konumuna taşındı.libbfd.a
velibintl.a
,lib/
kuruluş birimindenlib32/
kuruluş birimine taşındı.
- NDK araç zincirinin yeniden oluşturulması ve test edilmesinde çeşitli komut dosyaları eklendi ve iyileştirildi:
- Win32 ve Win64 yürütülebilir dosyaları oluşturan, Linux'ta barındırılan yeni bir araç zinciri oluşturmak için
build-mingw64-toolchain.sh
eklendi. clone
komutu kullanılarak ve NDK araç zinciri ikili programlarını oluşturmak için gereken dizinler için yalnızcacheckout
kullanılarakdownload-toolchain-sources.sh
hızı artırıldı.build-host-gcc.sh
vebuild-host-gdb.sh
komut dosyaları eklendi.- Belirli bir NDK yükleme dizininin veya mevcut bir NDK paketinin içeriğini kontrol etmek için
tests/check-release.sh
eklendi. tests/standalone/run.sh
bağımsız testi yeniden yazıldı .
- Win32 ve Win64 yürütülebilir dosyaları oluşturan, Linux'ta barındırılan yeni bir araç zinciri oluşturmak için
if_dl.h
başlığı tüm platformlardan ve mimarilerden kaldırıldı. AçıkladığıAF_LINK
vesockaddr_dl
öğeleri BSD'ye özgüdür (yani Linux'ta yoktur).
- İkili programların konumları değiştirildi:
Android NDK r8 (Mayıs 2012)
NDK'nın bu sürümü MIPS ABI desteği ve birkaç ek düzeltme içerir.
- Yeni özellikler:
-
- Uyumlu MIPS tabanlı Android cihazlarda çalışan makine kodu oluşturmanıza olanak tanıyan MIPS ABI desteği eklendi. MIPS'nin başlıca özellikleri arasında MIPS'ye özel araç zincirleri, sistem başlıkları, kitaplıklar ve hata ayıklama desteği yer alır. MIPS desteği hakkında daha fazla bilgi için NDK paketindeki
docs/CPU-MIPS.html
bölümüne bakın.Varsayılan olarak kod, ARM tabanlı cihazlar için oluşturulur. MIPS platformları için derleme yapmak üzere
Application.mk
dosyanızdakiAPP_ABI
tanımınızamips
ekleyebilirsiniz. Örneğin, aşağıdaki satırdandk-build
kodu, üç farklı ABI için kodunuzu derleme talimatı verir:APP_ABI := armeabi armeabi-v7a mips
ARM derleme kodu gibi mimariye özgü derleme kaynaklarından yararlanmıyorsanız MIPS makine kodu oluşturmak için
Android.mk
dosyalarınıza dokunmanız gerekmez. make-standalone-toolchain.sh
çağırırken--arch=mips
seçeneğini kullanarak bağımsız bir MIPS araç zinciri oluşturabilirsiniz. Ayrıntılı bilgi içindocs/STANDALONE-TOOLCHAIN.html
sayfasını inceleyin.
Not: Google Play, uygulamalarınızın yalnızca cihazları tarafından çalıştırılabilen kullanıcılara sunulduğundan emin olmak için, uygulamaları, uygulamanızdaki talimat grubu bilgilerine göre filtreler mi? için herhangi bir işlem yapmanız gerekmez. Buna ek olarak, Android sisteminin kendisi de uygulamanızı yükleme zamanında kontrol eder ve yalnızca uygulama cihazın CPU mimarisi için derlenmiş bir kitaplık sağlıyorsa yüklemenin devam etmesine izin verir.
- Uyumlu MIPS tabanlı Android cihazlarda çalışan makine kodu oluşturmanıza olanak tanıyan MIPS ABI desteği eklendi. MIPS'nin başlıca özellikleri arasında MIPS'ye özel araç zincirleri, sistem başlıkları, kitaplıklar ve hata ayıklama desteği yer alır. MIPS desteği hakkında daha fazla bilgi için NDK paketindeki
- Önemli hata düzeltmeleri:
-
- GAbi++ uygulamasında, türetilen
D
sınıfına aitb
temel sınıf nesnesinindynamic_cast<D>(b)
sonucunun temel sınıfın ters yönünde yanlış bir şekilde ayarlanmasına neden olan bir yazım hatası düzeltildi. (Sorun 28721) make-standalone-toolchain.sh
ürünününlibsupc++.*
kopyasını oluşturamamasına neden olan sorun düzeltildi.
- GAbi++ uygulamasında, türetilen
- Diğer hata düzeltmeleri:
-
- Kullanıcı,
SHELL
ortam değişkenini yeniden tanımlamış olsa bilendk-build.cmd
ürününün düzgün çalışmasını sağlamak içinndk-build.cmd
düzeltildi. Bu değişiklik, Windows ortamlarına çeşitli geliştirme araçları yüklenirken değiştirilebilir.
- Kullanıcı,
Android NDK r7c (Nisan 2012)
NDK'nın bu sürümü, Tegra2 tabanlı cihazlara yönelik önemli bir düzeltmenin yanı sıra birkaç ek düzeltme ve iyileştirme içerir:
- Önemli hata düzeltmeleri:
-
- GNU STL armeabi-v7a ikililerinin NEON olmayan cihazlarda kilitlenmemesi düzeltildi. NDK r7b ile sağlanan dosyalar doğru şekilde yapılandırılmadığından Tegra2 tabanlı cihazlarda ve belirli kayan nokta işlevleri (ör.
cosf
,sinf
,expf
).
- GNU STL armeabi-v7a ikililerinin NEON olmayan cihazlarda kilitlenmemesi düzeltildi. NDK r7b ile sağlanan dosyalar doğru şekilde yapılandırılmadığından Tegra2 tabanlı cihazlarda ve belirli kayan nokta işlevleri (ör.
- Önemli değişiklikler:
-
NDK_OUT
ortam değişkeni aracılığıyla özel çıkış dizinleri için destek eklendi. Tanımlandığında bu değişken,$PROJECT_PATH/obj
yerine oluşturulan tüm ara dosyaları depolamak için kullanılır. Değişken dendk-gdb
tarafından tanınır.Android.mk
içindeLOCAL_SHORT_COMMANDS
öğesinitrue
öğesine tanımlayarak yüzlerce, hatta binlerce kaynak dosyalı modüller oluşturma desteği eklendi.Bu değişiklik, NDK derleme sistemini komut satırı uzunluğu sınırlamalarına geçici bir çözüm olarak çoğu bağlayıcı veya arşivleyici seçeneğini liste dosyalarına yerleştirmeye zorluyor. Ayrıntılar için
docs/ANDROID-MK.html
sayfasını ziyaret edin.
- Diğer hata düzeltmeleri:
-
cpufeatures
yardımcı kitaplığındakiandroid_getCpuCount()
uygulaması düzeltildi. Çekirdeklerin sistem tarafından dinamik olarak etkinleştirildiği belirli cihazlarda, önceki uygulama, işlev ilk kez çağrıldığında fiziksel olarak kullanılabilir çekirdeklerin toplam sayısı yerine etkin çekirdeklerin toplam sayısını bildiriyordu.
Android NDK r7b (Şubat 2012)
Bu NDK sürümü, yerel Windows derlemeleri, Cygwin ve daha pek çok iyileştirme için düzeltmeler içerir:
- Önemli hata düzeltmeleri:
-
- Çok çekirdekli ARM tabanlı bazı cihazlarda doğruluk sorunlarını önlemek için
sys/atomics.h
güncellendi. Değiştirilmemiş kaynaklarınızı NDK'nın bu sürümüyle yeniden derlerseniz bu sorun tamamen ortadan kalkacaktır. Daha fazla bilgi içindocs/ANDROID-ATOMICS.html
inceleyin. - NDK r7'de (
binutils
2.20.1 sürümüne geçildi) görülen hata ayıklama sorunlarını düzeltmek içinbinutils
2.19 sürümüne geri dönüldü. - 32 bit Linux'ta
ndk-build
düzeltildi. Bir paketleme hatası, yürütülebilirawk
dosyasının 64 bit sürümünü NDK r7'deprebuilt/linux-x86/bin
altına yerleştirdi. - Yerel Windows derlemesi (
ndk-build.cmd
) düzeltildi. Diğer derleme modları bu durumdan etkilenmedi. Düzeltmeler şunları içerir:- Proje yolunuzun üst kısmında (ör. herhangi bir alt dizinde) olmayan bir dizinden
ndk-build.cmd
çağırmaya çalışırken oluşan sonsuz döngü / yığın taşması hatası kaldırıldı. - Otomatik olarak oluşturulan bağımlılık dosyalarının yoksayılmasına neden olan bir sorun düzeltildi. Bu da bir başlığın güncellenmesinin, ilgili başlığı içeren kaynakların yeniden derlenmesini tetiklemediği anlamına geliyordu.
- Dosya veya yollardaki boşluk ve tırnak işaretleri dışındaki özel karakterlerin doğru işlenmemesi sorunu düzeltildi.
- Proje yolunuzun üst kısmında (ör. herhangi bir alt dizinde) olmayan bir dizinden
-lstdc++
kullanılırken uygun ikili programlar oluşturmak (yani GNUlibstdc++
C++ çalışma zamanına karşı bağlantı oluşturmak) için bağımsız araç zinciri düzeltildi. Paylaşılan kitaplık sürümüne bağlamak istiyorsanız-lgnustl_shared
, statik sürüm için ise-lstdc++
kullanmanız gerekir.Bu düzeltmeyle ilgili daha fazla bilgi için
docs/STANDALONE-TOOLCHAIN.html
adresine bakın.- Cygwin'de
gnustl_shared
düzeltildi. Bağlayıcı, dosya doğru konumda olmasına rağmenlibsupc++.a
dosyasını bulamadığından şikayet etti. APP_STL
tarihine kadar belirli bir C++ çalışma zamanı kullanılmadığında Cygwin C++ bağlantısı düzeltildi.
- Çok çekirdekli ARM tabanlı bazı cihazlarda doğruluk sorunlarını önlemek için
- Diğer değişiklikler:
-
- Uygulamanız GNU
libstdc++
çalışma zamanını kullandığında, derleyici artık istisnaları ve RTTI'yı zorla etkinleştirmez. Bu değişiklik daha küçük bir kod oluşturulmasını sağlar.Bu özelliklere ihtiyacınız varsa aşağıdakilerden birini yapmanız gerekir:
- Modüllerinizde veya
Application.mk
ürününde istisnaları ve/veya RTTI'yı açık bir şekilde etkinleştirin. (önerilen) Application.mk
etiketinizdeAPP_GNUSTL_FORCE_CPP_FEATURES
ile'exceptions'
,'rtti'
veya her ikisini de tanımlayın. Ayrıntılı bilgi içindocs/APPLICATION-MK.html
sayfasını inceleyin.
- Modüllerinizde veya
- Uygulamanızda bağımsız işlemlerde çalışan özel hizmetler bulunduğunda
ndk-gdb
artık düzgün çalışıyor.ps
tarafından listelenen ve genellikle bir hizmet süreci olan ilk işlem yerine ana uygulama sürecindeki hataları ayıklar. - NDK r7'nin
LOCAL_ARM_MODE
değerini uygulayamamasına ve belirli kaynak dosyaları (tümünü değil) her zaman 32 bit talimatlara göre derlemesine neden olan nadir görülen hata düzeltildi. STLport
: Kaynakları Android platform sürümüyle eşleşecek şekilde yenileyin. Bu güncelleme, birkaç küçük hatayı düzeltir:- Tamamlanmamış bir türün örneklenmesi düzeltildi
- Düzeltilmiş küçük "==" ve "=" yazım hatası
string::assign
içindememcpy
yerinememmove
kullanıldıIsNANorINF
,IsINF
,IsNegNAN
vb. verilerin daha iyi işlenmesi eklendi
Ayrıntıların tamamı için kaydetme günlüğüne bakın.
STLport
: Gereksiz 5 statik başlatıcı kitaplıktan kaldırıldı.- Armeabi-v7a'ya ait GNU libstdc++ kitaplıkları, yanlışlıkla armeabi için derlendi. Bu değişikliğin doğruluk oranı üzerinde bir etkisi olmamıştır ancak doğru ABI'nin kullanılması biraz daha iyi performans sağlayacaktır.
cpu-features
yardımcı kitaplığı, isteğe bağlı üç x86 CPU özelliğini (SSSE3
,MOVBE
vePOPCNT
) bildirecek şekilde güncellendi. Daha fazla ayrıntı içindocs/CPU-FEATURES.html
sayfasını inceleyin.docs/NDK-BUILD.html
, özel birApplication.mk
dosyası seçmek içinNDK_APP_APPLICATION_MK
yerineNDK_APPLICATION_MK
ifadesini içerecek şekilde güncellendi.- Cygwin:
ndk-build
artık çağrıldığında geçerli dizinde boş bir "NUL" dosyası oluşturmuyor. - Cygwin: Daha iyi bir otomatik bağımlılık algılama özelliği eklendi. Önceki sürümde aşağıdaki durumlarda düzgün şekilde çalışmıyordu:
- Cygwin sürücü öneki
/cygdrive
değilken. - Örneğin, sürücüsüz montaj düzeneği kullanırken Cygwin'in
/home
dilindeC:\Some\Dir
yerine\\server\subdir
diline çeviri yapması.
- Cygwin sürücü öneki
- Cygwin:
ndk-build
, belirli Cygwin ve/veya GNU Make üzere$NDK/prebuilt/windows/bin
altındaki yerel Windows araçlarını kullanmaya çalışmaz.
- Uygulamanız GNU
Android NDK r7 (Kasım 2011)
NDK'nın bu sürümünde Android 4.0 platformunu destekleyen yeni özelliklerin yanı sıra diğer birçok ekleme ve iyileştirme bulunuyor:
- Yeni özellikler
-
- Android 4.0 (API düzeyi 14) için resmi NDK API'leri eklendi. Böylece aşağıdaki yerel özellikler platforma eklendi:
- Khronos Group OpenMAX AL 1.0.1 standardına dayalı yerel multimedya API'si eklendi. Yeni
<OMXAL/OpenMAXAL.h>
ve<OMXAL/OpenMAXAL_Android.h>
üst bilgileri, API düzeyi 14'ü hedefleyen uygulamaların, Android'e özel yeni bir arabellek sırası arayüzünü kullanarak doğrudan yerel koddan multimedya çıkışı gerçekleştirmesine olanak tanır. Daha fazla bilgi içindocs/openmaxal/index.html
ve http://www.khronos.org/openmax/ sayfalarını inceleyin. - Yerel ses API'si, Khronos Group OpenSL ES 1.0.1 standardına göre güncellendi. API Level 14 ile artık sıkıştırılmış sesin (ör. MP3, AAC, Vorbis) kodunu PCM'ye dönüştürebilirsiniz. Daha ayrıntılı bilgi için
docs/opensles/index.html
ve http://www.khronos.org/opensles/ sayfalarına göz atın.
- Khronos Group OpenMAX AL 1.0.1 standardına dayalı yerel multimedya API'si eklendi. Yeni
- CCache desteği eklendi. Büyük yeniden derleme işlemlerini hızlandırmak için
NDK_CCACHE
ortam değişkeniniccache
(veyaccache
ikili programınızın yolunu) olarak tanımlayın. NDK derleme sistemi, bildirildiğinde herhangi bir kaynak dosyayı derlerken otomatik olarak CCache kullanır. Örneğin:export NDK_CCACHE=ccache
Not: CCache, NDK sürümüne dahil değildir. Bu nedenle, kullanmadan önce yüklemiş olmanız gerekir. CCache hakkında daha fazla bilgi edinmek için http://ccache.samba.org adresini ziyaret edin.
- Belirtilen NDK sürümünüz tarafından desteklenen tüm ABI'ler için NDK modüllerinizi oluşturmak istediğinizi belirtmek amacıyla
APP_ABI
öğesiniall
değerine ayarlama desteği eklendi. Bu nedenleApplication.mk
etiketinizde aşağıdaki iki satırdan biri bu sürümle eşdeğerdir:APP_ABI := all APP_ABI := armeabi armeabi-v7a x86
Bu, komut satırından
ndk-build
çağrısı yaparkenAPP_ABI
öğesini tanımlarsanız da işe yarar. Bu, projeninApplication.mk file
değerini değiştirmeden projenizin desteklenen tüm ABI'ler için derlenip derlendiğini kontrol etmenin hızlı bir yoludur. Örneğin:ndk-build APP_ABI=all
Android.mk
öğesine, modülünüzün hangi C++ özelliklerini (RTTI veya İstisnalar) kullandığını bildirmenize olanak tanıyan birLOCAL_CPP_FEATURES
değişkeni eklendi. Bu, söz konusu özelliklere bağlı önceden oluşturulmuş modülleriniz varsa nihai bağlantı oluşturma işleminin doğru şekilde çalışmasını sağlar. Daha fazla bilgi içindocs/ANDROID-MK.html
vedocs/CPLUSPLUS-SUPPORT.html
hükümlerine bakın.- Derleme komutlarında kullanılan kaynak ve nesne dosyalarının kısaltılmış yolları. Proje yolunuzdan
$NDK/ndk-build
çağrılırken derleme komutlarına iletilen kaynak, nesne ve ikili dosya yolları geçerli dizine göre iletildiği için artık önemli ölçüde daha kısadır. Bu, çok sayıda kaynak dosyasına sahip projeler oluştururken, ana makine işletim sisteminiz tarafından desteklenen maksimum komut satırı uzunluğu sınırlarından kaçınmak için yararlıdır. Proje ağacınızın bir alt dizinindenndk-build
çağırırsanız veyaNDK_PROJECT_PATH
öğesini belirli bir dizini işaret edecek şekilde tanımlarsanız davranış değişmez.
- Android 4.0 (API düzeyi 14) için resmi NDK API'leri eklendi. Böylece aşağıdaki yerel özellikler platforma eklendi:
- Deneysel özellikler
-
Artık proje yolunuzdan komut satırından
ndk-build.cmd
komut dosyasını çağırarak Windows'da NDK kaynak dosyalarınızı Cygwin olmadan oluşturabilirsiniz. Komut dosyası, orijinalndk-build
komut dosyasıyla tam olarak aynı bağımsız değişkenleri alır. Windows NDK paketi, GNU Make, Awk ve derlemenin gerektirdiği diğer araçlar için kendi önceden oluşturulmuş ikili programlarıyla birlikte gelir. Çalışan bir derleme sistemi edinmek için başka bir şey yüklemeniz gerekmez.Önemli:
ndk-gdb
Windows'da çalışmadığından hata ayıklamak için yine de Cygwin'e ihtiyacınız vardır.Bu özellik henüz deneme aşamasında olduğu için deneyebilir ve herkese açık hata veritabanında veya herkese açık forumda sorunları bildirebilirsiniz. NDK ile gönderilen tüm örnekler ve birim testleri bu özellikle başarıyla derlenir.
- Önemli hata düzeltmeleri
-
Application.mk
içindeAPP_MODULES
tanımlanmamışsa içe aktarılan paylaşılan kitaplıklar artık varsayılan olarak hedef yükleme konumuna (libs/<abi>
) yüklenir. Örneğin,foo
adlı üst düzey bir modülbar
modülünü içe aktarırsa hemlibfoo.so
hem delibbar.so
, yükleme konumuna kopyalanır. Daha önce,APP_MODULES
öğelerinizdebar
belirtmediğiniz sürece yalnızcalibfoo.so
kopyalanıyordu.APP_MODULES
öğesini açık bir şekilde tanımlarsanız davranış değişmez.ndk-gdb
, artık ANA amaç filtrelerinde birden fazla kategori içeren etkinlikler için doğru şekilde çalışıyor.- Statik kitaplık içe aktarmaları artık düzgün bir şekilde geçişli. Örneğin,
foo
adlı üst düzey bir modülzoo
statik kitaplığını içe aktaranbar
statik kitaplığını içe aktarıyorsalibfoo.so
artık hemlibbar.a
hem delibzoo.a
ile bağlantı kuracaktır.
- Diğer değişiklikler
-
docs/NATIVE-ACTIVITY.HTML
: Yazım hatası düzeltildi. Minimum API düzeyi yerel etkinlikler için 8 değil, 9 olmalıdır.docs/STABLE-APIS.html
: API düzeyi 9'dan itibaren EGL'yi desteklenen kararlı API olarak listeleyen eksik dokümanlar eklendi.download-toolchain-sources.sh
: AOSP sunucularının yeni konumu olan android.googlesource.com adresindeki araç zinciri kaynaklarını indirmek için güncellendi.gabi++
adında yeni bir C++ destek çalışma zamanı eklendi. Bununla ilgili daha fazla bilgiyi güncellenmişdocs/CPLUSPLUS-SUPPORT.html
adresinde bulabilirsiniz.- GNU libstdc++ v3'ün (GPLv3 lisansı) paylaşılan kitaplık sürümüne karşılık gelen,
gnustl_shared
adlı yeni bir C++ destek çalışma zamanı eklendi. Daha fazla bilgi içindocs/CPLUSPLUS-SUPPORT.html
adresini ziyaret edin - STLport C++ çalışma zamanlarında RTTI desteği eklendi (istisnalar için destek yoktur).
LOCAL_CPP_EXTENSION
içerisine birden fazla dosya uzantısı desteği eklendi. Örneğin, hemfoo.cpp
hem debar.cxx
öğelerini C++ kaynakları olarak derlemek için şunu beyan edin:LOCAL_CPP_EXTENSION := .cpp .cxx
- NDK tarafından sağlanan bağlantı zamanı paylaşılan sistem kitaplıklarından istenmeyen birçok dışa aktarılmış simge kaldırıldı. Bu, bağımsız araç zinciri ile oluşturulan kodun, istikrarlı olmayan bir ABI sembolüne (ör.platformu oluşturmak için kullanılan araç zinciri her değiştirildiğinde değişen herhangi bir libgcc. a sembolü) yanlışlıkla bağlı olma riski taşımamasını sağlar.
- Daha fazla uzantıyı desteklemek için EGL ve OpenGLES Khronos başlıkları yenilendi. Her uzantının çalışma zamanında istemci uygulaması tarafından kontrol edilmesi gerektiğinden, bu işlemin ilgili kitaplıklar için NDK ABI'lerini değiştirmediğini unutmayın.
Kullanılabilen uzantılar, cihazın üzerinde çalıştığı platform sürümüne değil, gerçek cihazınıza ve GPU sürücülerine bağlıdır. Başlık değişiklikleri,
eglGetProcAddress()
veyaglGetProcAddress()
ile yoklama yapıldığında bunların kullanımını kolaylaştırmak için yeni sabit değerler ve türler ekler. Aşağıdaki listede yeni desteklenen uzantılar açıklanmaktadır:- GLES 1.x
-
GL_OES_vertex_array_object
GL_OES_EGL_image_external
GL_APPLE_texture_2D_limited_npot
GL_EXT_blend_minmax
GL_EXT_discard_framebuffer
GL_EXT_multi_draw_arrays
GL_EXT_read_format_bgra
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_lod_bias
GL_IMG_read_format
GL_IMG_texture_compression_pvrtc
GL_IMG_texture_env_enhanced_fixed_function
GL_IMG_user_clip_plane
GL_IMG_multisampled_render_to_texture
GL_NV_fence
GL_QCOM_driver_control
GL_QCOM_extended_get
GL_QCOM_extended_get2
GL_QCOM_perfmon_global_mode
GL_QCOM_writeonly_rendering
GL_QCOM_tiled_rendering
- GLES 2.0
-
GL_OES_element_index_uint
GL_OES_get_program_binary
GL_OES_mapbuffer
GL_OES_packed_depth_stencil
GL_OES_texture_3D
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_texture_half_float_linear
GL_OES_texture_npot
GL_OES_vertex_array_object
GL_OES_EGL_image_external
GL_AMD_program_binary_Z400
GL_EXT_blend_minmax
GL_EXT_discard_framebuffer
GL_EXT_multi_draw_arrays
GL_EXT_read_format_bgra
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_compression_dxt1
GL_IMG_program_binary
GL_IMG_read_format
GL_IMG_shader_binary
GL_IMG_texture_compression_pvrtc
GL_IMG_multisampled_render_to_texture
GL_NV_coverage_sample
GL_NV_depth_nonlinear
GL_QCOM_extended_get
GL_QCOM_extended_get2
GL_QCOM_writeonly_rendering
GL_QCOM_tiled_rendering
- EG
-
EGL_ANDROID_recordable
EGL_NV_system_time
Android NDK r6b (Ağustos 2011)
NDK'nın bu sürümü, r6 ile karşılaştırıldığında yeni hiçbir özellik içermiyor. r6b sürümü, r6 sürümündeki aşağıdaki sorunları ele alır:
- Önemli hata düzeltmeleri
-
- Çok mimarili derlemeler için
APP_ABI="armeabi x86"
kullanıldığında derleme düzeltildi. - NDK sürüm paketindeki önceden oluşturulmuş STLport ikili programlarının konumu düzeltildi. Sunum komut dosyasındaki bir hata, fotoğrafları yanlış konuma yerleştirdi.
- x86 bağımsız araç zinciriyle paylaşılan kitaplıklarda
atexit()
kullanımı düzeltildi. make-standalone-toolchain.sh --arch=x86
düzeltildi. Eskiden uygun GNU libstdc++ ikili programları doğru konuma kopyalanamıyordu.__dso_handle
simgesinin (yalnızca ARM) tanımının ve boyutunun eksik olmasıyla ilgili bağımsız araç zinciri bağlayıcı uyarıları düzeltildi.- x86 derlemeleri için
$(SYSROOT)/usr/include
ekleme sırası düzeltildi. Daha fazla bilgi için bug konusuna bakın. - x86 bağımsız araç zinciriyle kullanıldığında x86'ya özgü sistemlerdeki
ptrdiff_t
vesize_t
tanımları düzeltildi.
- Çok mimarili derlemeler için
Android NDK r6 (Temmuz 2011)
NDK'nın bu sürümü, x86 ABI ve diğer küçük değişiklikleri destekler.
Bu sürümdeki değişiklikleri açıklayan ayrıntılı bilgi için NDK paketinde yer alan CHANGES.HTML
dokümanını okuyun.
- Genel notlar:
-
- Uyumlu x86 tabanlı Android cihazlarda çalışan makine kodu oluşturmanıza olanak tanıyan x86 ABI desteği ekler. x86'nın başlıca özellikleri arasında x86'ya özel araç zincirleri, sistem başlıkları, kitaplıklar ve hata ayıklama desteği yer alır. x86 desteği ile ilgili tüm ayrıntılar için NDK paketindeki
docs/CPU-X86.html
sayfasına bakın.Varsayılan olarak, ARM tabanlı cihazlar için kod oluşturulur, ancak x86 platformları için derlemek üzere
Application.mk
dosyanızdakiAPP_ABI
tanımınıza x86 ekleyebilirsiniz. Örneğin, aşağıdaki satırdandk-build
kodu, üç farklı ABI için kodunuzu derleme talimatı verir:APP_ABI := armeabi armeabi-v7a x86
ARM tabanlı montaj kaynakları kullanmıyorsanız x86 makine kodu oluşturmak için
Android.mk
dosyalarınıza dokunmanız gerekmez. make-standalone-toolchain.sh
çağırırken--toolchain=x86-4.4.3
seçeneğini kullanarak bağımsız bir x86 araç zinciri oluşturabilirsiniz. Ayrıntılı bilgi içindocs/STANDALONE-TOOLCHAIN.html
sayfasını inceleyin.- Yeni
ndk-stack
aracı,logcat
içindeki yerel kodla oluşturulan yığın izlemeleri çevirmenizi sağlar. Araç, talimat adreslerini her yığın çerçevesine karşılık gelen işlev, kaynak dosya ve satır numarası gibi öğeleri içeren okunabilir bir biçime dönüştürür. Daha fazla bilgi ve kullanım örneği için bkz.docs/NDK-STACK.html
.
- Uyumlu x86 tabanlı Android cihazlarda çalışan makine kodu oluşturmanıza olanak tanıyan x86 ABI desteği ekler. x86'nın başlıca özellikleri arasında x86'ya özel araç zincirleri, sistem başlıkları, kitaplıklar ve hata ayıklama desteği yer alır. x86 desteği ile ilgili tüm ayrıntılar için NDK paketindeki
- Diğer değişiklikler: NDK r5'ten bu yana desteği sonlandırılan
arm-eabi-4.4.0
, NDK dağıtımından çıkarıldı.
Android NDK r5c (Haziran 2011)
NDK'nın bu sürümü, r5b ile karşılaştırıldığında yeni hiçbir özellik içermez. r5c sürümü, r5b sürümünde bulunan aşağıdaki sorunları ele alır:
- Önemli hata düzeltmeleri:
-
ndk-build
: Hata ayıklaması yapılabilir projelerin paralel derlemelerini gerçekleştirmeye çalışırken ortaya çıkan nadir görülen bir hata düzeltildi.LOCAL_WHOLE_STATIC_LIBRARIES
ürününün yeni araç zinciriyle düzgün çalışmasını engelleyen bir yazım hatası düzeltildi ve bunadocs/ANDROID-MK.html
içinde doküman eklendi.- API düzeyi 8'den (Android 2.2) eski bir platformda çalıştırıldığında
gnustl_static
öğesine bağlı kodun kilitlenmesine neden olan hata düzeltildi. ndk-gdb
: Android 3.0 veya daha yeni cihazlarda hata ayıklarken segmentasyon hatasına neden olan bir hata düzeltildi.<android/input.h>
: API düzeyi 9'da (Android 2.3) kullanıma sunulan iki işlev hatalıydı ve düzeltildi. Bu durum kaynak API'yi kesintiye uğratsa da sistemin ikili arayüzü değişmez. Yanlış işlevlerde birhistory_index
parametresi eksikti. Doğru tanımlar aşağıda gösterilmektedir:float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t pointer_index, size_t history_index); float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, size_t pointer_index, size_t history_index);
- API düzeyi 9 (Android 2.3) için C kitaplığı ARM ikili programı, bağlantı sırasında söz konusu API düzeyinde eklenen yeni işlevleri (ör.
pthread_rwlock_init
) doğru şekilde gösterecek şekilde güncellendi.
- Küçük iyileştirmeler ve düzeltmeler:
-
- Nesne dosyaları artık her zaman
LOCAL_SRC_FILES
ürününde göründükleri sırayla bağlanır. Dosyalar kaynak uzantılara göre gruplandırıldığı için bu durum daha önce geçerli değildi. import-module
başarısız olduğunda, aranan dizinlerin listesini yazdırır. Bu, derleme sistemi tarafından kullanılanNDK_MODULE_PATH
tanımının doğru olup olmadığını kontrol etmek açısından yararlıdır.import-module
başarılı olduğunda, modülün bulunduğu dizini günlüğe yazdırır (NDK_LOG=1
ile görünür).- Projede çok sayıda dahil etme dizini olduğunda hata ayıklaması yapılabilecek uygulamaların derleme hızı artırıldı.
ndk-gdb
:adb shell
hataları daha iyi tespit edildi ve hata mesajları iyileştirildi.<pthread.h>
: API düzeyi 9 (Android 2.3) ve sonraki sürümler içinPTHREAD_RWLOCK_INITIALIZER
tanımı düzeltildi.- Bir modülün kendisini içe aktararak GNU Make'de sonsuz döngüye neden olması sorunu düzeltildi.
LOCAL_ARM_NEON
doğru değerine ayarlandığında derlemenin başarısız olmasına neden olan bir hata düzeltildi (build/core/build-binary.mk
ürününde yazım hatası)..s
derleme dosyasının derlenmesini engelleyen bir hata düzeltildi (.S
dosya sorunsuzdu).
- Nesne dosyaları artık her zaman
Android NDK r5b (Ocak 2011)
NDK'nın bu sürümü, r5'e kıyasla yeni hiçbir özellik içermiyor. r5b sürümü, r5 sürümünde bulunan aşağıdaki sorunları ele almaktadır:
- r5 ikili programları için glibc 2.11 gerekirken r5b ikili programları, glibc 2.7 veya sonraki sürümleri hedefleyen özel bir araç zinciriyle oluşturulur. Linux araç zinciri ikili programları artık Ubuntu 8.04 veya sonraki sürümlerde çalışmaktadır.
- arm-linux-androideabi-4.4.3 araç zincirindeki derleyici hatasını düzeltir. Önceki ikili program, imzalı karakterlerle çalışırken geçersiz baş parmak talimat sıraları oluşturdu.
- APP_STL için "gnustl_static" değeri için eksik dokümanları ekler. Bu sayede, GNU libstdc++'ın statik kitaplık sürümüne bağlantı oluşturabilirsiniz.
- Aşağıdaki
ndk-build
sorun düzeltildi:- Windows'da bir derleme hatası oluştuğunda tutarsız bağımlılık dosyaları oluşturan bir hata. Bu durum, kaynak koddaki hata düzeltildikten sonra düzgün bir derlemenin engellenmesini sağladı.
- Android NDK kurulumu veya proje yolu için çok kısa yollar kullanılmasının geçersiz bağımlılık dosyaları oluşturulmasına neden olduğu Cygwin'e özgü bir hata. Bu da artımlı derlemeleri imkansız hale getirdi.
- cpufeatures kitaplığının yeni NDK araç zinciriyle doğru şekilde çalışmasını engelleyen bir yazım hatası oluştu.
- Cygwin'deki derlemeler her kaynak veya nesne dosyası için GNU Make'den
cygpath -m
öğesine yapılan çağrılardan kaçınarak daha hızlıdır. Bu durum çok büyük kaynak ağaçlarında sorunlara neden olur. Bu işlem düzgün çalışmazsacygpath -m
tekrar kullanmak için ortamınızdaNDK_USE_CYGPATH=1
öğesini tanımlayın. - Cygwin yüklemesi artık kullanıcıyı boşluk içeren geçersiz yükleme yolları konusunda bilgilendirir. Önceden, geçersiz bir yol, doğru sürüm yüklenmiş olsa bile GNU Make'nin yanlış bir sürümüyle ilgili şikayette bulunan bir hata verirdi.
- İki nokta üst üste karakteriyle ayrılmış birden fazla dizin içerdiğinde
NDK_MODULE_PATH
ortam değişkeninin düzgün çalışmasını engelleyen bir yazım hatası düzeltildi. prebuilt-common.sh
komut dosyası, ana makine etiketine güvenmek yerine, derleyicide 64 bit tarafından oluşturulmuş makine kodunu kontrol edecek düzeltmeler içerir. Bu, 32 bit araç zincirinin Snow Leopard'da düzgün bir şekilde yeniden oluşturulmasını sağlar. Komut dosyalarını yeniden oluşturma aracı artık 32 bit ana makine araç zincirinin kullanılmasını da destekliyor.<netinet/in.h>
içinINET_ADDRSTRLEN
için eksik beyan eklendi.IN6_IS_ADDR_MC_NODELOCAL
veIN6_IS_ADDR_MC_GLOBAL
için eksik beyanlar<netinet/in6.h>
öğesine eklendi.- "asm",
-std=c99
ile derlemeye izin vermek için<asm/byteorder.h>
dilinde "__asm__" ile değiştirildi.
Android NDK r5 (Aralık 2010)
NDK'nın bu sürümünde birçok yeni API yer alıyor. Bu API'lerin çoğu yerel koddan yoğun şekilde yararlanan benzer uygulamaların ve oyunların geliştirilmesini desteklemek için kullanıma sunulmuştur. Geliştiriciler API'leri kullanarak etkinliklere, seslere, grafiklere, pencere yönetimine, öğelere ve depolama alanına doğrudan yerel erişim elde ederler. Geliştiriciler, yeni NativeActivity
sınıfının yardımıyla Android uygulama yaşam döngüsünü yerel kodda da uygulayabilir. Bu sürümdeki değişiklikleri açıklayan ayrıntılı bilgi için indirilen NDK paketinde yer alan CHANGES.HTML
dokümanını okuyun.
- Genel notlar:
-
- Android uygulama yaşam döngüsünü yerel kodda uygulamanıza olanak tanıyan yerel etkinlikler için destek ekler.
- Aşağıdakiler için yerel destek ekler:
- Giriş alt sistemi (klavye ve dokunmatik ekran gibi)
- Sensör verilerine (ivme ölçer, pusula, jiroskop vb.) erişim.
- Giriş ve sensör etkinlikleri gibi şeyleri beklemek için etkinlik döngüsü API'leri.
- Pencere ve yüzey alt sistemi
- Oynatma ve kayıt özelliğinin yanı sıra platformun ses efektleri üzerinde kontrolü destekleyen OpenSL ES standardını temel alan Ses API'leri
.apk
dosyasında paketlenmiş öğelere erişim.
- Daha iyi kod oluşturan yeni bir araç zincirini (GCC 4.4.3'ü temel alır) içerir ve artık
./configure && make
ile kendi öğelerini oluşturmak isteyen kişiler için bağımsız bir çapraz derleyici olarak da kullanılabilir. Ayrıntılar için docs/STANDALONE-TOOLCHAIN.html sayfasına bakın. GCC 4.4.0 için ikili programlar hâlâ sağlansa da 4.2.1 ikili programları kaldırılmıştır. - Üçüncü taraf modüllerin paylaşılmasını ve yeniden kullanılmasını çok daha kolay hale getirmek için önceden oluşturulmuş statik ve paylaşılan kitaplıklar (docs/PREBUILTS.html) ve modül dışa ve içe aktarma işlemleri için destek ekler (docs/IMPORT-MODULE.html bunun nedenini açıklar).
- Yardımcı modül olarak varsayılan bir C++ STL uygulaması (STLport'a göre) sağlar. Statik veya paylaşılan kitaplık olarak kullanılabilir (ayrıntılar ve kullanım örneklerisources/android/stlport/README içindedir). Varsayılan C++ STL uygulaması yerine bu kitaplıklara göre derlemeyi seçerseniz STLport (statik veya paylaşılan) ve GNU libstdc++ (yalnızca statik) için önceden oluşturulmuş ikili programlar da sağlanır. Varsayılan STL uygulamasında C++ İstisnaları ve RTTI desteklenmez. Daha fazla bilgi edinmek için docs/CPLUSPLUS-SUPPORT.HTML sayfasına bakın.
cpufeatures
yardımcı kitaplığında, CPU türü raporlamasını iyileştiren iyileştirmeler içerir (bazı cihazlar daha önce ARMv7 CPU'yu, cihaz gerçekten ARMv6 olduğunda bildirmiştir). Bu kitaplığı kullanarak uygulamalarını yeniden derleyip daha sonra iyileştirmelerden faydalanmak için Google Play'e yükleme yapan geliştiricilerin kullanmasını öneririz.- OpenGL ES dokuları ve hizmetlerini oluşturup yönetmenize olanak tanıyan bir EGL kitaplığı ekler.
- Yerel etkinliğin nasıl yazılacağını göstermek için yeni örnek uygulamalar (
native-plasma
venative-activity
) ekler. - Çok sayıda hata düzeltmesi ve diğer küçük iyileştirmeler içerir. Değişikliklerin daha ayrıntılı bir listesi için docs/CHANGES.html sayfasına bakın.
Android NDK r4b (Haziran 2010)
- NDK r4b notları:
-
NDK derleme ve hata ayıklama komut dosyalarındaki çeşitli sorunlara yönelik düzeltmeler içerir. NDK r4 kullanıyorsanız NDK r4b derlemesini indirmenizi öneririz. Bu sürümdeki değişiklikleri açıklayan ayrıntılı bilgi için indirilen NDK paketinde yer alan CHANGES.TXT belgesini okuyun.
- Genel notlar:
-
- Yeni
ndk-build
derleme komutuyla basitleştirilmiş bir derleme sistemi sağlar. - Yeni
ndk-gdb
komutu aracılığıyla, üretim cihazlarında oluşturulan makine kodunda kolay yerel hata ayıklama desteği eklendi. - ARM tabanlı CPU mimarileri için Android'e özel yeni bir ABI ekler:
armeabi-v7a
. Yeni ABI, mevcutarmeabi
ABI'nın kapsamını şu CPU talimat grubu uzantılarını içerecek şekilde genişletir:- Beğenme-2 talimatları
- VFP donanım FPU talimatları (VFPv3-D16)
- ARM Gelişmiş SIMD (NEON) GCC içselleri ve VFPv3-D32 için isteğe bağlı destek. Motorola Verizon Droid, Google Nexus One ve benzeri cihazlar tarafından desteklenir.
- Uygulamanızın çalışma zamanında ana cihazın CPU özelliklerini algılayabilmesini sağlayan yeni bir
cpufeatures
statik kitaplığı (kaynaklarla birlikte) ekler. Uygulamalar özellikle ARMv7-A desteğinin yanı sıra VFPv3-D32 ve NEON desteğini kontrol edip gerektiğinde ayrı kod yolları sağlayabilir. - CPU özelliklerini kontrol etmek için
cpufeatures
kitaplığının nasıl kullanılacağını gösteren ve daha sonra CPU tarafından destekleniyorsa NEON yapısını kullanarak optimize edilmiş bir kod yolu sağlamayı gösterenhello-neon
adlı örnek bir uygulama ekler. - NDK tarafından desteklenen talimat gruplarından biri veya her ikisi için makine kodu oluşturmanıza olanak tanır. Örneğin, aynı anda hem ARMv5 hem de ARMv7-A mimarileri için derleme yapabilir ve her şeyi uygulamanızın nihai
.apk
bölümünde saklayabilirsiniz. - Google Play, uygulamalarınızın yalnızca kullanıcıların cihazları çalıştırabilecek şekilde kullanılabilmesini sağlamak için uygulamaları artık uygulamanızda bulunan talimat grubu bilgilerine göre filtreliyor. Filtrelemeyi etkinleştirmek için herhangi bir işlem yapmanız gerekmiyor. Ayrıca, Android sisteminin kendisi de uygulamanızı yükleme sırasında kontrol eder ve yalnızca uygulama cihazın CPU mimarisi için derlenmiş bir kitaplık sağlıyorsa yüklemenin devam etmesine izin verir.
- Yerel koddan
Bitmap
nesnelerinin piksel arabelleklerine erişmek için yeni kararlı API de dahil olmak üzere Android 2.2 desteği eklendi.
- Yeni
Android NDK r3 (Mart 2010)
- Genel notlar:
-
- OpenGL ES 2.0 yerel kitaplık desteği ekler.
- OpenGL ES 2.0 köşe ve parça gölgelendiricilerin kullanımını gösteren örnek bir uygulama
hello-gl2
ekler. - Araç zinciri ikili programları, bu sürüm için GCC 4.4.0 ile yenilendi. Bu sürüm, öncekinden (4.2.1) biraz daha küçük ve verimli bir makine kodu oluşturacak. NDK, isteğe bağlı olarak makine kodunuzu derlemek için kullanabileceğiniz 4.2.1 ikili programlarını da sunmaya devam etmektedir.
Android NDK r2 (Eylül 2009)
İlk olarak "Android 1.6 NDK, Sürüm 1" olarak yayınlandı.
- Genel notlar:
-
- OpenGL ES 1.1 yerel kitaplık desteği ekler.
- Etkinlik yaşam döngüsünü
GLSurfaceView
nesnesiyle yönetirken yerel OpenGL ES API'leri aracılığıyla 3D grafikler oluşturansan-angeles
adlı örnek bir uygulama ekler.
Android NDK r1 (Haziran 2009)
İlk olarak "Android 1.5 NDK, Sürüm 1" olarak yayınlandı.
- Genel notlar:
-
- Thumb-1 talimatları dahil olmak üzere ARMv5TE talimatları için derleyici desteği (GCC) içerir.
- Kararlı yerel API'ler, belgeler ve örnek uygulamalar için sistem başlıkları içerir.