NDK Düzeltme Geçmişi

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 sunulan herhangi bir beta sürümünü indirmek için NDK indirmeleri sayfasına bakın.

Bkz. Daha eksiksiz bilgi edinmek için android-ndk-announce Google Grubu'nu ziyaret edin ve sürüm duyurularını almak için abone olun.

Android NDK r27 LTS (Temmuz 2024)

Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • KitKat (API 19 ve 20) artık desteklenmemektedir.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • Android 13 API'lerini içerir.
  • LLVM, LLVM 14 geliştirilmesine bağlı olarak clang-r450784d olarak güncellendi.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • GNU Derleyici (GAS) kaldırıldı. Proje yürütülürken -fno-integrated-as bu işareti kaldırmanız gerekir. Görüntüleyin Derlemeyi uyumlu hale getirmeyle ilgili öneriler için Clang Taşıma Notları geliştirmeyi öğreneceksiniz.
  • GDB kaldırıldı. Bunun yerine LLDB kullanın. ndk-gdb'nin LLDB kullandığını unutmayın: ve Android Studio şimdiye kadar yalnızca LLDB'yi destekliyor.
  • Jelly Bean (API'ler 16, 17 ve 18) artık desteklenmemektedir. Minimum NDK tarafından desteklenen işletim sistemi KitKat'tır (API düzeyi 19).
  • Neon olmayan cihazlar artık desteklenmiyor. Çok az sayıda eski cihazlarda Neon desteği olmadığından çoğu uygulama bir kenarda performans artışını göz önünde bulundurabilirsiniz.
  • RenderScript derleme desteği kaldırıldı. RenderScript (önceki): desteği sonlandırılmıştır. Taşıma işlemini tamamlamadıysanız uygulamalarınızı RenderScript, NDK r23 LTS'den uzaklaştırın.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • GNU Derleyici (GAS) hariç olmak üzere GNU bağlayıcıları kaldırıldı. GAS sonraki sürümde kaldırılacaktır. Proje bazlı -fno-integrated-as, engelleyen bir durum varsa dosya hataları bayrağı kaldırmanızı sağlar.
  • GDB desteği sona erdi. GDB sonraki sürümden kaldırılacaktır. Bunun yerine LLDB kullanın. ndk-gdb web sitesinin varsayılan olarak LLDB kullandığını unutmayın.
  • NDK r23, neon olmayan cihazları destekleyen son sürümdür. Şununla başlayan: NDK r24 ile sysroot içindeki armeabi-v7a kütüphaneleri Neon. Çok eskilerden çok az sayıda cihaz Neon'u desteklemediğinden performans artışı dışında çoğu uygulama fark etmeyecek.
  • Jelly Bean (API 16, 17 ve 18) bir sonraki NDK'da desteklenmeyecek kullanabilirsiniz. r24 için NDK tarafından desteklenen minimum işletim sistemi KitKat olacaktır (API düzeyi 19).
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • GNU binutils desteği sonlandırıldı ve yaklaşan bir NDK'da kaldırılacak kullanabilirsiniz. GNU derleyicisi (as) bunun kapsamındadır. Proje bazlı -fno-integrated-as, engelleyen bir durum varsa dosya hataları bayrağı kaldırmanızı sağlar. as kullanıyorsanız doğrudan clang kullanın.
  • LLD artık varsayılan bağlayıcı oldu. ndk-build ve CMake araç zinciri dosyamız da llvm-ar ve llvm-strip değerleri geçerlidir.
  • ndk-gdb artık hata ayıklayıcı olarak lldb'yi kullanıyor. gdb desteği sonlandırıldı ve daha sonraki bir sürümde kaldırılacaktır. gdb'ye geri dönmek için --no-lldb kullanın. seçeneğini belirleyin. Ama lütfen hata bildiriminde bulunun neden kullanamadığınızı anlatacağım.
  • std::filesystem desteği artık dahil. İki tür bilinen sorunlar:
    • Sorun 1258: std::filesystem::perm_options::nofollow eski cihazlarda kullanılamaz.
    • Sorun 1260: std::filesystem::canonical şunu yapacak: eski sistemde var olmayan bir yol geçirildiğinde yanlış bir şekilde başarılı cihazlar.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • 32 bit Windows artık desteklenmiyor. Bu işlem, geniş kapsamlı reklam kullanıcı çoğunluğu için geçerli. Yine de NDK uygulamalarını Windows'un 32 bit sürümlerinde NDK r20'yi kullanmaya devam edin.

    Android Geliştirici Araçları'ndaki bu değişiklikle ilgili daha fazla bilgi edinmek için bkz. blog yayını çok önemsiyor.

  • LLD artık test edilebilir. AOSP varsayılan olarak LLD kullanmaya başladı. NDK da bunu takip edecek. (zaman çizelgesi bilinmiyor). -fuse-ld=lld geçilerek uygulamanızda LLD'yi test edin unutmayın. Lütfen Sorun 843 binutils şeridiyle LLD kullanan derlemeleri ve llvm-strip ve llvm-objcopy ile karşılaştırıldığında.
  • Eski araç zinciri yükleme yolları yakında kaldırılacak yayınlar. Bu yollar, NDK r19'dan bu yana büyük bir alan oluşturuyor. Kaldırılan yollar şunlardır:
    • platformlar
    • kaynaklar/cxx-stl
    • Sysroot
    • araç zincirleri (araç zincirleri/llvm hariç)
    ziyaret edin. Genel olarak bu değişiklik yalnızca derleme sistemi bakımlarını etkilemeli veya kullanan kişiler olabilir. ndk-build ve CMake araç zinciri kullanıcıları bu değişikliklerden etkilenmemiştir ve make_standalone_toolchain.py kullanıcıları (ancak bu komut dosyası gereksizdir). Eski araç zinciri düzeninden başka bir sisteme geçiş hakkında bilgi için bkz. Sistem Bakımı Kılavuzu Derleme için geçerli bir çözüm sunar.
  • Play Store, APK yüklenirken 64 bit desteği gerektirir kullanıma sunmaya başlayacağız. Sonrasında sürprizlerle karşılaşmamak için geliyor. Daha fazla bilgi için bkz. bu blog yayınına göz atın.
  • İmzalanmış ve noter onaylı bir macOS uygulama paketi artık ve web sitemizden indirebileceksiniz. Yalnızca paketler NDK’nın geleneksel NDK paketi olan noter onayından geçen macOS noter onaylanamaz. SDK, Google Etiket Yöneticisi'nin gereken düzen değişiklikleri gerektirdiğinden, Android Studio ile uyumsuz hale getirir. NDK, SDK yöneticisi aracılığıyla indirildiğinde karantinaya alınır, dolayısıyla şu anda bu adımları uygulayın. SDK yöneticisi şu anda NDK'yı edinmenin güvenilir bir yolu.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • LLD artık test edilebilir. AOSP, varsayılan olarak LLD kullanımına geçiş sürecindedir ve NDK takip edecek (zaman çizelgesi bilinmiyor). Uygulamanızda LLD'yi test etmek için Bağlantı oluşturulurken -fuse-ld=lld.
  • Play Store, APK yüklenirken 64 bit desteği gerektirir kullanıma sunmaya başlayacağız. Sonrasında sürprizlerle karşılaşmamak için geliyor. Daha fazla bilgi için bkz. bu blog yayınına göz atın.
  • Android Q API'leri eklendi.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • Geliştiriciler, uygulamalarını LLD ile test etmeye başlamalıdır. AOSP, LLD olarak tanımlanmıştır. NDK, sonraki aşamalarda varsayılan olarak kullanabilirsiniz. BFD ve Altın, LLD'nin ilgili aşamadaki büyük çözülmemiş sorun içermeyen yayın döngüsü (tahmini r21). Test et Bağlama işlemi sırasında -fuse-ld=lld ileterek uygulamanızda LLD. Not: lld, şu anda Windows'da sıkıştırılmış sembolleri desteklememektedir. Sorun 888). Clang aynı zamanda Windows'da sıkıştırılmış semboller oluşturamaz, Ancak bu durum, Darwin'den veya Linux'a dokunun.
  • Play Store, APK yüklenirken 64 bit desteği gerektirir kullanıma sunmaya başlayacağız. Sonrasında sürprizlerle karşılaşmamak için geliyor. Daha fazla bilgi için bkz. bu blog yayınına göz atın.
  • Sorun 780: Bağımsız araç zincirlerine artık gerek yoktur. Clang, binutils, sysroot, ve diğer araç zinciri parçalarının tamamı artık $NDK/toolchains/llvm/prebuilt/<host-tag> ve Clang otomatik olarak bulur. Bağımsız bir metin oluşturmak yerine Bunun yerine derleyiciyi doğrudan şuradan çağırın: NDK:
    $ $NDK/toolchains/llvm/prebuilt//bin/armv7a-linux-androideabi26-clang++ src.cpp
               
    . r19'da, derleme işlemini gerçekleştirmek için eski yola da yeni düzene uyum sağlama olanağı tanır. Eski yollar r20'de kaldırıldı. make_standalone_toolchain.py komut dosyası emin olun. Artık gerekli değildir ve yukarıdaki mesajı içeren bir uyarı verir. ancak komut dosyası, mevcut bilgileri korumak için iş akışlarını takip eder. ndk-build, CMake veya bağımsız bir araç zinciri kullanıyorsanız iş akışınızda herhangi bir değişiklik olmamalıdır. Bu değişiklik, üçüncü taraf derleme sistemlerinin bakımını yapan, artık bu sistemlerin Android'e özel bazı kodları silin. Daha fazla bilgi için Oluşturma Sistem Bakımı kılavuzu.
  • ndk-depends kaldırıldı. ReLinker'ın eski Android'de yerel kitaplık yükleme sorunlarına daha iyi bir çözüm sürümleri vardır.
  • Sorun 862: Clang'a yönlendirilen GCC sarmalayıcı komut dosyaları kaldırıldı. çünkü değişimde kullanılacak kadar işlevsel değil.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • GCC kaldırıldı.
  • LLD artık test edilebilir. AOSP, varsayılan olarak LLD kullanımına geçiş sürecindedir ve NDK takip edecek (zaman çizelgesi bilinmiyor). Uygulamanızda LLD'yi test etmek için Bağlantı oluşturulurken -fuse-ld=lld.
  • gnustl, gabi++ ve stlport kaldırıldı.
  • ICS (android-14 ve android-15) desteği kaldırılmıştır. Uygulamalar yürütülebilir dosya kullanıldığında artık hem PIE hem de PIE olmayan yürütülebilir.
  • Play Store, APK yüklenirken 64 bit desteği gerektirir kullanıma sunmaya başlayacağız. Sonrasında sürprizlerle karşılaşmamak için geliyor. Daha fazla bilgi için bkz. bu blog yayınına göz atın.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
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. Eğer manuel olarak farklı bir STL seçtiyseniz libc++ bölümüne taşıyın. ndk-build'in varsayılan olarak hayır olduğunu unutmayın STL. Daha fazla bilgi için bkz. bu blog yayınına göz atın.
  • gnustl ve stlport desteği sonlandırılmış olup NDK r18'de kaldırılacaktır.
  • ARMv5 (ermeabi), MIPS ve MIPS64 için destek kaldırılmıştır. Bu ABI'lerden herhangi birini oluşturmaya çalışırsanız hatayla karşılaşırsınız.
  • ICS (android-14 ve android-15) desteği r18'den kaldırılacaktır.
  • Play Store, APK yüklenirken 64 bit desteği gerektirir kullanıma sunmaya başlayacağız. Sonrasında sürprizlerle karşılaşmamak için geliyor. Daha fazla bilgi için bkz. bu blog yayınına göz atın.
Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • Kullanımdan kaldırılan başlıklar kaldırıldı. Birleştirilmiş Başlıklar artık sadece "Başlıklar" olarak adlandırılmaktadır. Taşımayla ilgili ipuçları için bkz. Birleştirilmiş Üstbilgi Taşıma Notları.
  • GCC artık desteklenmiyor. Henüz NDK'dan kaldırılmayacaktır, ancak artık kaldırılmayacaktır çok iyi olacaktır. libc++, gerekli stabiliteyi sağlayacak kadar kararlı hale gelene kadar, varsayılan olarak, gnustl'ın bazı bölümleri hâlâ Clang ile uyumsuz olduğundan Şu andan itibaren diğer STL'ler r18'de kaldırılmıştır.
  • libc++, beta sürümünden çıktı ve şu anda NDK'da tercih edilen STL'dir. 17. sürümden itibaren libc++, CMake ve bağımsız araç zincirleri için varsayılan STL'dir. Manuel olarak farklı bir STL ile kullanmak istiyorsanız libc++ sürümüne geçmenizi önemle tavsiye ederiz. Daha fazla bilgi için bkz. bu blog yayınımıza göz atın.
  • ARM5 (ermeabi), MIPS ve MIPS64 için destek sonlandırılmıştır. Artık varsayılan olarak oluşturulmayacaklar ndk-build ile çalışır, ancak açıkça adlandırılırsa ve "all" tarafından dahil edilirlerse yine de derlenebilirler, "all32" ve "all64". Bunların her biri için sağlanan destek r17'de kaldırılmıştır. Hem CMake hem de ndk-build bu ABI'lerden herhangi birini hedeflerseniz bir uyarı verir.
API'ler

Android için yerel API'ler eklendi 8.1. Bu API'ler hakkında daha fazla bilgi edinmek için Yerel API'lere genel bakış

Bu sürümdeki yenilikler ve değişiklikler hakkında daha fazla bilgi için şu sayfaya bakın: changelog.

Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • Birleştirilmiş üstbilgiler varsayılan olarak etkindir. Bu araçları nasıl kullanacağınızı başlıkları öğrenmek için Unified Headers.
  • Not: Kullanımdan kaldırılan üst bilgiler yakında kaldırılacaktır: kullanabilirsiniz. Bu başlıklarla ilgili herhangi bir sorunla karşılaşırsanız lütfen bug hataları için geçerlidir.

    Taşımayla ilgili ipuçları için şuraya bakın: birleştirilmiş üstbilgi taşıma notlarını inceleyin.

  • GCC artık desteklenmiyor. Henüz NDK'dan kaldırılmadı, ancak artık geri bağlantı almıyor. libc++ varsayılan olacak kadar stabilize olana kadar kaldırılamaz. gnustl hâlâ Clang ile uyumsuz.
  • Android 2.3 (android-9) artık desteklenmiyor. Şuradaki minimum API düzeyi hedefi: NDK, artık Android 4.0 (android-14) oldu. APP_PLATFORM ayarlandıysa android-14 değerinden düşük ise bunun yerine android-14 kullanılır.
  • NDK'da CMake, artık x86 ve x86-64 mimarileri. Daha fazla bilgi edinmek için bkz. Derleme kodu oluşturma.
API'ler

Android 8.0 için yerel API'ler eklendi. Daha fazla bilgi edinmek için 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 şu sayfaya bakın: changelog.

Değişiklik günlüğü
İndirilenler
  • Bu sürümü indirebilirsiniz burada bulabilirsiniz.
Duyurular
  • Birleştirilmiş üstbilgiler: Bu sürümde, senkronize edilen platform başlıkları kullanıma sunulmuştur. her zaman güncel ve doğru olmasını sağladı. Yalnızca başlıkla ilgili hatalar giderildi tüm API düzeylerini etkiler. Birleştirilmiş üst bilgilerin kullanıma sunulması, önceki NDK'daki tutarsızlıkları giderir. yayınlar, örneğin:
    • M ve N'deki başlıklar aslında L'nin başlıklarıydı.
    • Başlıklardaki işlev bildirimleri, platform düzeyleriyle doğru şekilde eşleşmiyordu; başlıklar mevcut olmayan işlevler bildirdi veya kullanılabilir işlevleri bildiremedi.
    • Eski API düzeylerinin birçoğunda, yeni API'de bulunan eksik veya yanlış sabit değerler vardı seviyelere dokunun.

    Bu yeni birleştirilmiş başlıklar varsayılan olarak etkin değildir. Bunları nasıl etkinleştireceğinizi ve başlıkları öğrenmek için Birleştirilmiş Başlıklar.

  • GCC'nin kullanımdan kaldırılması: Bu sürüm, GCC için etkin desteği sonlandırmaktadır. GCC, NDK'ya henüz katılmadınız, ancak bundan sonra geri bağlantı almayacak. Gnustl’ın bazı kısımları hala Clang ile uyumlu olmadığı için GCC, libc++ kararlı hale gelene kadar tamamen kaldırılmaz varsayılan olarak ayarlanır.

Bu sürümdeki yenilikler ve değişiklikler hakkında daha fazla bilgi için şu sayfaya bakın: changelog.

İndirilenler
  • Bu sürüm için indirilenler arşivlendi burada bulabilirsiniz.
Duyurular
  • GCC artık desteklenmiyor. Yalnızca NDK'dan kaldırılmaz ancak artık geri bağlantı almıyor. Kaldırılmadan önce libc++ varsayılan olacak kadar kararlı hale geldikten sonra, hâlâ Clang ile uyumsuz. Büyük olasılıkla kaldırılacak iletişim kurulabilir.
  • Eklenme zamanı simpleperf olarak değiştirin bir CPU profil aracı.
s13b
NDK
  • NDK_TOOLCHAIN_VERSION için artık varsayılan olarak Clang kullanılıyor.
  • libc++, r263688 olarak güncellendi.
  • (Neredeyse) temiz bir yukarı akışa sıfırlandı. Bu işlem, çalışan bir hata var, ancak bunu yapmadan önce libandroid_support'ı temizlememiz gerekir varsayılan olarak öneriyorum.
  • make-standalone-toolchain.sh artık yalnızca bir sarmalayıcı aracın Python sürümünü kullanır. Davranışsal birkaç farklılık vardır. Bkz. taahhüt mesajını inceleyin.
  • Desteklenmeyen ABI'ler için bazı kitaplıklar kaldırıldı (mips64r2, mips32r6, mips32r2 ve x32) içerir. Hâlâ tecavüz edenler olabilir.
  • Bağlantıda atexit'in kaçırılmasına neden olan crtbegin_static.o ile ilgili sorunlar ARM android-21+ için statik yürütülebilir bir dosya oluştururken zaman çözüldü: Sorun 132
  • Build/cmake/android.toolchain.cmake öğesine CMake araç zinciri dosyası eklendi.
Bilinen sorunlar
  • Bu listenin, bekleyen tüm hataların kapsamlı bir listesini sunması amaçlanmamıştır.
  • libc++ ve GCC kullanan bağımsız araç zincirleri çalışmaz. Öyle görünüyor GCC hatası var. Görüntüleyin kaydet mesajını inceleyin.
  • Marshmallow ve N için biyonik başlıklar ve kitaplıklar henüz kullanıma sunulmamıştır Android-24 varlığına rağmen. Bu platformlar hâlâ Lollipop başlıkları ve kitaplıkları (r11'deki regresyon değildir).
  • RenderScript araçları mevcut değil (r11'deki regresyon değil): Sorun 7.
İndirilenler
  • Bu sürüm için indirilenler burada arşivlenmiştir.
Duyurular
  • ndk-build komutu, r13'te varsayılan olarak Clang'i kullanır. GCC'yi sonraki yayın tarihidir.
  • make-standalone-toolchain.sh komut dosyası r13'te kaldırılacak. make_standalone_toolchain.py uygulamasının ihtiyaçlarınıza uygun olduğundan emin olun.
  • Sorunları GitHub'a bildirin.
ziyaret edin. s12b
  • ndk-gdb.py sorununu düzelttik. (Sorun 118)
  • NdkCameraMetadataTags.h alanını, artık geçersiz bir değer içermeyecek şekilde güncelledik enum değeri.
  • ndk-build'te, libc++ kullanan statik kitaplıklar için sahte uyarılara neden olan bir hata düzeltildi. Bu değişiklik hakkında daha fazla bilgi için yorumlara bakın burada bulabilirsiniz.
  • android-24 için OpenSLES başlıkları güncellendi.
NDK
  • armeabi-v7a-hard ABI'ye desteği kaldırdık. Daha fazla bilgi için şunu görün: açıklama'yı tıklayın.
  • GB öncesi platform düzeyleri için tüm sysroot'lar kaldırıldı. Sürüm 11'de onlar için desteği kestik. onları kaldırmayın.
  • ARM32'de c++_shared tarafından kullanılan istisnai işleme artık çoğunlukla işe yarıyor. Gevşeyiciler artık her bir bağlı nesneye değil, libc++'a bağlı olmalıdır. Daha fazla bilgi için daha fazla bilgi edinmek için Bilinen Sorunlar sayfasında bulabilirsiniz.
  • Varsayılan derleyici işaretleri azaltıldı. (Sorun 27).
  • Bağımsız araç zincirlerine yönelik bir 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ı yoktur.
    • Bash aromasını r13'te kaldıracağımız için yenisini hemen test edin.
  • -fno-limit-debug-info, Clang hata ayıklama derlemeleri için varsayılan olarak etkinleştirildi. Bu değişiklik, LLDB ile hata ayıklanabilirliği iyileştirmelidir.
  • --build-id artık varsayılan olarak etkin.
    • Derleme Kimliği, artık yerel kilitlenme raporlarında gösterilecek. kodunuzun hangi sürümünün çalıştığını belirleyebilirsiniz.
  • NDK_USE_CYGPATH artık libgcc ile ilgili sorunlara neden olmamalıdır. (Android Sorun 195486)
  • -Wl, --warn-shared-textrel ve -Wl,--fatal-warnings varsayılan olarak etkinleştirilmiştir. Paylaşılan metin taşıma işlemleriniz varsa uygulamanız Android 6.0 (API düzeyi 23) veya sonraki sürümlerde yüklenebilmesi. için metin taşıma işlemine hiçbir zaman izin verilmedi 64 bit uygulamalar.
  • Önceden derlenmiş başlıklar daha iyi çalışır. (Sorun 14 ve Sorun 16)
  • Erişilemeyen ARM (popüler olmayan) STL kitaplıkları kaldırıldı.
  • Android-24'e Vulkan desteği eklendi.
  • Koreograf API'si android-24'e eklendi.
  • Şu özelliklere sahip cihazlar için libcamera2 API'si eklendi: INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED veya üzeri. Daha fazla bilgi için bkz. Kamera Özellikleri.
Clang
  • Clang, 3.8svn (r256229, derleme 2812033) olarak güncellendi.
    • 32 bit’teki clang.exe ve clang++.exe yürütülebilir dosyaları Windows paketi aslında 64 bittir. 32 bit yürütülebilir dosyanın adı clang_32.exe
  • __thread bu sefer gerçek olarak çalışır.
GCC
  • google/gcc-4_9 r227810'da ChromeOS GCC ile senkronize edilmiştir.
  • ToT'den (r231296) eski kapsama alanı dezenfektanı yaması.
  • libatomic, ifuncs kullanmayacak şekilde düzeltildi. (Sorun 31)
Binutiller
  • "Erratum 843419 bulundu ve düzeltildi" bilgi mesajları kapatıldı.
  • Şu durumlarda oluşan dahili bağlayıcı hatasını düzeltmek için --long-plt seçeneği kullanıma sunuldu: büyük kol32 ikili programlarını bağladık.
  • AArch64 için yanlış çalışma süresi sapları düzeltildi. Bu durum, atlama adreslerinin hesaplanmasına neden oluyordu çok büyük DSO'lara yardımcı olabilir.
  • Varsayılan seçenek kullanıma sunuldu --no-apply-dynamic .
  • dynamic_cast için NDK r11 KI, Clang ile kullanılamaz. x86'yı düzelttik, stlport_static ve optimizasyon.
GDB
  • GDB 7.11 sürümüne güncellendi. Daha fazla bilgi için GDB Haberler sayfası.
  • ndk-gdb.py için bazı hata düzeltmeleri.
Bilinen sorunlar
  • x86 ASAN hâlâ çalışmıyor. Daha fazla bilgi için bu değişiklik listesini inceleyin.
  • c++_shared ile istisna geri alma işlemi ARM için çalışmıyor Android 2.3 (API düzeyi 9) veya Android 4.0 (API düzeyi 14) sürümleri.
  • Android 6.0 (API düzeyi 23) ve Android 7.0 (API düzeyi 24) için biyonik başlıklar ve kitaplıklar Ancak android-24 varlığına rağmen henüz açığa çıkmıyorlar. Söz konusu platformlar hâlâ Android 5.0 (API düzeyi 21) başlıkları ve kitaplıklarıdır (r11'den regresyon değildir).
  • RenderScript araçları mevcut değil (r11'den bir regresyon değil). (Sorun 7)
  • Bu değişiklik günlüğünün, bekleyen tüm hataların kapsamlı bir listesi olması amaçlanmamıştır.
İndirilenler
  • Bu sürüm için indirilenler burada arşivlenmiştir.
Duyurular
  • ndk-build komutunda varsayılan olarak Yakında yayınlanacak bir yayında. GCC, sonraki bir sürümde kaldırılacaktır.
  • make-standalone-toolchain.sh komut dosyası kaldırılacak tanıtacağız. Bu komut dosyasını kullanıyorsanız lütfen En kısa sürede make_standalone_toolchain.py.
NDK
  • armeabi-v7a-hard ABI için destek kaldırıldı. Açıklama için dokümanlarına göz atın.
  • Android 2.3'ten (API düzeyi 9) önceki platform düzeyleri için tüm sysroot'lar kaldırıldı. NDK 11'de bu kuruluşlara verdiğimiz desteği kestik, ancak bunları kaldırmayı ihmal ettik.
  • ARM32'de c++_shared tarafından kullanılan istisna işleme ayarı, (Bilinen Sorunlar bölümüne bakın). Rahatlatıcı artık libc++ ile değil, her bir bağlı nesneye bağlanıyor.
  • Varsayılan derleyici işaretleri ayıklandı (NDK Sorun 27). Böylece iki bu güncellemeyle ilgili ayrıntıları 207721 Değişikliği bölümünde bulabilirsiniz.
  • build/tools/make_standalone_toolchain.py hedefine bağımsız araç zincirleri için Python uygulaması eklendi. Windows'da Cygwin gerekir. Bash türünün kaldırılacağını unutmayın lütfen yeni sürümü hemen test edin.
  • Clang hata ayıklama derlemeleri -fno-limit-debug-info içerecek şekilde yapılandırıldı seçeneği varsayılan olarak etkindir. Bu değişiklik, LLDB ile daha iyi hata ayıklama olanağı sağlar.
  • --build-id, varsayılan seçenek olarak etkinleştirildi. Bu seçenek yerel kilitlenme raporlarında bir tanımlayıcı gösterilmesine neden olur. Böylece, kodunuzun hangi sürümünün çalıştığını belirleyebilirsiniz.
  • NDK_USE_CYGPATH ile ilgili sorun düzeltildi, artık bu soruna neden olmaz. libgcc ile ilgili sorunlar (Sorun 195486).
  • Aşağıdaki seçenekler varsayılan olarak etkinleştirildi: -Wl,--warn-shared-textrel ve -Wl,--fatal-warnings. Paylaşılan metin yer değiştirmeleri varsa uygulamanız Android 6.0'da yüklenmiyor (API düzeyi 23) ve daha yeni sürümler. Bu yapılandırmanın 64 bit uygulamalarda kullanılabilir.
  • Önceden derlenmiş başlıkların daha iyi çalışması için birkaç sorun düzeltildi (NDK Sorun 14, NDK Sorun 16).
  • Erişilemeyen ARM (popüler olmayan) STL kitaplıkları kaldırıldı.
  • Android-24'e Vulkan desteği eklendi.
  • Koreograf API'si android-24'e eklendi.
  • Desteklenen cihazlar için libcamera2 API'leri eklendi: INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED özellik düzeyi veya üzeri. Daha fazla bilgi için CameraCharacteristics referansı.
Clang
  • Clang, 3.8svn (r256229, derleme 2812033) olarak güncellendi. clang.exe ve 32 bit Windows paketindeki clang++.exe yürütülebilir dosya aslında 64 bit. İlgili içeriği oluşturmak için kullanılan 32 bit yürütülebilir dosyanın adı clang_32.exe.
  • __thread, bu sefer gerçek zamanlı çalışacak şekilde düzeltildi.
GCC
  • Derleyici, google/gcc-4_9 r227810'da ChromeOS GCC ile senkronize edildi.
  • ToT'den (r231296) eski kapsama alanı dezenfektanı yaması.
  • libatomic, ifuncs'un kullanılmayacak şekilde düzeltildi (NDK Sorunu 31).
Binutiller
  • "Erratum 843419 bulundu ve düzeltildi" yazısının sesi kapatıldı mesaj gönderebilirsiniz.
  • Dahili bağlayıcı hatasını düzeltmek için --long-plt seçeneği kullanıma sunuldu büyük kol32 ikili kodlarını bağlarken kullanın.
  • AArch64 için yanlış çalışma zamanı sapları düzeltildi. Bu sorun çok büyük boyutlu mağaza girişleri için atlama adreslerinin yanlış hesaplanmasına neden olur dinamik olarak paylaşılan nesneleri (DSO) ifade eder.
  • Geçici çözüm için --no-apply-dynamic varsayılan seçeneği kullanıma sunuldu önceki Android sürümleri için bir dinamik bağlayıcı hatası.
  • NDK r11 ile ilgili bilinen bir sorun (dynamic_cast) giderilmedi kullanarak Clang, x86, stlport_static ve optimizasyon.
GDB
  • GDB'nin 7.11 sürümüne güncellendi. Bu sürümle ilgili daha fazla bilgi için bkz. GDB Haberler
  • ndk-gdb.py komut dosyasındaki bazı hatalar düzeltildi.
Bilinen sorunlar
  • x86 Adresi Sanitizer (ASAN) şu anda çalışmıyor. Daha fazla bilgi için bkz. Sorun 186276.
  • c++_shared ile istisna geri alma işlemi şurada ARM için çalışmıyor: Android 2.3 (API düzeyi 9) veya Android 4.0 (API düzeyi 14).
  • Android 6.0 (API düzeyi 23) ve sonraki sürümler için biyonik başlıklar ve kitaplıklar Ancak android-24 varlığına rağmen henüz açığa çıkmıyorlar. Bu platformlar hâlâ Android 5.0 (API düzeyi 21) başlıklarına ve kitaplıklarına sahip olduğundan emin olun. NDK r11 ile karşılaştırın.
  • RenderScript araçları mevcut değildir ve bu durum, NDK r11. (NDK Sorunu 7)
  • NdkCameraMetadataTags.h başlık dosyasında kamera meta verileri etiket sıralama değeri ACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAP , yanlışlıkla listelendi ve bir sonraki sürümde kaldırılacaktır. Tekliflerinizi otomatikleştirmek ve optimize etmek için Bunun yerine ACAMERA_STATISTICS_LENS_SHADING_MAP değerini kullanın.
Değişiklikler
  • ndk-gdb.py komut dosyasına ek düzeltmeler uygulandı.
  • ndk-gdb öğesine isteğe bağlı bir paket adı bağımsız değişkeni eklendi komut --attach seçeneği. (Sorun 13)
  • 32 bit Windows platformu için geçersiz araç zinciri yolları düzeltildi. (Sorun 45)
  • ndk-which komutunun göreli yolu düzeltildi. (Sorun 29)
  • libgcc derleyici için cygpath kullanımı düzeltildi. (Android Sorun 195486)
NDK
  • Önemli duyurular
  • Değişiklikler
    • ndk-gdb.py sabit. Orada tamamen geriledi inceleyebilirsiniz.
    • Mac için ndk-gdb sabittir.
    • 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 komutta yayınlar.
    • libc++ için eksik olan bağımsız araç zincirleri düzeltildi __cxxabi_config.h
    • Şu kuruluş birimindeki --toolchain için sabit yardım dokümanları: make-standalone-toolchain.sh.
Clang
  • Yazım hataları
    • r11 Sürüm Notlarında bildirdiğimizin aksine, __thread çalışmıyor. Bunun nedeni, gönderdiğimiz Clang sürümünde emülasyonlu TLS desteği sunar.
Clang
  • Önemli duyurular
    • Clang'a geçmenizi önemle tavsiye ederiz.
      • Clang, dosya hataları sorunlar için burayı tıklayın yalnızca NDK'daki Clang'a özgüdür. Daha genel Clang sorunları için aşağıdaki talimatları uygulayarak hataları dosyalama bu sayfadaki.
    • Clang, 3.8svn (r243773, derleme 2481030) olarak güncellendi.
      • Bu sürüm, neredeyse tamamen yukarı yönlü bir Clang'dir.
      • Windows 64 bit indirilebilir NDK paketi, 32 bit yeni bir sürüm ekleyebilirsiniz.
  • Eklemeler
    • Clang artık emüle edilmiş TLS için destek sağlıyor.
      • Derleyici artık emülasyon yaparak __thread özelliğini destekliyor. pthread iş parçacığına özgü verilere sahip ELF TLS.
      • C++11 thread_local bazı durumlarda çalışır, ancak veriler için anlam ifade eder, çünkü bu vakalar libc'den destek gerektirir. Bu sınırlama , Android 6.0 (API düzeyi 23) veya sonraki sürümlerde çalışırken uygulanır.
      • Emülasyonlu TLS, aşağıdaki durumlarda Aarch64 ile çalışmaz TLS değişkenlerine paylaşılan bir kitaplıktan erişilir.
GCC
  • Önemli duyurular
    • NDK'daki GCC'nin desteği sonlandırılarak Clang kullanıma sunuldu.
      • NDK, 5.x sürümüne geçmeyecek ve kritik olmayan geri bağlantı noktalarıdır.
      • Yanlış derlemeler ve dahili derleyici hataları için bakım 4.9'daki sürümler tek tek ele alınacaktır.
  • Kaldırma işlemleri
    • GCC 4.8 kaldırıldı. Tüm hedefler artık GCC 4.9'u kullanıyor.
  • Diğer değişiklikler
    • google/gcc-4_9 ile r224707 senkronize edildi. Daha önceleri, r214835 ile senkronize edilmiştir.
NDK
  • Önemli duyurular
  • Eklemeler
    • android-23 ürününe yerel izleme API'si eklendi.
    • android-23 hedefine yerel çoklu ağ API'si eklendi.
    • Başlangıç olarak sürümlü semboller sağlamak için libc, m ve dl etkinleştirildi API düzeyi 21'den itibaren kullanılabilir.
    • N. API düzeyine Vulkan başlıkları ve kitaplığı eklendi.
  • Kaldırma işlemleri
    • _WCHAR_IS_8BIT desteği kaldırıldı.
    • sed kaldırıldı.
    • Mclinker kaldırıldı.
    • Perl kaldırıldı.
    • NDK libc, m ve dl'nin tüm sürümlerinden, bu kitaplıkların platform sürümleri desteklemez.
    • mips64r2 desteği kısmen kaldırıldı. Diğer öğeler kaldırılacak daha avantajlı bir konumda olursunuz.
  • Diğer değişiklikler
    • ARM bağımsız araç zincirleri varsayılan olarak arm7 olarak değiştirildi.
      • Eski davranışı geri yüklemek için armv5te-linux-androideabi olarak -target seçeneği.
    • Derleme sistemi, platform için -isystem kullanılacak şekilde değiştirildi içerir.
      • Bionic'in neden olduğu uyarılar artık uygulama derlemelerini bozmaz.
    • Bir ikili program istisna oluşturduğunda oluşan hata düzeltildi gabi++ üzerinden de erişebilirsiniz. (Sorun 179410)
    • libc++'ın satır içi ad alanı std::__ndk1 olarak değiştirildi (Platform libc++ ile ilgili ODR sorunlarını önlemek için).
    • Tüm libc++ kitaplıkları artık libc++abi ile oluşturulmuştur.
    • Varsayılan APP_PLATFORM, Gingerbread olarak değiştirildi.
      • Froyo ve daha büyükler için desteğin bir kullanıma sunulması planlanıyor.
  • gabi++ _Unwind_Exception yapısı 64 bit için güncellendi.
  • CPU özelliklerine şu özellikler eklendi:
    • SSE4.1 ve SSE4.2'yi tespit edin.
    • x86_64'te CPU özelliklerini algıla.
  • libc++abi yukarı akış olarak güncellendi r231075.
  • Güncellenme tarihi: byteswap.h, endian.h, sys/procfs.h, sys/ucontext.h, sys/user.h ve uchar.h, kalkış: ToT Bionic.
  • sys/cdefs.h, tüm API düzeylerinde senkronize edildi.
  • Kol için fegetenv and fesetenv düzeltildi.
  • mips64 için crtend_* uç işaretçi boyutunu/hizalamayı düzeltin ve x86_64.
Binutiller
  • Eklemeler
    • Yeni seçenek eklendi: --pic-veneer.
  • Kaldırma işlemleri
    • 32 bit Windows paketi artık ld.gold içermiyor. Bunun yerine ld.gold dosyasını 64 bit Windows paketinden alabilirsiniz.
  • Değişiklikler
    • Android ve ChromiumOS arasında birleştirilmiş binutils kaynağı. Bu değişiklikle ilgili daha fazla bilgi için yorumlara bakın buradan ulaşabilirsiniz.
    • aarch64 için Gold güvenilirliğinde iyileştirme. Tekliflerinizi otomatikleştirmek ve optimize etmek için bfd yerine altın kullanmak için bağlantı zamanında -fuse-ld=gold. Varsayılan içerik büyük olasılıkla bir sonraki sürümde değişecek.
    • Altın ARM arka ucu için büyük ikili programlar için bağlantı süresi iyileştirildi (Hata ayıklaması yapılabilir Chrome Tarayıcı için bağlantı süresi% 50'ye kadar azalmaktadır).
GDB
  • Kaldırma işlemleri
    • ndk-gdb.py adına ndk-gdb kaldırıldı.
  • Değişiklikler
    • gdb, 7.10 sürümüne güncellendi.
    • Gelişmiş performans.
    • İyileştirilmiş hata mesajları.
    • Göreli proje yolları düzeltildi.
    • Ctrl-C'nin arka plandaki gdbserver'ı sonlandırması durduruldu.
    • İyileştirilmiş Windows desteği.
YASM
  • Değişiklikler
    • YASM, 1.3.0 sürümüne güncellendi.
Bilinen sorunlar
  • x86 ASAN şu anda çalışmıyor. Daha fazla bilgi için tartışma buradan ulaşabilirsiniz.
  • Clang, x86, stlport_static ve optimizasyonun kombinasyonu -O0 değerinden yüksek düzeyler, dynamic_cast. Daha fazla bilgi için yorumlara göz atın burada bulabilirsiniz.
  • İstisna işleme, ARM32'de c++_shared ile genellikle başarısız olur. Kök neden, libc++abi'nin kullandığı LLVM açıcısı arasındaki uyumsuzluktur ARM32 ve libgcc için geçerlidir. Bu davranış, r10e'den bir regresyon değildir.
İndirilenler
  • Bu sürüm için indirilenler burada arşivlenmiştir.
Önemli değişiklikler:
  • Cortex-A53 Erratum 843419 çözümü aarch64-linux-android-4.9 bağlayıcı. Bu geçici çözümle ilgili daha fazla bilgi edinmek için Cortex-a53 için geçici çözüm 843419.
  • Clang 3.6 eklendi; NDK_TOOLCHAIN_VERSION=clang artık bu sürümü seçiyor varsayılan olarak kullanılır.
  • 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ığı desteği uygulandı. O da artık çoklu iş parçacığı desteği ile veya olmadan bağlantı oluşturabilirsiniz; varsayılan ayar, onlar olmadan olmasıdır.
    • Çoklu iş parçacıklarıyla derleme yapmak için --threads seçeneğini kullanın.
    • Çoklu iş parçacığı olmadan derlemek için --no-threads seçeneğini kullanın.
  • Tüm mimariler için GDB/gdbserver 7.7'ye yükseltildi.
  • 32 bit Darwin için NDK paketi kaldırıldı.
Önemli hata düzeltmeleri:
  • Ana iş parçacığının dışında OpenMP döngüleri olduğunda oluşan kilitlenme düzeltildi.
  • Kullanıcı şunu beyan ettiğinde oluşan GCC 4.9 dahili derleyici hatası (ICE) düzeltildi #pragma GCC optimize ("O0") ancak farklı bir optimizasyon düzeyi belirtildi komutunu çalıştırın. pragma önceliklidir.
  • Aşağıdaki hata mesajıyla kilitlenmeye neden olan bir hata düzeltildi:
    in add_stores, at var-tracking.c:6000
    
    .
  • LLVM otomatik vektörleştirmesinin meydana geldiği Clang 3.5 sorunu için geçici çözüm uygulandı ARM'de eşdeğeri olmayan bir talimat olan llvm.cttz.v2i64() oluşturur talimat seti.
Diğer hata düzeltmeleri:
  • Aşağıdaki başlık ve kitaplık düzeltmeleri yapıldı:
    • media/NdkMediaDrm.h içinde PROPERTY_* düzeltildi.
    • mips64 için sys/ucontext.h düzeltildi.
    • __builtin_isnan için Clang sürümü kontrolü bırakıldı ve __builtin_isinf.
    • android-21/arch-mips/usr/include/asm/reg.h eklendi ve android-21/arch-mips64/usr/include/asm/reg.h.
  • GCC 4.9'un x86 için ürettiği sahte dizi sınırı uyarısı düzeltildi ve dizi sınırlarına ilişkin bir uyarı yayınladı. ARM için uyarıda önceden koşulsuz olarak devre dışı bırakılmış olabilir.
  • Yazılabilir öğe oluşturmak için mips ve mips64 için Clang 3.5 düzeltildi .gcc_except_table bölümünde olduğu için GCC davranışı eşleşiyor. Bu değişiklik sayesinde aşağıdaki bağlayıcı uyarısını önlemek için:
    .../ld: warning: creating a DT_TEXTREL in a shared object
    
    .
  • Clang sırasında kilitlenmeye neden olan compiler-rt sorun için geriye dönük düzeltme uygulandı mips64 için derlendi. Daha fazla bilgi için LLVM sorununu inceleyin 20098.
  • ASCII olmayan yorumlarda meydana gelen Clang 3.5 kilitlenmeleri düzeltildi. (Sorun 81440)
  • -1 ve 1 değerlerini döndürmek için stlport collate::compare düzeltildi. Daha önce rastgele imzalanmış sayılar döndürdü.
  • 64 bit ABI'ler için ndk-gdb düzeltildi. (Sorun 118300)
  • RenderScript için HelloComputeNDK örneğinin Android 4.4 (Android API düzeyi 19). Daha fazla bilgi için bkz. bu sayfadaki.
  • GCC için libc++ __wrap_iter düzeltildi. Daha fazla bilgi için LLVM sorununu inceleyin 22355.
  • 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 son dizin ayırıcısı (\\) kaldırıldı. (Sorun 160584)
  • Tek bir derlenirken oluşan no rule to make target hatası düzeltildi gradle üzerinden ndk-build.cmd komutunu çalıştırarak .c dosyası. (Sorun 66937)
  • Şu konumlarda eksik olan libatomic.a ve libgomp.a kitaplıkları eklendi: aşağıdaki ana makine araç zincirlerini kullanabilirsiniz:
    • 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çin ld.gold eklendi. Varsayılan bağlayıcı ld.bfd olarak kalır. ld.gold öğesini açıkça etkinleştirmek için şuraya -fuse-ld=gold ekleyin: LOCAL_LDFLAGS veya APP_LDFLAGS değişkeni.
  • MIPS ve MIPS64 araç zincirlerini binutils-2.25 ile oluşturarak daha iyi performans R6 desteği.
  • -fstandalone-debug (tam hata ayıklama bilgileri), Clang için varsayılan seçenek haline getirildi.
  • Şunun için -fstack-protector, -fstack-protector-strong ile değiştirildi: GCC 4.9, Clang 3.5 ve Clang 3.6.
  • Derlemeye izin vermek için --package komut satırı anahtarı ndk-gdb işlevine eklendi sistemin paket adını geçersiz kılmasını sağlar. (Sorun 56189)
  • -mno-ldc1-stc1, MIPS için kullanımdan kaldırıldı. Bu seçenek yeni -fpxx ve -mno-odd-spreg seçenekleri veya FPXX ABI ile.
  • cpu-features için MIPS AHS ve R6 algılama özelliği eklendi.
Önemli değişiklikler:
  • GCC 4.8, tüm 32 bit ABI'ler için varsayılan olarak ayarlandı. Desteği sonlandırılan GCC 4.6 ve bir sonraki sürümde bunu kaldıracaktır. Önceki davranışı geri yüklemek için İkinci derleme için NDK_TOOLCHAIN_VERSION=4.6 veya yürütülürken --toolchain=arm-linux-androideabi-4.6 ekleyin komut satırında make-standalone-toolchain.sh. GCC 4.9 varsayılan olarak 64 bit ABI'ler için kullanılır.
  • Tüm x86[_64] araç zincirlerinin varsayılan olarak -mstackrealign eklemesi durduruldu. İlgili içeriği oluşturmak için kullanılan NDK araç zincirinde, 16 baytlık yığın hizalaması varsayılır. Varsayılan olarak kullanılan araçlar ve seçenekler bu kuralı uygulayın. Derleme kodu yazan bir kullanıcı, yığını koruduğundan emin olmalıdır diğer derleyicilerin de bu kurala uyduğundan emin olun. (GCC hatası 38496)
  • ARM ve x86 ABI'leri için Clang 3.5 desteğine Adres Temizleyici işlevi eklendi. Bu değişiklikle ilgili daha fazla bilgi için Adres Sanitizer projesinden bahsedeceğiz.
  • Derleme sırasında -fPIE -pie kullanılması şartını API düzeyi 21'den itibaren kullanıma sunduk. ndk-build, 16 ve üzeri API seviyelerinde PIE kullanır önemlidir. Bu değişikliğin bir dizi etkisi vardır. Daha sonra Geliştirici Önizleme Sorunu 888. Bu çıkarımlar, paylaşılan kitaplıklar için geçerli değildir.
Önemli hata düzeltmeleri:
  • Şununla ilgili daha fazla düzeltme yapıldı: aarch64-linux-android-4.9 bağlayıcısında A53 Errata #835769 hatasını görebilirsiniz. Bu kapsamda, GCC --fix-cortex-a53-835769 adlı yeni bir seçenek sunulduğunda, -mfix-cortex-a53-835769 (varsayılan olarak etkindir) belirtilmiş. Daha fazla bilgi için bkz. binutils mesajı ve bu binutils mesajı.
  • API düzeyinde meydana gelen libc++ sscanf/vsscanf askıya alma sorunuyla ilgili düzeltme belgelendi 21. Düzeltmenin kendisi r10c'de uygulanmıştır. (Sorun 77988)
  • GCC 4.9 ile şu durumlarda oluşan AutoFDO (-fauto-profile) kilitlenmesi düzeltildi: -Os belirtildi. (Sorun 77571)
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, Arkadaş Bitkiler projesine stdlib.h olan API düzeyleri 16 ile 19 arasında. (Sorun 77861)
    • stdatomic.h, yalnızca şunun için <atomic> içerecek şekilde düzeltildi: C++11'dir.
    • Şu başlıklar bağımsız kullanım için değiştirildi: sys/user.h ve gl2ext.h, dlext.h, fts.h, sgidefs.h API düzeyi 21 için geçerlidir.
    • sys/user.h, mxcsr_mask adlı cihazın mxcr_mask olarak yeniden adlandırılacağı şekilde değiştirildi, ve u_ar0 için veri türünü değiştirmek istiyorsanız
    • unsigned long satıcısından user_regs_struct'ı yapılandırmak için kullanılır*.
    • int olan sysconf() döndürme değeri türü olarak değiştirildi long.
  • LOCAL_ARM_MODE için ndk-build'in thumb işlemini işlemesi düzeltildi: r10d ise ndk-build,LOCAL_LDFLAGS+=-mthumb aşağıdaki koşullar geçerlidir:
    • LOCAL_ARM_MODE değerini arm olarak ayarladınız.
    • Hata ayıklama derlemesi yapıyorsunuz (APP_OPTIM=debug ve android:debuggable="true" içeren AndroidManifest.xml), Burada, önceki araç zincirleriyle uyumluluğu korumak için ARM modu varsayılan olarak ayarlıdır. (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 cihazından bash'a özel kod kaldırıldı. (Sorun 74145)
  • Geçişli System.loadLibrary() sorunuyla ilgili düzeltmeye ilişkin belgeler ve bildirmeyi konuştuk. (Sorun 41790)
  • Ubuntu 14.04 ve sonraki sürümlerde 64 bit paketlerin çıkarılmasını engelleyen bir sorun giderildi OS X 10.10 (Yosemite). (Sorun 78148)
  • Clang desteğini iyileştirmek için LOCAL_PCH ile ilgili bir sorun düzeltildi. (Sorun 77.575)
  • "Yürütülebilir yığın gerektirir" konusuna açıklık getirildi ld.gold adlı kullanıcıdan uyarı. (Sorun 79115)
Önemli değişiklikler:
  • İndirme yapısında aşağıdaki değişiklikler yapıldı:
    • Her paket artık hem 32 hem de 64 bit üstbilgileri, kitaplıkları ve araçları içerir. ilgili platformda
    • Hata ayıklama bilgileri içeren STL kitaplıklarının artık ayrı olarak indirilmesine gerek yoktur.
  • Daha önce Android-L adı verilen tüm özellikler resmi sürüme dönüştürüldü tanımlama: android-21.
  • google dalında yeniden temel alınarak GCC 4.9 güncellendi GCC deposundan geliyor. GCC 4.9'un yukarı yayın sürümünden önemli farklar şunlardır:
    • -O2 seçeneği artık döngü soyma olmadan ve daha fazla seçenekle vektörleştirmeyi etkinleştiriyor Agresif video açma.
    • FDO ve için geliştirmeler LİPO
    • Daha ayrıntılı bilgi için aşağıdaki Önemli hata düzeltmeleri bölümüne bakın.

  • Tüm ana makinelere Clang 3.5 desteği eklendi: NDK_TOOLCHAIN_VERSION=clang Clang 3.5'i seçiyor. Not:
    • ARM ve x86, varsayılan olarak entegre derleyiciyi kullanır. Bu durum sorunlara neden oluyorsa -fno-integrated-as kullanmanızı öneririz.
    • Clang 3.5, -finline-functions gibi kullanılmayan işaretler için daha fazla uyarı yayınlar. yalnızca GCC'nin desteklediği bir seçenektir.
    • GCC kullanarak projelerden taşıma işlemi yaparken şunları kullanabilirsiniz: -Wno-invalid-command-line-argument -Wno-unused-command-line-argument uzun vadede ne yapacağınıza karar verene kadar kullanılmayan işaretleri yoksayabilirsiniz.

  • Android 5.0 cihazda hata ayıklama işlemi sırasında ART hata ayıklama moduna girmek mümkün hale geldi: ART'yi sanal makinesi olarak ayarlayın.art-on Daha fazla bilgi için NDK'yı içeren dizinde prebuilt/common/gdb/common.setup bölümüne bakın.
  • Clang 3.3 desteği kaldırıldı.
  • GCC 4.6 kullanımdan kaldırıldı ve gelecekteki sürümlerden kaldırılabilir.
  • Mclinker, Özdeş Kod Katlama ("ICF") desteğiyle 2.8 olarak güncellendi. Şunu kullanarak ICF belirtin: --icf seçeneği.
  • x86 ve x86_64'te arm_neon.h desteği genişletilerek NEON yerleşik özellikleri. NEON desteği hakkında daha fazla bilgi için:
    • NDK Programcı Kılavuzu'na (docs/Programmers_Guide/html/) gidin ve Mimariler ve CPU'lar > Neon.
    • samples/ konumunda güncellenen hello-neon örneğini inceleyin.
    • Intel'in ARM NEON'dan Intel SSE'ye bağlama rehberine bakın.
  • headers/libs/android-21 ürününde _FORTIFY_SOURCE için destek olduğu belgelendi, Bu, r10'da görünüyordu (android-21 hâlâ Android-L olarak adlandırıldığında), ancak dokümanları yoktu.
Önemli hata düzeltmeleri:
Diğer hata düzeltmeleri:
  • android-21 için 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 öğesine daha fazla sabit değer ve altı yeni sensör işlevi eklendi: ASensorManager_getDefaultSensorEx ASensor_getFifoMaxEventCount, ASensor_getFifoReservedEventCount, ASensor_getStringType, ASensor_getReportingMode ve ASensor_isWakeUpSensor.
    • GCC 4.6 ile uyumluluğu iyileştirmek ve destek sağlamak için stdatomic.h düzeltildi <atomic> üstbilgisi için.
    • sys/ucontext.h ve sys/user.h tüm API düzeylerine eklendi. İlgili içeriği oluşturmak için kullanılan signal.h başlığı artık <sys/ucontext.h> içeriyor. Mevcut tüm struct ucontext tanımını kaldırın.
    • posix_memalign, API düzeyleri 17, 18 ve 19'a eklendi.
    • Tüm mimarilere aşağıdaki işlevler eklendi: android_set_abort_message, posix_fadvise, posix_fadvise64, pthread_gettid_np.
    • Gerekli izinler native-media/AndroidManifest.xml öğesine eklendi örneklem. (Sorun 106640)
    • clock_nanosleep ve clock_settime, API düzeyi 21'e eklendi. (Sorun 77372)
    • Şu simgeler 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, __get_thread, __wait4, __futex_wake, __open, __get_tls, __getdents64 ve dlmalloc.
    • Şu işlevler 64 bit mimarilerden kaldırıldı: basename_r, dirname_r, __isthreaded, _flush_cache (mips64).
    • Aşağıdaki işlev, 32 bit mimarilerden kaldırıldı: __signalfd4
    • Şu aralıkta size_t olan üçüncü bağımsız değişkenin türü int olarak değiştirildi: şu işlevler: strtoll_l, strtoull_l, wcstoll_l ve wcstoull_l.
    • Şu işlevler 64 bit mimariye geri yüklendi: arc4random, arc4random_buf ve arc4random_uniform.
    • cxa_* ile new ve delete operatörleri geri taşındı Hedef: libstdc++.so. Bu değişiklik r9d davranışını geri yükler; r10'un önceki sürümleri yer tutucu dosya içeriyordu.
  • GCC 4.8 ve 4.9'da mips için MXU desteği geri yüklendi. Şu an için bu destek gelmedi: GCC'nin bu sürümleri binutils-2.24 ile derlenmiş olduğundan r10 ve r10b MXU desteklenmiyor. Artık destekleniyor.
  • make-standalone-toolchain.sh içindeki --toolchain= düzeltilecek şekilde ayarlandı artık Clang sürümünü belirten bir sonek kullanımını düzgün şekilde destekliyor.
  • libc++/armeabi strtod() işlevleri düzeltildi.
  • docs/ ürününde NDK dokümanlarında düzeltmeler yapıldı.
Diğer değişiklikler:
  • cpu-features, aşağıdaki öğeler için ARMv8 desteğini algılayacak şekilde iyileştirildi: talimat grupları: AES, CRC32, SHA2, SHA1 ve 64 bit PMULL/PMULL2. (Sorun 106360)
  • GCC 4.8, GCC 4.9 ve*-gcc-ar Clang. Clang, bunu *-ar yerine belirtir. Bu ayar, gelişmiş LTO'yu sağlar. destek.
  • include-fixed/linux/a.out.h ve GCC derleyicisinden include-fixed/linux/compiler.h üstbilgileri. (Sorun 73728)
  • Mac OS X'te GCC 4.8'deki -flto ile ilgili bir sorun düzeltildi. Hata mesajı okuyun:
  • .../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so
    Symbol not found: _environ
    
  • build-binary.mk. içindeki bir yazım hatası düzeltildi (Sorun 76.992)
Bilinen önemli sorunlar:
  • GCC4.9'da -Os (-fauto-profile) belirtilmesi kilitlenmeye neden olabilir. (Sorun 77571)
Önemli notlar:
  • İndirilebilir paketlerdeki 512 MB boyut kısıtlaması nedeniyle aşağıdaki 32 bit öğeler, 32 bit NDK indirme paketleri içinde yer almaz. Bunun yerine 64 bit tarayıcılarda bulunurlar:
    • Android-L üst bilgileri
    • 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'yı (tek Renderscript örneği) başka bir Renderscript (32 veya 64 bit) ve Android sürümü kombinasyonuyla derleyemezsiniz.
  • Yerel codec'yi derlemek için tüm Android-L üstbilgilerinin bulunduğu 64 bit NDK paketi kullanmanız gerekir.
Önemli hata düzeltmeleri:
  • GCC 4.8/4.9'da gdb 7.6 düzeltildi. (74112 ve 74371 sorunları.)
  • x86 için GCC 4.8/4.9 düzeltildi, böylece artık -msse4.2 ve -mpopcnt varsayılan olarak etkinleştirilmez. (Sorun 73843.)
Diğer hata düzeltmeleri:
  • stdio.h, tüm GCC sürümlerinin include-fixed/ dizinlerinden 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'in HelloComputeNDK derlemesini engelleyen bir sorun düzeltildi.
  • Sabit çıkış. (Sorun 66595.)
  • docs/ ve sources/third_party/googletest/README.NDK sürümlerindeki dokümanlarda çeşitli düzeltmeler yapıldı. (Sorun 74069.)
  • Android-L üstbilgilerinde aşağıdaki düzeltmeler yapıldı:
    1. ctype.h ve wchar.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() işlevleri.
    2. cmsg_nxthdr adlı dosya __cmsg_nxthdr olarak yeniden adlandırıldı.
    3. __libc_malloc_dispatch kaldırıldı.
    4. ptrace() prototipi long ptrace(int, ...); olarak değiştirildi.
    5. sha1.h kaldırıldı.
    6. android/dlext.h bölgesinde android_dlextinfo uzatıldı.
    7. stdlib.h, time.h, wchar.h ve complex.h içinde kayan veya çift tür değerler alan ya da döndüren işlevler için ek açıklamalı __NDK_FPABI__.
Diğer değişiklikler:
  • mipsel-linux-android-4.9 ve mips64el-linux-android-4.9 güncellendi, yeni bir çoklulib dizin düzeni uygulanır ve gdb-7.7 desteği sağlanır
  • cpu-features, daha fazla arm64 özelliğini algılayacak şekilde iyileştirildi. (Değişiklik listesi 100339.)
Önemli değişiklikler:
  • Tümü 64 bit olan 3 yeni ABI eklendi: arm64-v8a, x86_64, mips64.
  • Not:
    • GCC 4.9, 64 bit ABI'ler için varsayılan derleyicidir. Clang şu anda 3.4 sürümündedir. NDK_TOOLCHAIN_VERSION=clang. arm64-v8a ve mips64'te çalışmayabilir.
    • Android-L, 64 bit desteği olan ilk seviyedir. Bu API'nin düzeyi geçicidir ve yalnızca L önizleme içindir. Bunun yerine gerçek bir API düzeyi numarası kullanılacak L sürümü.
    • Bu sürüm artık all32 ve all64 içeriyor APP_ABI ayarlarını değiştirebilirsiniz.
      • APP_ABI=all32 eşdeğerdir APP_ABI=armeabi,armeabi-v7a,x86,mips.
      • APP_ABI=all64 eşdeğerdir APP_ABI=arm64-v8a,x86_64,mips64.
      • APP_ABI=all tüm ABI'leri seçer.
    • Android-L'deki yeni GNU libstdc++, tüm <tr1/cmath> içerir Kendi matematik fonksiyonunuzu tanımlamadan önce, _GLIBCXX_USE_C99_MATH_TR1 işaretini işaretleyerek "birden fazla tanım"dan kaçınmak için bu ada sahip bir işlev zaten mevcuttur bağlayıcı.
    • ARMv8 çekirdeği için CPU özellikleri kitaplığı güncellendi. Mevcut cpu özellikleri kitaplığı, ARMv8 platformunda NEON olup olmadığını tespit edemeyebilir. Yeniden derleyin yeni sürümdeki kodu kullanın.
  • Yeni bir platforms/android-L/ API dizini eklendi. Şunları içermektedir:
    • Android API düzeyleri 3'ten değişmemiş olan güncellenmiş Bionic başlıkları güncellendi (Cupcake)'ten 19'a (KitKat) çıkacak. 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 desteğin etkinleştirildiği güncellenmiş Android.h üst bilgisi AudioPlayer'daki tek duyarlıklı, kayan noktalı ses biçimi.
    • GLES 3.1 ve AEP uzantıları: libGLESv3.so.
    • 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, varsayılan (yalnızca) derleyicidir (daha önce belirtildiği gibi) 64 bit ABI'ler için geçerlidir. 32 bit ABI'ler için, aşağıdaki gibi GCC 4.9'u açıkça etkinleştirmeniz gerekir: GCC 4.6 hâlâ varsayılan sürümdür.
    • İndk-derleme için 32 bit, GCC 4.9 derlemesini NDK_TOOLCHAIN_VERSION=4.9 dosyasını Application.mk olarak dışa aktarma ortam değişkenini komut satırından kaldırın.
    • Bağımsız bir araç zinciri için --toolchain= make-standalone-toolchain.sh komut dosyası. Örnek: --toolchain=arm-linux-androideabi-4.9.
  • GDB, GCC 4.8/4.9 ve x86'da 7.6 sürümüne yükseltildi*. GDB, hâlâ GDB-7.3.x sürümünde olduğundan GCC 4.6 (ARM ve MIPS için varsayılan) ndk-gdb'yi GDB 7.6'yı seçmek üzere etkinleştirmek için NDK_TOOLCHAIN_VERSION=4.8 veya 4.9.
  • SSSE3 desteği sağlamak için -mssse3 derleme seçeneği eklendi ve ABI x86 için varsayılan olarak ayarlandı (SSE3'ten yükseltme). Google tarafından yayınlanan görüntü, SSSE3 talimatlarını içermez.
  • GCC 4.8 sürümü 4.8.3 olarak güncellendi.
  • gabi++'tan libc++abi'ye geçilerek iyileştirilmiş ARM libc++ EH desteği. Ayrıntılar için "C++ Desteği" bölümüne bakın bölümünde bulabilirsiniz. Not:
    • Yerel ayar dışındaki tüm testler artık Clang 3.4 ve GCC 4.8 için başarılıdır. Daha fazla için "C++ Desteği"ne bakın bölümünde bulabilirsiniz.
    • X86 ve MIPS libc++ için libc++ kitaplıklarında hâlâ gabi++ kullanılır.
    • GCC 4.7 ve sonraki sürümlerde artık <atomic> kullanılabilir.
    • __list_imp::_end_ bozulduğu için <list> kullanıyorsanız -fno-strict-aliasing eklemeniz gerekir TBAA kuralları. (Sorun 61571.)
    • GCC 4.6 sürümünden itibaren, LIBCXX_FORCE_REBUILD:=true artık libc++'yı yeniden oluşturmamaktadır. Yeniden oluşturma farklı bir derleyici kullanılmasını gerektirir. Clang 3.3'ün test edilmediğini unutmayın.
  • mclinker artık 2.7 sürümüdür ve aarch64 Linux desteğine sahiptir.
  • LOCAL_PCH tarafından belirtilen başlıklar 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).
  • Bazı libc++ dosyalarında kilitlenmelere neden olan Clang 3.3/3.4 atom kitaplığı çağrısı düzeltildi testler düzenledi.
  • Önceden derlenmiş başlıklar okunurken oluşan Clang 3.4 kilitlenmeleri düzeltildi. (Sorun 66657).
  • Clang 3.3/3.4 -O3 iddiası düzeltildi:
  • llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef): Assertion Weights.size() >= 2 && "Need at least two branch weights!" (Sorun 57381).
  • Aşağıdaki Clang 3.3/3.4 kilitlenmesi düzeltildi:
  • 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).
Diğer hata düzeltmeleri:
  • Sabit başlıklar:
    • 32 bit ssize_t, long int yerine int olacak şekilde düzeltildi.
    • WCHAR_MIN ve WCHAR_MAX düzeltilecek şekilde ayarlandı üzerinde çalışan mimariye göre uygun işaretler:
      • X86/MIPS: imzalı.
      • ARM: İmzasız.
      • X86/MIPS'yi varsayılan olarak imzasız yapmaya zorlamak için şunu kullanın: -D__WCHAR_UNSIGNED__
      • wchar_t öğesinin 16 bit olmasını zorunlu kılmak için -fshort-wchar işlevini kullanın.
    • 32 bit libc.so sürümündeki var olmayan simgeler kaldırıldı ve pread64, pwrite64, ftruncate64 Android API düzeyi 12 ve sonraki sürümler. (Sorun 69319). Daha fazla bilgileri görmek için, AOSP değişiklik listesindeki taahhüt mesajına bakın 94137.
  • putchar öğesinin yeniden tanımlanmasıyla ilgili GCC uyarısı düzeltildi. Uyarı mesajı:
  • include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int); (Değişiklik listesi 91185).
  • make-standalone-toolchain.sh --stl=libc++, şu şekilde düzeltildi:
    • Kopyalar cxxabi.h. (Sorun 68001).
    • NDK yükleme dizini dışındaki dizinlerde çalışır. (67690 ve 68647 sorunları).
  • GCC/Windows'un, bağımsız değişkenlerin yalnızca harici programlar olabilir. Bu değişiklik, 32K uzunluk sınırını aşma olasılığını azaltır.
  • APP_PLATFORM öğesinin ayarlanmasını imkansız hale getiren bir sorun düzeltildi ortam değişkeni
  • Crazy_linker'de IsSystemLibrary() uygulaması düzeltildi ve strrchr() kullanır yerine strchr() yöntemini kullanabilirsiniz.
  • Yerel sesin hata ayıklama modunda derleme yapılamaması düzeltildi.
  • gdb'nin aşırı kayan nokta numaralarını yazdıramaması düzeltildi. (Sorun 69203).
  • Clang 3.4'te -Wl,-shared ile derleme yapamama sorunu düzeltildi ( -shared, (derleme sorunu yok). Sorun, Clang'in Android için -pie eklenmiş olmasıydı -shared veya -static yoksa hedefler. Daha önce bahsettiğimiz yanlış; bağlayıcının, -shared ve -pie verilerinin bulunabilir.
Diğer değişiklikler:
  • arm_neon.h, x86 araç zincirine eklendi. Böylece şu anda% 47'nin üzerinde emülasyon gerçekleştiriliyor. Neon. 64 bit türleri şu an için desteklenmemektedir. Daha fazla bilgi için ARM hakkındaki bölüme bakın x86 dokümanlarında neon intrinsics desteği.
  • Bağlantılı ARM/GOT_PREL optimizasyonu (GCC google dalından oluşturulan GCC 4.6'da bulunur) ARM GCC 4.8/4.9. Bu optimizasyon bazen genel erişime açılırken talimat sayısını azaltır değişkenlerine karşılık gelir. Örnek olarak, $NDK/tests/build/b14811006-GOT_PREL-optimization/
  • STL gabi++, stlport ve libc++ için ARM sürümü eklendi. Artık hem bu hem de Başparmak kullanıyorlar yatırım yapmanız önemlidir.
  • Artık make-Bağımsızone-toolchain.sh komut dosyasını --toolchain=x86_64-linux-android-4.9, eşdeğerdir --toolchain=x86_64-4.9.
Önemli değişiklikler:
  • Clang 3.4 derleyici desteği eklendi. İlgili içeriği oluşturmak için kullanılan NDK_TOOLCHAIN_VERSION=clang seçeneği artık Clang 3.4'ü seçiyor. GCC 4.6: hâlâ varsayılan derleyicidir.
  • Eklenme zamanı: APP_ABI=armeabi-v7a-hard, şununla: ek çoklu kitaplık seçeneği -mfloat-abi=hard. Bu seçenekler, ARM GCC 4.6/4.8 ve Clang 3.3/3.4 (4.8'in derleyici, bağlayıcı ve ve libs) içerir. Bu seçenekleri kullanırken aşağıdaki değişikliklere dikkat edin:
    • ndk-build komut dosyasını yürütürken armeabi-v7a hedefi için aşağıdaki seçenekler:
      TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1
      TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
      Derlenen kitaplık libs/armeabi-v7a klasörüne kopyalandı. Makyaj için beklendiği gibi davranırsa hem armeabi-v7a hem de Reklam hedefleri olarak armeabi-v7a-hard (APP_ABI= satırında). Bu işlem ikisinden birinin yoksayılmasına neden olur. Unutmayın: APP_ABI=all hâlâ eşdeğerdir armeabi armeabi-v7a x86 mips.
    • make-standalone-toolchain.sh komut dosyası kopyalanır /hard dizin altında ek kitaplıklar var. Yukarıdaki CFLAGS ve LFLAGS değerlerini GCC veya Clang'in bağlantı kuracağı makefile /hard kütüphanesi.
  • Yasm derleyici ve LOCAL_ASMFLAGS eklendi ve x86 için EXPORT_ASMFLAGS bayrak belirler. ndk-build komut dosyası LOCAL_SRC_FILES oluşturmak için prebuilts/*/bin/yasm* .asm uzantısına sahip.
  • MClinker, -gc-sections değerini ekleyerek 2.6.0 olarak güncellendi. destek.
  • Deneysel libc++ desteği eklendi (upstream r201101). Bunu kullan özelliğini kullanabilirsiniz:
    • Application.mk içinde APP_STL := c++_static veya APP_STL := c++_shared ekleyin. LIBCXX_FORCE_REBUILD := true aracılığıyla kaynaktan yeniden oluşturabilirsiniz
    • make-standalone-toolchain.sh --stl=libc++ yürüt kullanarak libc++ başlıkları/lib'i içeren bağımsız bir araç zinciri oluşturun.
    ziyaret edin. Daha fazla bilgi için bkz. CPLUSPLUS-SUPPORT.html. (Sorun 36496)
Önemli hata düzeltmeleri:
  • Beklenmedik bir atış düzeltildi GCC 4.6/4.8 ARM EABI için istisna işleyici. (GCC Sorunu 59392)
  • GCC 4.8, kısmi çözümleme işlemini doğru şekilde yapacak şekilde düzeltildi bir şablonun uzmanlık bağımlı, tür olmayan bir şablon bağımsız değişkenidir. (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
  • x86 ve MIPS gdbserver sorunu düzeltildi event_getmsg_helper
  • RenderScript NDK araç zincirindeki çeşitli sorunlar giderildi: eski cihazlar arasındaki uyumluluk ve C++ yansımalarında sorunlara yol açabilir.

Diğer hata düzeltmeleri:
  • Üstbilgi düzeltmeleri:
    • Şu dokümandaki eksik #include <sys/types.h> düzeltildi: Android API düzeyi 13 ve sonraki sürümler için android/asset_manager.h. (Sorun 64988)
    • Şu dokümandaki eksik #include düzeltildi: Android API düzeyi 14 ve sonraki sürümler için android/rect_manager.h.
    • JNICALL, JNI_OnLoad koleksiyonuna eklendi ve jni.h içinde JNI_OnUnload. Unutmayın: JNICALL __NDK_FPABI__ olarak tanımlanır. Daha fazla bilgi için bkz. sys/cdefs.h.
    • Aşağıdaki üstbilgiler eklenebilecek şekilde güncellendi gerek kalmadan bağımlılıklarını manuel olarak dahil edin (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
    • Tüm mimariler için sys/cachectl.h eklendi. HATALAR geliştiriciler artık #ifdef __mips__ yazmak yerine bu başlığı dahil edebilir.
    • Alınan veya geri gelen işlevlere __NDK_FPABI__ eklenerek platforms/android-18/include/android/input.h düzeltildi kayan veya çift değerler.
    • Yanlış ayarlanmış MIPS struct stat düzeltildi Bu yanlış ayar şuydu: regresyon sürümü r9c sürümünde kullanıma sunuldu.
    • __PTHREAD_MUTEX_INIT_VALUE tanımlandı, __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE, ve Android API için __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 9. seviye ve daha düşük bir sayı seçin.
    • scalbln, scalblnf ve eklendi API 18 ve sonraki sürümler için scalblnl - x86 libm.so.
    • Şu dokümandaki bir yazım hatası düzeltildi: sources/android/support/include/iconv.h (Sorun 63806)
  • Arama için gabi++ std::unexpected() sorunu düzeltildi std::terminate() kullanıcı tanımlı bir std::terminate() işleyicisi çalışabilir.
  • std::nullptr yakalamak için gabi++ düzeltildi.
  • Teapot ve MoreTeapots gibi sabit örnekler:
    • Spekülalar değiştirilerek Tegra 2 ve 3 yongalarıyla ilgili bir sorun çözüldü değişkenlerinin orta düzeyde hassasiyeti kullanmasını gerektirir. Tahmine dayalı güç değerleri artık daha düşük olabilir daha iyi performans gösterir.
    • Örnekleri, ses düğmesine basıldığında alınan içeriğin geri yükleneceği şekilde değiştirildi yoğun içerik modu ve geçersiz hale gelir SYSTEM_UI_FLAG_IMMERSIVE_STICKY Ekran döndürme onSystemUiVisibilityChange tetikler ve böylece geri yüklenmez yoğun içerik modunu kullanabilirsiniz.
  • Eklenecek ndk-build komut dosyası düzeltildi -rpath-link=$SYSROOT/usr/lib ve ld.bfd uygulamasını şu amaçlarla kullanmak için -rpath-link=$TARGET_OUT: yürütülebilir dosyaları bağlayın. (Sorun 64266)
  • -Bsymbolic tüm STL derlemelerinden kaldırıldı.
  • SHELL şu şekilde ayarlanarak ndk-gdb-py.cmd düzeltildi: bir ortam değişkeni bir kullanıcıya python.exe değerine ayarlanırsa bu ayar yok sayılır. (Sorun 63054)
  • make-standalone-toolchain.sh komut dosyası şu şekilde düzeltildi: --stl=stlport seçeneği, gabi++ başlıklarını kopyalar ( ve simgeleri analiz ederek cmd.exe ve MinGW kabukları anlaşılmıyor cygwin tarafından oluşturulan sembolik bağlantılar.
Diğer değişiklikler:
  • Yürütme izinleri tüm *cmd komut dosyasına uygulandı daha önce yalnızca cmd.exe kabuğunda kullanılması amaçlanmıştır. geliştiriciler cygwin yerine ndk-build.cmd kullanmayı tercih ederler önerilen ndk-build komut dosyası.
  • make-standalone-toolchain.sh hızı artırıldı komut dosyasını, belirtilen hedef dizin içeriyorsa kopyalamak yerine taşıyarak mevcut değil.

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üklendi. Bu sorun, kare işaretçisinin güvenilir şekilde çalışmasını engelledi veya yığın çerçevesindeki bir değişkene erişirsiniz. (GCC Sorunu 58854)
  • std::nth_element rastgele bir kod üreten bir kod oluşturulmasına neden oluyordu her şeyi kapsıyor. (Sorun 62910)
  • GCC 4.8 ICE, cc1/cc1plus ile düzeltildi: -fuse-ld=mcld kullanarak aşağıdaki hatanın artık oluşmaması için:
    cc1: internal compiler error: in common_handle_option, at
    opts.c:1774
  • -mhard-float desteği düzeltildi __builtin matematik işlevi. Okuyucu Gelirleri Yöneticisi'ndeki STL ile -mhard-float, lütfen 61784 numaralı sorunu uygulayın.
Diğer hata düzeltmeleri:
  • Üstbilgi düzeltmeleri:
    • poll prototipi poll.h içinde poll(struct pollfd *, nfds_t, int); olarak değiştirildi.
    • utimensat, Android için libc.so koleksiyonuna eklendi API düzeyleri 12 ve 19. Bu kitaplıklar artık tüm Android API'leri için dahil 12 ile 19. seviye arasında olmalıdır.
    • Android API için libc.so, futimens kullanıma sunuldu seviye 19.
    • Eksik clock_settime() ve özellikleri eklendi Android API düzey 8 için clock_nanosleep() - time.h ve daha yüksek olabilir.
    • CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, ve time.h. içinde CLOCK_BOOTTIME_ALARM
    • Eski CLOCK_REALTIME_HR ve CLOCK_MONOTONIC_HR.
  • Örneklerde Teapot, MoreTeapots ve source/android/ndk_helper:
    • Bunları, artık armeabi-v7a için sabit kayan abi kullanacak şekilde değiştirdik.
    • Uygulamalar, Android API düzey 19'da yoğun içerik modunu kullanacak şekilde güncellendi. daha yüksek olabilir.
    • Şu görevde Check_ReleaseStringUTFChars ile ilgili bir sorun düzeltildi: x86 cihazlarda kilitlenmelere neden olan /system/lib/libdvm.so.
  • NDK, cygwin'de meydana gelen ndk-build arızaları düzeltildi paket veya sembolik bağlantıyla referans gösteriliyor.
  • Pencerelerde meydana gelen ndk-build.cmd hataları düzeltildi cmd.exe olduğunda LOCAL_SRC_FILES mutlak yollar içeriyor. (Sorun 69992)
  • ndk-stack komut dosyasının ayrıştırılamasa bile devam etmesi düzeltildi rutin, dosya adı veya satır numarasının bulunamamasından dolayı oluşan kare Herhangi bir bu durumlarda ?? olarak görünür.
  • Windows-x64_64 hedefleri için ndk-stack yığınını düzelterek artık hatalı bir şekilde pc içermeyen stack: bölümü, eip veya ip. Örnek:
    I/DEBUG   ( 1151):     #00  5f09db68  401f01c4
    /system/lib/libc.so
    .
  • gabi++, şu şekilde düzeltildi:
    • C++Thread-local tahsis etmek için Malloc() kullanmıyor nesneler'i tıklayın.
    • libc.debug.malloc'un userdebug/eng Android platformu derlemelerinde sıfır olmayan bir değer.
Diğer değişiklikler:
  • LOCAL_EXPORT_LDFLAGS eklendi.
  • Şurada kullanılmak üzere NDK_PROJECT_PATH=null ayarı kullanıma sunuldu: seçeneklerin açıkça iletildiği entegre derleme sistemi ndk-build. Bu ayar etkinken ndk-build, araması yapmayı deneyin: NDK_PROJECT_PATH. Bu ayar, değişkenlerini NDK_PROJECT_PATH'den varsayılan ayarlarla türetmesini engeller. Sonuç olarak, aşağıdaki değişkenler artık açıkça belirtilmelidir (varsayılan değerleriyle) değerleri (varsa): NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG (isteğe bağlı, varsayılan olarak 0'dır) ve diğer APP_* Application.mk içinde yer alır.
  • APP_ABI artık virgülle ayrılmış bir listede numaralandırılabilir. Örneğin, örnek:
    APP_ABI := "armeabi,armeabi-v7a"
    .
  • STL'lerin tamamındaki hata ayıklama bilgileriyle tüm STL'leri isteğe bağlı, android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip kullanarak -g seçeneği. 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.
  • hello-jni örnek, APP_ABI metriğinin raporlanacağı şekilde iyileştirildi: derlememiz var.
  • ar aracı Deterministik modda kullanıldı (seçenek) -D) kaldırın. (Sorun 60705)
Önemli değişiklikler:
  • include/android/*h ve math.h, şuna kadar tüm Android API düzeyleri için güncellendi: (13, 15, 16 ve 17. düzeylerin eklenmesi dahil) Eklenen API'ler hakkında bilgi edinmek için Değişiklikler kaydetme mesajlarına bakın 68012 ve 68014. (Sorun 47150, 58528 ve 38423)
  • Renderscript bağlaması da dahil olmak üzere Android API düzey 19 için destek eklendi.
  • Mevcut armeabi-v7a ABI'sine -mhard-float desteği eklendi. Daha fazla ve mevcut kısıtlamalar hakkında daha fazla bilgi için tests/device/hard-float/jni/Android.mk
  • GNU Derleyici Koleksiyonu'ndan (GCC) 4.8 - 4.8.2 sürümüne taşındı ve teşhis rengi eklendi destek. Teşhis renklerini etkinleştirmek için -fdiagnostics-color=auto değerini ayarlayın, -fdiagnostics-color=always, veya dışa aktarın GCC_COLORS:
    GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
    
    Daha fazla bilgi için bkz. GCC Dilden bağımsız seçenekler.
  • 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ümlere sahip cihazlarda çalışır.
  • Desteği sonlandırılan GCC 4.7 ve Clang 3.2 desteği sonraki bir tarihte kaldırılacak kullanabilirsiniz.
Önemli hata düzeltmeleri:
  • 16 bit göreli atlama oluşturamayan ARM GCC 4.6 thumb2 ile ilgili sorun düzeltildi tablolarında anlatacağım. (GCC Sorunu)
  • Şu cihazda GCC 4.8 dahili derleyici hatası (ICE) düzeltildi g++.dg/cpp0x/lambda/lambda-defarg3.C (Değişim: 62770, GCC Sorunu)
  • Windows 32 bit *-gdb.exe yürütülebilir dosyalarının başlatılamamasına ilişkin sorun düzeltildi. (Sorun 58975)
  • Madde işareti kitaplığı oluşturulurken GCC 4.8 ICE düzeltildi. Hata mesajı aşağıdaki gibidir:
    internal compiler error: verify_flow_info failed
    . (Sorun 58916, GCC Sorunu)
  • Prolog kodunda ve geri yüklemede ARM.exidx verilerini atlamak için GDB/ARM derlemesi değiştirildi exidx tabanlı yığın geri almayı kontrol etmek için bir komut (set arm exidx-unwinding) ekledi. (Sorun 55826)
  • HI ve LO kayıtlarının yanlış olduğu Clang 3.3 MIPS derleyici sorunu düzeltildi yeniden kullanıldı.
  • dbx_reg_number bölgesinde MIPS 4.7 ICE ile ilgili sorun düzeltildi. Hata mesajı: şöyle olur:
    external/icu4c/i18n/decimfmt.cpp:1322:1:
    internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
    
    . (GCC Yaması)
Diğer hata düzeltmeleri:
  • Üstbilgi düzeltmeleri
    • Şuna göre ARM WCHAR_MIN ve WCHAR_MAX imzasının kaldırılması düzeltildi: (X86/MIPS sürümleri imzalıdır). _WCHAR_IS_ALWAYS_SIGNED kelimesinin tanımı eski davranışı geri yükleme. (Sorun 57749)
    • include/netinet/tcp.h, TCP_INFO durum sıralaması içerecek şekilde düzeltildi. (Sorun 38881)
    • Oluşturmayı durdurmak için cdefs_elh.h makrosu _C_LABEL_STRING sorunu düzeltildi c++11 modunu kullanırken GCC 4.8 araç zincirinde uyarılar. (Sorun 58135, Sorun 58652)
    • Var olmayan imaxabs ve imaxdiv işlevleri başlıktan kaldırıldı inttypes.h.
    • Döndürülen pthread_exit() değerleri ve pthread_self() ile ilgili sorun düzeltildi. (Sorun 60686)
    • bionic içinde zaten mevcut olan eksik mkdtemp() işlevi eklendi başlık stdlib.h.
  • Android API düzey 11'de Clang ile samples/gles3jni oluşturma sorunu düzeltildi.
  • MCLinker'ın aşağıdaki seçeneklerin birden fazla kez gösterilmesine izin verecek şekilde düzeltme yapıldı: -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 varsaymamak için değiştirilmiş cpu-features seçeneği. Artık bu seçenek, Nexus 4 dahil olmak üzere yalnızca beyaz listeye eklenen cihazlara IDIV'yi ekler. (Sorun 57637)
  • android_native_app_glue.c etkinliğinin hatalı şekilde günlüğe kaydedilmesiyle ilgili sorun düzeltildi işlemleri için kullanılır.
  • gabi++ üzerindeki tüm işlemlerin sonlandırılması ve beklenmedik_handler'ın şu şekilde olması düzeltildi: ileti dizisi açısından güvenli.
  • Geçebilmesi için Clang -integrated-as seçeneğiyle ilgili birkaç sorun düzeltildi ssax-instructions ve fenv için testler.
  • GCC 4.6/4.7/4.8 derleyicisi, --eh-frame-hdr bağlayıcı seçeneğini dahi iletecek şekilde düzeltildi için en iyi yöntemleri içerir. Daha fazla bilgi için GCC yaması.
  • CPU-ARCH-ABIS.html hücresindeki fazladan kesme işareti düzeltildi. Daha fazla bilgi için bkz. NDK-DEPENDS.html (Sorun 60142)
  • Windows'da ndk-build çıkışındaki fazladan tırnak işareti düzeltildi. (Sorun 60649)
  • ARM'nin yerleşik, atomik işlemlerini derlemek için Clang 3.3 düzeltildi: __atomic_fetch_add, __atomic_fetch_sub ve __atomic_fetch_or.
  • Özelleştirilmiş vfprintf içeren Clang 3.3 ICE düzeltildi. (Clang sorunu)
Diğer değişiklikler:
  • Tüm GCC derlemeleri için OpenMP etkinleştirildi. Bu özelliği kullanmak için aşağıdaki işaretleri derleme ayarları:
    LOCAL_CFLAGS += -fopenmp
    LOCAL_LDFLAGS += -fopenmp
    
    . Kod örnekleri için tests/device/test-openmp sayfasına bakın
  • ld.mcld boyutu önemli ölçüde küçültüldü (1,5 MB - ld.bfd 3,5 MB ve ld.gold 7,5 MB) ve yaklaşık %20 hız artışı sağlar.
  • Belirtmek için LOCAL_CONLYFLAGS ve APP_CONLYFLAGS eklendi seçenekleri yalnızca C için geçerli olup C++ için geçerli değildir. Mevcut LOCAL_CFLAGS ve APP_CFLAGS aynı zamanda C++ derlemesi için de kullanılır ( çoğu seçeneği iki kez belirtir, dolayısıyla -std=gnu99 gibi seçenekler başarısız olabilir g++ derlemeleri uyarıyla, clang++ ise hatayla derleme yapar.
  • gabi++ dizi yardımcı işlevi eklendi.
  • Değiştirilmiş GCC derlemeleri, tüm libgcc.a dosyalarının Yığının daha önce engellenenlerin çözülmesine izin vermek için -funwind-tables (__aeabi_idiv0 gibi).
  • MIPS GCC4.6/4.7/4.8'e yeni -mmxu ile Ingenic MXU desteği eklendi. seçeneğini belirleyin.
  • ldxc1/sdxc1'i de kontrol etmek için genişletilmiş MIPS GCC4.6/4.7/4.8 -mldc1-sdc1
  • Çılgın bağlayıcı eklendi. Daha fazla bilgi için bkz. sources/android/crazy_linker/README.TXT
  • bitmap-plasma öğesinin 200x200 piksel yerine tam ekranda çizim yapması düzeltildi alanı.
  • Aynı dosyalara sembolik bağlantılar oluşturarak Linux ve darwin araç zinciri boyutları% 25 küçültüldü.
Önemli değişiklikler:
  • Android 4.3 (API düzeyi 18) için destek eklendi. Daha fazla bilgi için bkz. samples/gles3jni/README dilinde STABLE-APIS.html ve yeni kod örnekleri.
  • Android 4.3 tarafından desteklenen OpenGL ES 3.0 için başlık ve kitaplıklar eklendi (API düzeyi 18) ve sonraki sürümler.
  • NDK'ya GNU Derleyici Koleksiyonu (GCC) 4.8 derleyicisi eklendi. GCC 4.6 hâlâ varsayılan olarak bu seçeneği açıkça etkinleştirmeniz gerekir:
    • ndk-build derleme için dışa aktarın: NDK_TOOLCHAIN_VERSION=4.8 veya Application.mk klasörüne ekleyin.
    • Bağımsız derlemeler için şurada --toolchain= seçeneğini kullanın: make-standalone-toolchain.sh, örneğin:
      --toolchain=arm-linux-androideabi-4.8

    Not: -Wunused-local-typedefs seçeneği -Wall tarafından etkinleştirildi. gibi derleme zamanı doğrulamaları kullanıyorsanız __attribute__((unused)) eklediğinizden emin olun. sources/cxx-stl/stlport/stlport/stl/config/features.h, 311. satır. Daha fazla bkz. Değişim: 55460

    Not: GCC 4.7 ve sonraki sürümlerde ARM derleyicileri, ARMv6 ve daha yüksek derleme hedefleri için varsayılan olarak ayarlanır. Etiketlere Desteklenmeyen çekirdekler için derleme yaparken -mno-unaligned-access derleme seçeneği bu özelliği kullanabilirsiniz.

  • 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 desteği sonlandırıldı ve bir sonraki NDK'dan kaldırılacak kullanabilirsiniz.

  • GNU Proje Hata Ayıklayıcısı (GDB), python 2.7.5'i destekleyecek şekilde güncellendi.
  • Windows ana makinelerini desteklemek için MCLinker eklendi. ld.gold tarihinden beri , kullanılabildiği yerlerde varsayılandır, -fuse-ld=mcld adresini MCLinker'ı etkinleştirmek için LOCAL_LDFLAGS veya APP_LDFLAGS.
  • ELF kitaplığı bağımlılıklarını yazdıran ndk-depends aracı eklendi. Daha fazla bilgiyi NDK-DEPENDS.html sayfasında bulabilirsiniz. (Sorun 53486)
Önemli hata düzeltmeleri:
  • android_native_app_glue için olası etkinlik işleme sorunu düzeltildi. (Sorun 41755)
  • NEON yükü ve depolaması için yeterli uyum sağlamak amacıyla ARM/GCC-4.7 derlemesi düzeltildi VST ve VLD talimatlarını uygulayın. (GCC Sorunu 57271)
  • Sabit negatif dizin için GCC 4.4.3/4.6/4.7 dahili derleyici hatası (ICE) düzeltildi değerini girin. (Sorun 54623)
  • Nesne adresiyle sabit başlatma için GCC 4.7 segmentasyon hatası düzeltildi. (Sorun 56508)
  • Boost kullanılırken -O değerleri için GCC 4.6 ARM segmentasyon hatası düzeltildi 1.52.0. (Sorun 42891)
  • wait4() işlevini desteklemek için libc.so ve libc.a düzeltildi. (Sorun 19854)
  • x86 libc.so ve libc.a dosyaları, clone() içerecek şekilde güncellendi işlevini kullanın.
  • linker.list dosyasının bulunduğu LOCAL_SHORT_COMMANDS hatası düzeltildi olup olmadığını kontrol edin.
  • Mac OS'te GCC MIPS derlemesi, CFI yönergelerini kullanacak şekilde düzeltildi. ld.mcld --eh-frame-hdr sık sık başarısız oluyor.
  • llvm/lib/VMCore/Value.cpp içindeki Clang 3.2 X86/MIPS dahili derleyici hatası düzeltildi. (Değişim: 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şlemleri gerçekleştirilecek şekilde güncellendi Şimdi, belirlenen ayrılma noktalarının daha güvenilir şekilde sonuç vermesi için GNU Hata Ayıklama Sunucusu'nu bekleyin erken aşamalarda (JNI kodundaki ayrılma noktaları gibi) kullanabilirsiniz. (Sorun 41278)

    Not: Bu özellik jdb gerektirir ve bekleyen ayrılma noktaları hakkında uyarı oluşturur. Önceki davranışı geri yüklemek için --nowait seçeneğini belirtin.

  • Kitaplık listesi boş olduğunda GDB kilitlenmesi düzeltildi.
  • bx pc veya sonraki bir stepi komutu kullanılırken karşılaşılan GDB kilitlenmesi düzeltildi blx pc Beğenme talimatı. (Sorun 56962, Sorun 36149)
  • MIPS gdbserver yerine DT_MIPS_RLD_MAP DT_DEBUG. (Sorun 56586)
  • ndk-build komut dosyasındaki döngüsel bağımlılık düzeltildi. Örneğin: A->B ve B->B, ardından B, yapıdan çıkarılır. (Sorun 56690)
Diğer hata düzeltmeleri:
  • ndk-build komut dosyası, Clang'in bir sürümünü komut satırı seçeneği (ör. NDK_TOOLCHAIN_VERSION=clang3.2) bilgileri gösterilir. Daha önce yalnızca sürümü ortam değişkeni olarak belirtmek işe yaradı.
  • Aşağıdaki durumlarda MIPS derleme hedefleri için _Unwind_Exception olan gabi++ boyutu 24 olarak düzeltildi Clang derleyiciyi kullanabilirsiniz. (Değişim: 54141)
  • Derlenen kitaplıkların gerçekten doğru çalışmasını sağlamak için ndk-build komut dosyası düzeltildi Bu özellik kullanılırken önceden oluşturulmuş statik kitaplıklar içeren projelerden ndk-build clean komutudur. (Değişim: 54461, Değişim: 54480)
  • NDK_ANALYZE=1 seçeneği daha az ayrıntılı olacak şekilde değiştirildi.
  • gnu-libstdc++/Android.mk, derlemeler için backward/ yolu içerecek şekilde düzeltildi geriye dönük uyumluluk da kullanabilirsiniz. (Sorun 53404)
  • stlport new ürününün bazen rastgele değerler döndürmesine neden olan sorun düzeltildi.
  • ndk-gdb, APP_ABIS değil, CPU_ABIS düzeniyle eşleşecek şekilde düzeltildi. (Sorun 54033)
  • MacOSX'teki NDK 64 bit derlemesinin derleyici olarak da adlandırılır. (Sorun 53769)
  • 64 bit Windows Vista'yı algılayacak derleme komut dosyaları düzeltildi. (Sorun 54485)
  • x86 ntonl/swap32 hatası düzeltildi: invalid 'asm': operand number out of range. (Sorun 54465, Değişim: 57242)
  • Değişmez dize değerlerini birleştirmek için kullanılan ld.gold düzeltildi.
  • Büyük simge hizalamasını işlemek için ld.gold düzeltildi.
  • ld.gold, --sort-section=name seçeneğini etkinleştirmek için güncellendi.
  • -export-dynamic seçeneğini engellemek için GCC 4.4.3/4.6/4.7 düzeltildi birbirine çok benzer. GCC, artık statik olarak için bir .interp bölümü eklemiyor bağlı programlardır.
  • Tutarsız typedef ile ilgili GCC 4.4.3 stlport derleme hatası düzeltildi / _Unwind_Control_Block. (Sorun 54426)
  • Şu konumda oluşturulan AndroidManifest.xml dosyayı işlemek için awk komut dosyası düzeltildi Sonunda \r karakter içerebilen ve derleme hatalarına neden olabilecek pencereler. (Sorun 42548)
  • prebuilts/ cihazını kontrol etmek için make-standalone-toolchain.sh düzeltildi dizine ekleyerek ana makinenin 32 bit mi yoksa 64 bit mi olduğunu belirler.
  • Clang 3.2 -integrated-as seçeneği düzeltildi.
  • Clang 3.2 ARM EHABI kompakt model pr1 ve pr2 işleyici verileri düzeltildi.
  • Aşağıdaki Clang 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!
  • Uygulamada uses-sdk öğesi olmadığında derleme hatası düzeltildi manifest'ini kullanabilirsiniz. (Sorun 57015)
Diğer değişiklikler:
  • Üstbilgi Düzeltmeleri
    • __set_errno satır içi işlev yapmak için başlıklar değiştirildi errno.h için __set_errno desteği sonlandırıldı ve libc.so artık kullanılmıyor dışa aktarır.
    • elf.h, stdint.h içerecek şekilde değiştirildi. (Sorun 55443)
    • sys/un.h, diğer başlıklardan bağımsız olarak dahil edilecek şekilde sabitlendi. (Sorun 53646)
    • Tüm MotionEvent_getHistorical API ailesinin const AInputEvent* motion_event. (Sorun 55873)
    • malloc_usable_size, const void* sürerek sabitlendi. (Sorun 55725)
    • stdint.h, C99 ile daha uyumlu olacak şekilde düzeltildi. (Değişim: 46821)
    • wchar.h, WCHAR_MAX ve WCHAR_MIN
    • İşaretçiyle ilgili PRI ve<inttypes.h> SCN makro. (Sorun 57218)
    • sys/cdefs.h üstbilgisi, __WCHAR_TYPE__ 32 bit olacak şekilde değiştirildi 9'dan düşük API düzeyleri için, wchat_t tüm kullanıcılar için 32 bit demektir API düzeyleri. Önceki davranışı geri yüklemek için _WCHAR_IS_8BIT öğesini tanımlayın boole değişkenidir. (Sorun 57267)
  • NDK docs/ sürümüne daha fazla biçimlendirme ve çeşitli doküman düzeltmeleri eklendi.
  • Statik kitaplıklar oluştururken ince bir arşiv tekniği desteği eklendi. (Sorun 40303)
  • make-standalone-toolchain.sh komut dosyası, stlport eklentisini destekleyecek şekilde güncellendi gnustl'a ek olarak kitaplık'ı da kullanabilirsiniz. --stl=stlport. Daha fazla bilgiyi STANDALONE-TOOLCHAIN.html sayfasında bulabilirsiniz.
  • make-standalone-toolchain.sh komut dosyası, --llvm-version= seçeneği, $TOOLCHAIN_PREFIX-clang ve $TOOLCHAIN_PREFIX-clang++ komut dosyasına ek olarak clang ve clang++, ana makinenin clang ve clang++ tanımlarını yanlışlıkla kullanmaktan kaçınmak için.
  • Yukarı akışta iki optimizasyonu yeniden etkinleştirmek ancak şurada devre dışı bırakmak için iki işaret eklendi: GCC tarafından derlenen kodla daha iyi uyumluluk için NDK:
    • Eksik bilgi özelliğinin yeniden etkinleştirilmesi için bir -fcxx-missing-return-semantics işareti eklendi iade anlamları hakkında daha fazla bilgi edinin. Normalde tüm yollar bir dönüş ile sona ermelidir deyimi olabilir. Bu durumda clang ekleme yolda, dönüş içermeyen tanımlanmamış bir talimat (veya hata ayıklama modunda bir kilitlenme) ifade eder. Kodunuzun doğru olduğundan eminseniz, tanımlanmamış davranıştan yararlanmak için optimize ediciyi seçin. Emin değilseniz bu işareti kullanın. Arayan kişi yine de rastgele yanlış bir değer alabilir ancak optimize edici bu durumdan yararlanmaz ve kodunuzda hata ayıklamayı zorlaştırır.
    • Yeniden etkinleştirmek için -fglobal-ctor-const-promotion işareti eklendi statik kurucuyla global değişkenleri sabit değer olacak şekilde tanıtma. Bu bayrakla LLVM'nin genel değişken optimizasyon geçişi, değişkenlerini statik kurucularla birlikte kullanır ve bunları global sabit değerlere taşır. Her ne kadar bu optimizasyon doğruysa, derlenen kodla bazı uyumsuzluklara neden olabilir GCC tarafından Örneğin kod, sabit değeri değişkene dönüştürmek için const_cast yapabilir hale getirebilirsiniz. GCC'de değişken okuma-yazma durumundadır ve kod kaza. Clang'da const değişkeni salt okunur bellektedir ve kilitlenmesine neden olabilir.
  • -mldc1-sdc1, MIPS GCC ve Clang derleyicilerine eklendi. Varsayılan olarak, derleyiciler 8 baytlık nesneleri düzgün bir şekilde hizalayıp ldc1 ve sdc1 talimatlarını yer alır. Uygulamanız her zaman hizalanmayan özel bir ayırıcı kullanıyorsa Varsayılan ayırıcıyla aynı şekilde yeni bir nesnenin 8 baytlık sınırıyla hizalanmamış bellekte ldc1 ve sdc1 işlemleri nedeniyle kilitlenebilir. Burada durumunda, sorunu çözmek için -mno-ldc1-sdc1 işaretini kullanın.
  • APP_PLATFORM_LEVEL için uyarı olan etkinlik önem derecesi, bilgi olarak düşürüldü en az APP_MIN_PLATFORM_LEVEL. APP_PLATFORM_LEVEL daha düşük olabilir APP_PLATFORM jni/Application.mk çünkü NDK her düzey için başlıklar kullanın. Bu durumda, gerçek seviye aşağı kaydırılır. İlgili içeriği oluşturmak için kullanılan APP_MIN_PLATFORM_LEVEL, içindeki android:minSdkVersion ile belirtilir uygulamanızın manifest dosyasıdır. (Sorun 39752)
  • android_getCpuIdArm() ve android_setCpuArm() yöntemleri şu listeye eklendi: cpu-features.c. Bu ekleme, ARM CPUID'nin daha kolay alınmasını sağlar ekleyebilirsiniz. (Sorun 53689)
  • ndk-build, Clang derlemesi için GCC 4.7'nin as/ld öğesini kullanacak şekilde değiştirildi.

    Not: GCC 4.7'de monotonic_clock ve is_monotonic, şu şekilde yeniden adlandırıldı: Sırasıyla steady_clock ve is_steady.

  • ndk-build komut dosyasına aşağıdaki yeni uyarılar eklendi:
    • Statik kitaplıkta LOCAL_LDLIBS/LDFLAGS kullanılırsa uyarı eklendi modüllerinde yer alır.
    • Bir yapılandırmada derlenecek modülü yoksa uyarı eklendi.
    • Şurada kullanılan sistem dışı kitaplıklarla ilgili bir uyarı eklendi: Paylaşılan bir kitaplığın veya yürütülebilir modüllerin LOCAL_LDLIBS/LDFLAGS kadarı.
  • Derleme komut dosyaları, APP_MODULES tanımlı değilse ve yalnızca statik olacak şekilde güncellendi kitaplıklar Android.mk konumunda listelenmiştir. Bu komut dosyası, tüm kitaplıkları zorunlu olarak derler. (Sorun 53502)
  • ndk-build, LOCAL_SRC_FILES öğesinde mutlak yolları destekleyecek şekilde güncellendi.
  • *-gdb dosyasının kopyaları olan *-gdbtui yürütülebilir dosya kaldırıldı -tui seçeneği etkin olan yürütülebilir dosyalar.
  • Derleme komut dosyaları, Edison Design Group (EDG) derleyicisi olduğunda sizi uyaracak şekilde güncellendi. kullanıcı arabirimi, _STLP_HAS_INCLUDE_NEXT cihazını tekrar açar. (Sorun 53646)
  • NDK_LIBS_OUT libraries/gdbserver için varsayılan $PROJECT/libs yolu. Daha fazla bilgiyi OVERVIEW.html sayfasında bulabilirsiniz.
  • ndk-build komut dosyası varsayılanları, biçim dizesi korumasıyla kod derlemek için değiştirildi -Wformat -Werror=format-security Hedeflerinize göre Devre dışı bırakmak için LOCAL_DISABLE_FORMAT_STRING_CHECKS=true. Daha fazla bilgi için ANDROID-MK.html inceleyin.
  • ndk-gdb-py için STL güzel baskı desteği eklendi. Daha fazla bilgi için bkz. NDK-GDB.html
  • Googletest çerçevelerine dayalı testler eklendi.
  • Araç zinciri derleme komut dosyasına, mevcut kabuğun bash değil.
Önemli değişiklikler:
  • 64 bit ana makine araç zinciri grubu eklendi (paket adı son eki *-x86_64.*). Daha fazla (bkz. CHANGES.HTML ve NDK-BUILD.html).
  • Clang 3.2 derleyicisi eklendi. GCC 4.6 hâlâ varsayılan sürümdür. Clang derleyicisi, bkz. CHANGES.HTML.
  • Linux/MacOSX ana makineleri için statik kod analiz edici eklendi. analiz aracı için CHANGES.HTML adresine bakın.
  • Linux/MacOSX ana makineleri için MCLinker deneysel bir özellik olarak eklendi. ld.gold bağlayıcı, kullanılabiliyorsa varsayılan değerdir. Bu nedenle, özel olarak etkinleştirmeniz gerekir. Daha fazla için bkz. CHANGES.HTML.
  • ndk-build, modül bağımlılıkları için topolojik sıralama kullanacak şekilde güncellendi. Bu, derleme, LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES ve LOCAL_SHARED_LIBRARIES. Daha fazla bilgiyi CHANGES.HTML sayfasında bulabilirsiniz. (Sorun 39378)
Önemli hata düzeltmeleri:
  • -O2 içindeki tüm araç zincirlerini oluşturmaya yönelik derleme komut dosyası düzeltildi. Önceki araç zincirleri sürümler optimizasyon yapılmadan yanlış şekilde oluşturulmuştu.
  • MacOSX için 64 bit için koşulsuz olarak Clang/llvm 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 kodu kullanarak kodu bağlayamamasıyla ilgili derleme sorunu düzeltildi yerleşik işlevler. (Sorun 41297)
  • GCC 4.7 bağlayıcı DIV kullanım uyuşmazlığı hataları düzeltildi. (Kaynak Yazılımı Sorunu)
  • build_data_member_initialization, at cp/semantics.c:5790 GCC 4.7 dahili derleyici hatası düzeltildi.
  • redirect_eh_edge_1, at tree-eh.c:2214 GCC 4.7 dahili derleyici hatası düzeltildi. (Sorun 52909)
  • GCC 4.7 hata hatası düzeltildi. (GCC Sorunu)
  • <chrono> saat çözünürlüğü düzeltildi ve steady_clock etkinleştirildi. (Sorun 39680)
  • GCC 4.7 libstdc++ için _GLIBCXX_HAS_GTHREADS öğesini etkinleştirecek araç zinciri düzeltildi. (Sorun 41770, Sorun 41859)
  • Eksik nedeniyle X86 MXX/SSE kodunun bağlanamamasıyla ilgili sorun düzeltildi posix_memalign (Değişim: 51872)
  • i386.c işlevindeki GCC4.7/X86 segmentasyon hatası düzeltildi distance_non_agu_define_in_bb(). (Değişim: 50383)
  • Önceki cmov davranışını geri yüklemek için GCC4.7/X86 düzeltildi. (GCC Sorunu)
  • libstdc++/GCC4.7 cinsinden setlocale() için NULL döndürme değerinin işlenmesi düzeltildi. (Sorun 46718)
  • __exidx_start için ld.gold çalışma zamanı tanımsız referansı düzeltildi ve __exidx_start_end. (Değişim: 52134)
  • Eigen kitaplığı kullanılırken Clang 3.1 dahili derleyici hatası düzeltildi. (Sorun 41246)
  • C++11'de <chrono> dahil olmak üzere Clang 3.1 dahili derleyici hatası düzeltildi yatırım yapmanız önemlidir. (Sorun 39600)
  • Bir yöntem için nesne kodu oluşturulurken Clang 3.1 dahili derleyici hatası düzeltildi tek tip olarak başlatılmış rvalue çağrısı. (Sorun 41387)
  • Clang 3.1/X86 yığını yeniden hizalaması düzeltildi. (Değişim: 52154)
  • Android 4.1.2'de hata ayıklama sırasında GNU Debugger (GDB) SIGILL ile ilgili sorun düzeltildi. (Sorun 40941)
  • Simgeler olduğunda GDB'nin source:line ayrılma noktalarını ayarlayamaması sorunu düzeltildi içerir dosya yollarıyla ilişkilidir. (Sorun 42448)
  • MIPS PIE yürütülebilir dosyaları için GDB read_program_header düzeltildi. (Değişim: 49592)
  • uncaught_exception() içindeki STLport segmentasyon hatası düzeltildi. (Değişim: 50236)
  • Şu verilerin hizalanmamış erişimi nedeniyle istisna işlemede STLport veri yolu hatası düzeltildi DW_EH_PE_udata2, DW_EH_PE_udata4 ve DW_EH_PE_udata8.
  • nothrow new[] operatörüyle ilgili Gabi++ sonsuz yineleme sorunu düzeltildi. (Sorun 52833)
  • İstisna işleyici işaretçisine yanlış Gabi++ ofseti düzeltildi. (Değişim: 53446)
  • İstisna nesnesinde Gabi++ gereksiz yer kaldırıldı (Değişim: 53447)
Diğer hata düzeltmeleri:
  • Düzeltilen NDK başlıkları:
    • Gereksiz size_t, ssize_t ve ptrdiff_t.
    • MIPS ve ARM fenv.h başlığı düzeltildi.
    • stddef.h öğesinin, offsetof zaten mevcut olduğu için yeniden tanımlanmaması sorunu düzeltildi devreye girer.
    • elf.h, Elf32_auxv_t ve Elf64_auxv_t içerecek şekilde düzeltildi. (Sorun 38441)
    • Şuradaki #ifdef C++ tanımı düzeltildi: OpenSLES_AndroidConfiguration.h başlık dosyası. (Sorun 53163)
  • STLport ürününün, bellek yetersiz olduğunda sessizce çıkmak yerine işlemi iptal etmesi düzeltildi.
  • API düzeyi 8 ve öncesi ile derleme yapılabilmesi için sistem ve Gabi++ başlıkları düzeltildi.
  • cpufeatures öğesinin, /proc/self/auxv ayrıştırmaması sorunu düzeltildi. (Sorun 43055)
  • ld.gold öğesinin, libstdc++ ana makinesine ve Windows platformlarında libgcc_sjlj_1.dll kitaplığına bağımlı olmayacak.
  • .vsave içinde tutarsız kayıt listesi yayınlayan ve başarısız olan Clang 3.1 düzeltildi bir uygulamadır. (Değişim: 49930)
  • libgabi++'ı derleyebilmek ve test-stlport iletebilmek için Clang 3.1 düzeltildi testler gerçekleştireceğiz. (Değişim: 51961)
  • Clang 3.1'in yalnızca C++ için varsayılan olarak etkinleştirilmesi (C için değil) düzeltildi.
  • Çoğu GNU istisna testini geçmek için Clang 3.1'deki bazı sorunlar düzeltildi.
  • Bağımsız NDK derleyicideki clang ve clang++ komut dosyalarının algılanması için düzeltme uygulandı -cc1 ve bulunduğunda -target belirtilmemelidir.
  • Application.mk içinde ayarlanan NDK_APP_OUT gözlemini gözlemlemek için ndk-build düzeltildi.
  • sigsetjmp değerinin bulunmadığı X86 libc.so ve lib.a sorunu düzeltildi ve siglongjmp işlevleri setjmp.h konumunda zaten bildirilmiş. (Sorun 19851)
  • C++ 11'de Clang ile çalışmak için GCC 4.4.3/4.6/4.7 libstdc++ sürümüne yama uygulandı. (Clang Sorunu)
  • HOST_AWK işlevine iletilen bağımsız değişkendeki Cygwin yolu düzeltildi.
  • Projenin JNI'sinden çalıştırıldığında pencerelerde ndk-build komut dosyası uyarısı düzeltildi dizin. (Sorun 40192)
  • Makefile şunu içeriyorsa ndk-build komut dosyasının oluşturulmaması sorunu düzeltildi: LOCAL_PATH tanımının sonunda boşluk var. (Sorun 42841)
Diğer değişiklikler:
  • GCC/MIPS araç zincirinde iş parçacığı oluşturma desteği etkinleştirildi.
  • GCC istisna işleme yardımcıları __cxa_begin_cleanup ve güncellendi Öncekine göre varsayılan görünürlüğe sahip olmak için __cxa_type_match GNU libstdc++'ta gizli görünürlük. Daha fazla bilgi için bkz. CHANGES.HTML.
  • 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ük.
  • Derleme, STLport ürününün, ARM için küçük resim modunda derleneceği şekilde güncellendi.
  • Gabi++'ta std::set_new_handler için destek eklendi. (Sorun 52805)
  • GNU libstdc++'ta FUTEX sistem çağrısı etkinleştirildi.
  • ndk-build, önceden oluşturulmuş statik kitaplığın artık şuralara kopyalanmayacağı şekilde güncellendi: projenin obj/local/<abi>/ dizinini oluşturur. (Sorun 40302)
  • __ARM_ARCH_5*__, ARM toolchains/*/setup.mk komut dosyasından kaldırıldı. (Sorun 21132)
  • ARM için ek GNU libstdc++ kitaplıkları oluşturuldu.
  • madd/msub/nmadd/nmsub/recip/rsqrt kayan noktası etkinleştirildi talimatları uygulayın.
  • 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 analiz yapan Clang 3.1 için polly etkinleştirildi bellek erişimini optimize eder. (bilgi)
  • -flto GCC 4.7, 4.6, Clang 3.2 ve Clang 3.1'de Linux'ta (Clang LTO) etkinleştirildi (LLVMgold.so) üzerinden. ld.gold nedeniyle MIPS derleyici hedefleri desteklenmiyor uygun değil.
  • 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++, _GLIBCXX_USE_C99_MATH ile yapılandırıldı. Bu, Biyonik başlıkta isinf komut dosyası. Daha fazla bilgi için bkz. CHANGES.html
  • APP_LDFLAGS, derleme komut dosyalarına eklendi. Daha fazla bilgi için bkz. ANDROID-MK.html
  • Derleme komut dosyaları, NDK_LOG=0 uygulamasının NDK_LOG özelliğini devre dışı bırakmasına izin verecek şekilde güncellendi.
  • Derleme komut dosyaları, NDK_HOST_32BIT=0 ürününün ana makine geliştiricisini devre dışı bırakmasına izin verecek şekilde güncellendi ortam 32 bit araç zinciri olduğundan emin olun.
  • -march= ve -mtune= varsayılan GCC/X86 işaretleri pentiumpro ve generic ile i686 ve atom.
  • Geliştirilmiş araç zinciri derleme komut dosyaları:
    • mingw derleme türü için build-gcc.sh işlevindeki bir yarış durumu düzeltildi Bu da önemli miktarda paralel derleme işlemi yapılmasını engelliyordu.
    • Artık çalışabilmeleri için build-gabi++.sh ve build-stlport.sh güncellendi "NDK paketinden çıkar". (Sorun 52835)
    • MSys yardımcı programları koleksiyonunda run-tests.sh düzeltildi.
    • Geliştirilmiş 64 bit ana makine araç zinciri ve Kanada Haçı derleme desteği.
    • build-mingw64-toolchain.sh komut dosyası daha yeni sürüme güncellendi.
    • libgnustl_static.a ve stlport_static.a derleme seçeneği eklendi olmadan çalışır.
Önemli değişiklikler:
  • NDK'ya GNU Compiler Collection (GCC) 4.7 derleyicisi eklendi. GCC 4.6 derleyicisi hâlâ varsayılan ayardır. Bu nedenle, yeni sürümü aşağıdaki şekilde açıkça etkinleştirmeniz gerekir:
    • ndk-build için NDK_TOOLCHAIN_VERSION=4.7 değişkenini dışa aktarın veya Application.mk öğesine ekleyin.
    • Bağımsız derlemeler için --toolchain= seçeneğini ekleyin. make-standalone-toolchain.sh, örneğin:
      --toolchain=arm-linux-androideabi-4.7

    Not: Bu özellik deneme aşamasındadır. Lütfen deneyin ve sorunları bildirin.

  • gabi++ üzerinden stlport istisna desteği eklendi. Yeni gabi++ dlopen ve ilgili koda bağlıdır. Bu da şu anlama gelir:
    • Artık -static kullanarak statik yürütülebilir bir dosya derleyemezsiniz seçeneğini belirleyin veya şunu kullanarak libstlport_static.a ekleyin: APP_STL := stlport_static. (-static seçeneğini kullanmaya devam edebilirsiniz tek bir araç zinciriyle çalışır.) Dinamik yürütülebilir dosyayı include $(BUILD_EXECUTABLE) çalışmaya devam eder çünkü derleyici otomatik olarak -ldl seçeneğini ekler.
    • Projeniz, -nostdlib ve {-Wl,--no-undefined} kullanarak bağlantı kuruyorsa -ldl seçeneğini manuel olarak içermelidir.
    ziyaret edin. Daha fazla bilgi için bkz. CPLUSPLUS-SUPPORT.html.

    Not: Bu özellik deneyseldir ve GCC ile daha iyi çalışır 4.6/4.7 derleyiciler (GCC 4.4.3 veya Clang 3.1'e kıyasla). Lütfen deneyin ve sorunları bildirin.

  • x86 için şu seçeneklerden birini tercih edebileceğiniz bir -mstack-protector-guard= seçeneği eklendi: Eski Android C kitaplığıyla (bionic) uyumlu global varsayılan yol ve -fstack-protector için yeni bir tls yolu (%gs:20) GCC 4.6'yı kullanarak -fstack-protector-all ve -fstack-protector-strong ve daha yüksek derleyiciler.

    Not: -mstack-protector-guard ayarının kendisi -fstack-protector* seçeneklerini etkinleştirin.

  • android_setCpu() işlevi eklendi Şu cihazda otomatik olarak algılandığında kullanmak için sources/android/cpufeatures/cpu-features.c: /proc, Android 4.1 ve sonraki sürümlerde kullanılamaz. (Chromium Sorunu 164154)
Önemli hata düzeltmeleri:
  • ndk-build komut dosyası kullanılırken nesne dosyalarının gereksiz şekilde yeniden derlenmesi sorunu düzeltildi. (Sorun 39810)
  • şu hata oluştu:
    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, 2022'de ikilik programlar oluşturan Mac OS X 10.7'de Mac OS 10.6.x ve NDK ile uyumlu değildir.
  • -x c++ seçenekleri, Clang++ bağımsız derleme komut dosyasından 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ı, dosyanın oluşturulmasına izin verecek şekilde düzeltildi ortamlarını kullanarak bağımsız araç zinciri oluşturmalarını sağlar. Elde edilen araç zinciri Cygwin, MingGW veya CMD.exe ortamlarında kullanılabilir. (Sorun 39915, Sorun 39585)
  • Şunun için android-14 derlemelerinde eksik SL_IID_ANDROIDBUFFERQUEUESOURCE seçeneği eklendi: ARM ve X86. (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) C++ kullanmasını engelleyen bir sorun düzeltildi .cpp dosya uzantısına sahip olmayan kaynaklar.
  • refresh1.c:1061 kodlu GCC 4.6 ARM dahili derleyici hatası düzeltildi. (Sorun 20862)
  • emit-rtl.c:1954 konumundaki 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ığı dosyası düzeltmeleri:
    • __WINT_TYPE__ ve wint_t öğelerinin aynı türde olması düzeltildi.
    • android/bitmap.h dokümanında yazım hatası düzeltildi. (Sorun 15134)
    • errno.h dokümanında yazım hatası düzeltildi.
    • sys/cdefs.h konumunda __STDC_VERSION__ varlığına ilişkin kontrol eklendi. (Sorun 14627)
    • byteswap.h ve dirent.h ürününde üstbilgiler yeniden düzenlendi.
    • limits.h, PAGE_SIZE sağlayan page.h öğesini içerecek şekilde düzeltildi Ayarlar'da devre dışı bırakabilirsiniz. (Sorun 39983)
    • glGetAttribLocation() sabit dönüş türü ve int-GLint arası glGetUniformLocation().
    • x86 derlemeleri için __BYTE_ORDER sabiti düzeltildi. (Sorun 39824)
  • ndk-build komut dosyasının, ARM için -O2 ile -Os öğesinin üzerine yazmaması düzeltildi inşa eder.
  • HOST_AWK, HOST_SED ve HOST_MAKE ayarları.
  • fsck_msdos derlemelerinde nesneleri birbirine bağlayan ld.gold ile ilgili sorun düzeltildi: Intel C/C++ derleyicisi (ICC).
  • Clang'da ARM EHABI desteği spesifikasyonlara uygun olması için düzeltildi.
  • Hedefin bağlantı haritasında yürümek için harcanan süreyi kısaltmak için GNU Debugger (GDB) özelliği düzeltildi solib etkinlikleri sırasında (Sorun 38402)
  • Paylaşılan kitaplıkları bağlarken eksik olan libgcc.a dosyası düzeltildi.
Diğer değişiklikler:
  • ARM - GCC 4.6 için, geri bağlanmış 64 bit yerleşik atomik işlevler.
  • Ses çıkışı gecikmesi ile ilgili olarak diğer belgeler ve gider.
  • Clang ile hata ayıklama derlemeleri düzeltildi, böylece geçersiz olmayan işlevler artık SIGILL yükseltecek dönüş ifadesi olmayan yollar için sinyal gücü.
  • make-standalone-toolchain.sh, -clang3.1 son ekini kabul edecek şekilde güncellendi Bu, GCC 4.6 araç zincirine --llvm-version=3.1 eklemeye eşdeğerdir.
  • GCC ve Clang hata raporunun URL'si şu şekilde güncellendi: https://source.android.com/source/report-bug s.html
  • llvm-objdump hedefine ARM ELF desteği eklendi.
  • Clang derlemeleri için atlanmış c girişi c++ olarak işleniyor uyarısı.
  • Derleme güncellendi. Böylece yalnızca libiberty.a ürününün 32 bit sürümü derlenir ve lib32/ konumuna yerleştirildi.
Önemli değişiklikler:
  • NDK'ya Clang 3.1 derleyicisi eklendi. GNU Derleyici Koleksiyonu (GCC) 4.6: hâlâ varsayılan ayar olduğundan Clang derleyici seçeneğini aşağıdaki gibi açıkça etkinleştirmeniz gerekir:
    • ndk-build için dışa aktarın: NDK_TOOLCHAIN_VERSION=clang3.1 veya bu ortam değişkeni ayarını Application.mk hedefine ekleyin.
    • Bağımsız derlemeler için şuraya --llvm-version=3.1 ekleyin: make-standalone-toolchain.sh ve CC ile CXX değerlerini <tool-path>/bin/clang ve ile dosya oluşturun <tool-path>/bin/clang++. STANDALONE-TOOLCHAIN.html ürününü inceleyin bolca fırsat sunuyor.

    Not: Bu özellik deneme aşamasındadır. Lütfen deneyin ve sorunları bildirin.

  • Windows araç zinciri için Altın bağlayıcı ld.gold eklendi. Gold Linker aynı zamanda tüm ana makinelerde ARM ve X86 için varsayılan olarak ayarlanır. ld.bfd özelliğini kullanmak için bunu geçersiz kılabilirsiniz. bağlayıcı etiketini Android.mk içine LOCAL_LDFLAGS += -fuse-ld=bfd ekleyerek veya geçen -fuse-ld=bfd adresini, bağlantıyı yapan g++/clang++ komut satırına ekleyin.
  • ndk-build[.cmd] ve NDK yolundaki boşluklar için kontroller eklendi. ndk-gdb komut dosyası kullanarak teşhis edilmesi zor yapı hatalarını önler.
  • API düzeyinde işlemede aşağıdaki değişiklikler yapıldı:
    • Derleme mantığında değişiklik yapılan projeler için android-10 ve android-13 içinde APP_PLATFORM, project.properties veya yerine android-9 yerine default.properties bağlantısı android-14.
    • Derleme güncellendi, android-16 (Jelly Bean) veya sonraki sürümleri kullanan yürütülebilir dosyalar , konumdan bağımsız yürütülebilir dosyalar (PIE) için -fPIE seçeneğiyle derlenir. Yeni APP_PIE seçeneği, bu davranışı kontrol etmenize olanak tanır. Ayrıntılar için APPLICATION-MK.html sayfasını ziyaret edin.

      Not: 14'ün üzerindeki tüm API düzeyleri, platforms/android-14 ile bağlantı kurmaya devam eder ve yeni platforms/android-N eklenmemiştir.

    • Düzenlenen API seviyesi daha büyükse uyarı vermek için ndk-build değiştirildi projenin AndroidManifest.xml metriğinde android:minSdkVersion değerinden daha yüksek.
  • cpu-features yardımcı kitaplığı, ARM'ye özgü daha fazla özellik içerecek şekilde güncellendi. Ayrıntılar için sources/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 ile aynı boyutta olmasına rağmen ayrı bir tür olarak ele alınır.
  • APP_ABI=armeabi-v7a için derleme güncellendi:
    • -march=armv7-a parametresini iletmek için bu derleme türü değiştirildi gönderir. Bu değişiklik, v7'ye özel kitaplıkların ve crt*.o sürümünün veya doğru şekilde bağlamanız gerekir.
    • ndk-build koleksiyonuna şunun yerine -mfpu=vfpv3-d16 eklendi: Önceki sürümlerde kullanılan -mfpu=vfp seçeneği.
Önemli hata düzeltmeleri:
  • make-standalone-toolchain.sh uygulamasının kök ayrıcalıklarıyla çalıştırılmasına neden olan sorun düzeltildi Bu da bazı kullanıcıların bağımsız araç zincirine erişememesine sebep oluyor. (Sorun 35279)
    • NDK sürüm paketindeki tüm dosyalar ve yürütülebilir dosyalar okundu ve herkes için izinleri yürütür.
    • Kopyalandığında libstdc++.a sahipliği/grubu artık korunuyor.
  • Gereksiz \r, Windows'da önceden oluşturulmuş echo.exe programından kaldırıldı. Gereksiz \r, gdb.setup ürününün GNU Hata Ayıklayıcı'da (GDB) başarısız olmasına neden oldu, çünkü yanlışlıkla yolun bir parçası haline gelmiştir. (Sorun 36054)
  • host-mkdir uygulaması. (Sorun 25875)
  • GCC 4.4.3 GNU libstdc++, typeinfo adlarının şu şekilde birleştirilmemiş olması için düzeltildi: varsayılandır. Daha fazla bilgi için bkz. toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo (Sorun 22165)
  • GCC 4.6'da null bağlamındaki sorun düzeltildi cp/mangle.c::write_unscoped_name, bağlam şu olduğunda GCC kilitlenebilir: null ve TREE_CODE içinde referans kaldırıldı.
  • Kayan öğeler için ARM NEON'a özgü tür tanımlarındaki GCC 4.4.3 kilitlenmeleri düzeltildi. (Sorun 34613)
  • STLport dahili _IteWrapper::operator*() uygulaması düzeltildi burada, referansı kaldırılan değeri barındıran eski bir yığın konumu döndürüldü ve çalışma zamanı kilitlenmelerine neden olur. (Sorun 38630)
  • ARM'ye özel düzeltmeler:
    • ARM GCC 4.4.3/4.6 g++, yönetiminin <va_list> GCC 4.4'te değiştirilmiştir. Bu sorunu çözmek için Bu uyarıyı önlemek için -Wno-psabi anahtarı artık gerekli değil.
    • Şurada .arm veya .neon sonekleri olan bir projenin sorunu düzeltildi LOCAL_SRC_FILES ayrıca APP_STL kullandı. APP_STL ile ndk-build komut dosyası, önceki LOCAL_SRC_FILES klasöründe C++ dosyalarını arıyor derlemeye STL header/lib yolları ekleniyor. ndk-build, şu şekilde değiştirildi: aramadan önce .arm ve .neon soneklerini filtreleyin, aksi takdirde öğeler olsun LOCAL_SRC_FILES dilinde (myfile.cpp.arm.neon gibi) C++ olarak derlenmez girin.
    • binutils-2.21/ld.bfd ürününün, eski nesneye bağlantı oluşturabilmesi düzeltildi iddia başarısız olmasına neden olan tag_FP_arch içermeyen binutils hata mesajları hakkında daha fazla bilgi edinin. (Sorun 35209)
    • Aşağıdaki durumlarda Bilinmeyen EABI nesne özelliği 44 uyarısı kaldırıldı binutils-2.19/ld bağlantı daha yeni binutils-2.21 tarafından önceden oluşturulmuş nesne
    • GNU stdc++ derlemesinde hem -mthumb hem de -march=armv7-a, doldurmak için make-standalone-toolchain.sh değerini değiştirerek armv7-a/thumb alt dizininde headers/libs. (Sorun 35616)
    • Çözümlenemeyen R_ARM_THM_CALL yeniden konumu hatası düzeltildi. (Sorun 35342)
    • ARM'nin neden olduğu reload1.c:3633 dahili derleyici hatası düzeltildi arka uç, char öğesinden oturum açma işlemi yaparken yanlış işlenen türü bekliyor. (GCC Sorunu 50099)
    • Negatif kaydırma miktarına sahip dahili derleyici hatası düzeltildi. (GCC Sorunu)
  • X86 için -fstack-protector, aynı zamanda ndk-build x86 ABI hedefi.
  • MIPS'ye özel düzeltmeler:
    • Şu durumda _STLP_LITTLE_ENDIAN 1 olarak ayarlanarak STLport bitiş ayarı düzeltildi MIPS libstlport_* derleniyor.
    • LLVM derlenirken ortaya çıkan GCC __builtin_unreachable sorunu düzeltildi. (GCC Sorunu 54369)
    • %100 CPU tüketen cc1 derleme işlemi için geri bağlantılı düzeltme. (GCC Sorunu 50380)
  • GNU Hata Ayıklayıcı'ya özel düzeltmeler:
    • Derleme sırasında gdb-7.x'te Python desteği devre dışı bırakıldı, aksi takdirde gdb-7.x yapılandırması devre dışı bırakıldı işlevi, ana makinede mevcut olan Python sürümünü alıp gdb. (Sorun 36120)
    • APP_ABI, all içerdiğinde ve hiçbiriyle eşleşmediğinde ndk-gdb sorunu düzeltildi araştıracağım. (Sorun 35392)
    • Görünüyorsa : karakteri saklanarak Windows yol adı desteği düzeltildi örneğin, sürücü harfiyle başlayan bir Windows yolunun parçası olabilir. (GDB Sürümü 12843)
    • gdbserver içinde 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 öğesinin okunmasını sağlayacak düzeltme eklendi. Bu değişiklik solib etkinliğinin işlenmesini hızlandırır. (Sorun 37677)
    • solib ayrılma noktasını bulmaya yönelik tekrarlanan denemeler yapmak için düzeltme eklendi. GDB şimdi svr4_current_sos() için yapılan her aramada şu tarihe kadar enable_break() yeniden dener: ve başarılı olur. (Değişim: 43563)
    • gdb öğesinin yerleştirilen kesme noktalarında durmaması sorunu düzeltildi dlopen-ed kitaplık. (Sorun 34856)
    • Sistemde dlopen() çağrılırken dinamik bağlayıcıdaki SIGILL sorunu düzeltildi Burada /system/bin/linker üzerinde semboller ve rtld_db_dlactivity(), korunmaması nedeniyle Thumb olarak uygulandı LSB / sym_addr. (Sorun 37147)
Diğer hata düzeltmeleri:
  • Düzeltilen NDK başlıkları:
    • Yanlışlıkla kaldırılan arch-mips/include/asm/* kodu düzeltildi çekirdeğine sahip olduğunu varsayalım. ( 43335)
    • __unused kimlikli struct üye verileri şurada __linux_unused ile değiştirildi: Şununla çakışmayı önlemek için linux/sysctl.h ve linux/icmp.h sys/cdefs.h içinde #define __unused.
    • __BEGIN_DECLS vefenv.h __END_DECLS.
    • malloc.h içerisinde, uygulanmamış işlevler kaldırıldı.
    • ANSI derleyicileri için stdint.h uint64_t tanımı düzeltildi. (Sayı 1952)
    • <arch>/include/machine/* içindeki ö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'ye özel makroları taşı: LONG_LONG_MIN, LONG_LONG_MAX ve ULONG_LONG_MAX, <pthread.h>-<limits.h> arası.
  • ndk-stack-parser işlevinde arabellek taşması düzeltildi.
  • Tanımlanmadığında tüm bildirimleri hariç tutmak için _STLP_USE_EXCEPTIONS düzeltildi ve __Named_exception kullanımları. Derleme ve __Named_exception kullanımı ayarları yalnızca STLport ürününün istisnaları kullanmasına izin verildiğinde gerçekleşir.
  • Windows kodu oluşturmadan yalnızca Linux'a yönelik NDK paketlerinin oluşturulması düzeltildi. Şunu kullanın: şu ayarları uygulayın:
    ./build/tools/make-release.sh --force --systems=linux-x86
    .
  • libc.so, atexit() ve __do_handler verilerini dışa aktarmayacak şekilde düzeltildi. Bu simgeler, C kitaplığının sistem sürümü tarafından ARM derlemeleri için dışa aktarılır: otomatik olarak desteklenmelidir. NDK tarafından oluşturulanlar asla doğrudan referans almamalıdır. Bunun yerine, paylaşılan her kitaplık veya yürütülebilir dosya bu sembollerin kendi sürümünü yerleştirmelidir. sağlayan: crtbegin_*.o.

    Projeniz -nostdlib -Wl,--no-undefined seçenekleriyle bağlantılıysa crtbegin_so.o şurada bağlı olmadığından kendi __dso_handle öğenizi sağlamalıdır: bu bilgilerden yararlanabilirsiniz. Aşağıdaki gibi __dso_handle içeriğinin içeriği önemli değildir örnek kod:

    extern "C" {
     
    extern void *__dso_handle __attribute__((__visibility__ ("hidden")));
     
    void *__dso_handle;
    }
  • plt girişlerinde objdump içinde kullanılan ARM için sembol kod çözücü düzeltildi oluşturabilirsiniz function@plt.
  • GCC 4.6 libgcc.a sürümünde kullanıma sunulan aşağıdaki simgeler şuradan kaldırıldı: X86 platformu libc.so kitaplığı: __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1 ve __aeabi_unwind_cpp_pr2.
  • MIPS'lerdeki kullanılmayan .ctors, .dtors ve .eh_frame kaldırıldı crt*_so.S.
  • ndk-gdb, çıkışın yalnızca son satırını alacak şekilde güncellendi DUMP_XXXX ndk-build. Bu değişiklik, Application.mk veya Android.mk, $(info ...) söz dizimiyle bir öğeyi yazdırıyor, almıyor DUMP_XXXX sonucuna yerleştirilir. (Daha fazla bilgi)
Diğer değişiklikler:
  • arch-x86 ve arch-mips üstbilgileri şuradan kaldırıldı: platforms/android-[3,4,5,8]. Bu başlıklar hem X86 hem de MIPS ABI'leri, yalnızca API 9 veya sonraki sürümlerde desteklenir.
  • Aşağıda gösterildiği gibi, basitleştirilmiş c++, 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/
    
  • Varsayılan olarak daha fazla C++ dosya uzantısını tanımak için ndk-build düzeltildi: .cc .cp .cxx .cpp .CPP .c++ .C. LOCAL_CPP_EXTENSION e-posta adresini kullanmaya devam edebilirsiniz. bu uzantı ayarlarının üzerine yazabilirsiniz.
  • samples/san-angeles uygulamasında siyah ekrana veya donmaya neden olan bir sorun düzeltildi kareyi arka planda tutmaya çalışır.
  • NDK örneklerinde desteği sonlandırılmış API'ler değiştirildi. (Sayı 20017)
    • hello-gl2 (android-5 sürümünden android-7 sürümüne)
    • Android-9 sürümünden Android-10'a native-activity
    • Android-9 sürümünden Android-10'a native-audio
    • Android-9 sürümünden Android-10'a native-plasma
  • Bölüme daha basit bir şemayla yürütülebilir Android dosyaları için yeni marka eklendi .note.android.ident (crtbegin_static/dynamic.o dilinde tanımlanmıştır) hata ayıklama araçları buna göre hareket edebilir. Yapı üyesi ve değerler şu şekilde tanımlanır: şöyle olur:
    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ündeki önceki markalama seçenekleri kullanımdan kaldırılmıştır.

  • run-tests.sh verun-tests-all.sh çeşitli koşullarda standalone/run.sh. run-tests.sh komut dosyasını çalıştırır. --abi seçeneği yoktur ve tüm test türleri için testlerin çoğunu derleyecek şekilde geliştirilmiştir. desteklenen ABI'ler ve tüm bağlı cihazlarda çalışır

Bu sürümün temel özellikleri, yeni bir GNU Compiler Collection (GCC) 4.6 araç zinciri ve Android 4.1 (API Düzeyi 16) sistemi için hata ayıklama desteği sağlayan GNU Debugger (GDB) 7.3.x sürümü görüntüsüdür.

Önemli hata düzeltmeleri:
  • Mac OS, Windows Cygwin ortamlarında LOCAL_SHORT_COMMANDS ile ilgili sorunlar giderildi olması gerekir. Liste dosyası daha hızlı oluşturulur ve tekrarlanmaması için yeniden oluşturulmaz tekrar gözden geçireceksiniz.
  • ndk-gdb ürününde birkaç sorun düzeltildi:
    • Araç; -e, -d ve -s işaretlerini daha fazla adb'e iletecek şekilde güncellendi gerekir.
    • Araç, boşluk içeren cihaz seri adlarını kabul edecek şekilde güncellendi.
    • Araç, /system/bin/link bilgilerini almak için güncellendi, dolayısıyla gdb açık düzenleyen, __dl_rtld_db_dlactivity içinde bir ayrılma noktası ayarlayabilir ve bağlayıcı etkinliğinden haberdar olabilir (örneğin, dlopen() çağrıldığında solib simgelerini yeniden tara).
  • Windows'da düzeltilemeyen ndk-build clean sorunu düzeltildi. ./libs/*/lib*.so.
  • make iken ndk-build.cmd değerinin sıfır dışında bir ERRORLEVEL döndürülmesi düzeltildi başarısız olur.
  • __exidx_start velibc.so __exidx_end simgeleri.
  • ARM için __libc_init sonrasında yığın geri alınırken SEGV sorunu düzeltildi ve HATALAR.
Önemli değişiklikler:
  • GCC 4.6 araç zinciri (gold ve GDB 7.3.x ile binutils 2.21) Orijinal GCC 4.4.3 araç zinciriyle birlikte kullanılabilir (binutils 2.19 ve GDB 6.6).
    • GCC 4.6 artık varsayılan araç zinciridir. Orijinali seçmek için Application.mk içinde NDK_TOOLCHAIN_VERSION=4.4.3 değerini ayarlayabilirsiniz.
    • gold bağlayıcı desteği, yalnızca ARM ve x86 için kullanılabilir mimarilerinde çalışmaya devam eder. Bu destek varsayılan olarak devre dışıdır. Etkinleştirmek için Android.mk hesabına LOCAL_LDLIBS += -fuse-ld=gold ekleyin.
    • -fPIE ile derlenen programlar, hata ayıklama için yeni GDB gerektirir. .
    • binutils 2.21 ld aracı, sürüm 2.22:
      • Hatalı bir şekilde zombi referanslarını saklayan ld --gc-sections düzeltildi kullanabilirsiniz. (Daha fazla bilgisi) bulabilirsiniz.
      • Orijinal p_align vestrip Geçerliyse GNU_RELRO bölümündeki p_flags. Bu çözüm olmazsa programlar -fPIE ile oluşturulan derlemelerde hata ayıklama işlemi yapılamadı. (mor e bilgileri)
    • Eski sürümlerle uyumluluk için sincos() optimizasyonu devre dışı bırakıldı platformlar.
  • Derleme seçenekleri, Never eXecute (NX) bit ve relro/bind_now korumalarını varsayılan olarak etkinleştirecek şekilde güncellendi:
    • --noexecstack derleyiciye, -z noexecstack ise bağlayıcıya eklendi Yığında NX bitini etkinleştirerek ve arabellek taşması saldırılarına karşı NX koruması sağlayan kullanır.
    • Dahili verileri sağlamlaştırmak için bağlayıcıya -z relro ve -z now eklendi bağlantı oluşturulduktan sonra, bellek bozulmasından kaynaklanan güvenlik açıklarına karşı koruma sağlar. (daha fazla bilgi: 1, 2)
    • Bu özellikler, aşağıdaki seçenekler kullanılarak devre dışı bırakılabilir:
      1. Şu öğe için --execstack seçeneğini ayarlayarak NX korumasını devre dışı bırakın: assembler ve bağlayıcı için -z execstack.
      2. -z norelro ve Bağlayıcı için -z lazy seçenek.
      3. jni/Android.mk adlı NDK'da bu korumaları devre dışı bırakmak için şu seçeneklere sahiptir:
        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 sayfasını inceleyin.

  • .note.ABI-tag bölümü ile yürütülebilir Android dosyaları için marka bilinci oluşturma özelliği eklendi crtbegin_static/dynamic.o) çalışır. Böylece hata ayıklama araçları buna göre davranabilir. Yapı üye ve değerler şu ş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 */
    }
    .
Diğer hata düzeltmeleri:
  • mips-linux-gnu yerinin değiştirilmesi, R_MIPS_TLS_LDM sorununa uyacak şekilde kısaltıldı. (daha fazla bilgi)
  • --gc-sections kullanılırken ld araç hatası düzeltildi. (daha fazla bilgi)
  • MIPS GOT_PAGE sayma sorunu düzeltildi. (daha fazla bilgi)
  • mips_elf_count_got_symbols için sabit takip uyarısı sembolü bağlantısı.
  • mips_elf_allocate_lazy_stub için sabit takip uyarısı sembolü bağlantısı.
  • MIPS .dynamic, yazılabilir olması için veri segmentine taşındı.
  • MIPS için sembollerin sabit kodlu değerleri doğru segment boyutlarına sahip olarak değiştirildi.
  • -mno-shared seçeneği, MIPS araç zincirindeki varsayılanlardan kaldırıldı. Android araç zinciri için varsayılan değer -fPIC şeklindedir (veya destekleniyorsa -fpic). Google Takvim'i -mshared, -fpic, -fPIC, -fpie veya -fPIE değerlerini açıkça belirtmelidir MIPS derleyici, PIC'yi kapatan -mno-shared ekler. Eklenmeyecek derleyici düzeltildi Bu durumda -mno-shared.
  • hello-jni ve two-libs örneklerindeki yanlış paket adları düzeltildi. altındaki tests projesi derlenebilir.
Diğer Değişiklikler:
  • İkili dosyaların yeri değiştirildi:
    • gdbserver, şuradan taşındı: toolchain/<arch-os-ver>/prebuilt/gdbserver - prebuilt/android-<arch>/gdbserver/gdbserver.
    • i686-android-linux- olan x86 araç zinciri öneki şu şekilde yeniden adlandırıldı: i686-linux-android-.
    • sources/cxx-stl/gnu-libstdc++/include ve lib, şuraya taşındı: sources/cxx-stl/gnu-libstdc++/4.6 GCC 4.6 ile derlendiğinde veya sources/cxx-stl/gnu-libstdc++/4.4.3, GCC 4.4.3 ile derlendiğinde.
    • libbfd.a ve libintl.a, lib/ kuruluş biriminden lib32/ kuruluş birimine taşındı.
  • NDK'yı yeniden oluşturma ve test etme araç zincirine çeşitli komut dosyaları eklendi ve iyileştirildi:
    • Linux tarafından barındırılan yeni bir araç zinciri oluşturmak için build-mingw64-toolchain.sh eklendi Win32 ve Win64 yürütülebilir dosyaları oluşturur.
    • clone komutu kullanılarak ve NDK'yı oluşturmak için gereken dizinler için yalnızca checkout kullanılarak download-toolchain-sources.sh hızı artırıldı araç zinciri ikili programları.
    • build-host-gcc.sh ve build-host-gdb.sh komut dosyaları eklendi.
    • Belirli bir NDK'nın içeriğini kontrol etmek için tests/check-release.sh eklendi veya mevcut bir NDK paketinde yüklü olması gerekir.
    • tests/standalone/run.sh bağımsız testi yeniden yazıldı .
  • if_dl.h başlığı tüm platformlardan ve mimarilerden kaldırıldı. Açıkladığı AF_LINK ve sockaddr_dl öğeleri BSD'ye özgüdür (ör. mevcut değiller) ) tıklayın.

NDK'nın bu sürümü, MIPS ABI için destek ve birkaç ek düzeltme içerir.

Yeni özellikler:
  • Aşağıdaki cihazlarda çalışan makine kodu oluşturmanıza olanak tanıyan, MIPS ABI için destek eklendi: uyumlu MIPS tabanlı Android cihazlar. MIPS'nin önemli özellikleri arasında MIPS'ye özgü özellikler yer alır. araç zincirleri, sistem başlıkları, kitaplıklar ve hata ayıklama desteği. Şununla ilgili daha fazla bilgi: MIPS desteği, NDK paketindeki docs/CPU-MIPS.html öğesine bakın.

    Kod, varsayılan olarak ARM tabanlı cihazlar için oluşturulur. mips adlı kişiyi şu albüme ekleyebilirsiniz: Application.mk dosyanızdaki APP_ABI tanımınızı yaygın proje yöneticisiyim. Örneğin, aşağıdaki satırda ndk-build talimatı kullanarak üç farklı ABI için kodunuzu derleyin:

    APP_ABI := armeabi armeabi-v7a mips

    ARM derlemesi gibi mimariye özgü derleme kaynaklarına kullanmıyorsanız kullanıyorsanız, MIPS oluşturmak için Android.mk dosyalarınıza dokunmanız gerekmez makine kodundan farklıdır.

  • --arch=mips kullanarak bağımsız bir MIPS araç zinciri oluşturabilirsiniz. make-standalone-toolchain.sh aranıyor. Görüntüleyin Ayrıntılı bilgi için docs/STANDALONE-TOOLCHAIN.html.

Not: Uygulamalarınızın kullanılabilir olduğundan emin olmak için cihazlarında çalıştırabilen kullanıcılara göre, Google Play, uygulamaları temel alarak ? herhangi bir işlem yapmanız gerekmez tıklayın. Ayrıca Android sisteminin kendisi uygulamanızı şu adresten de kontrol eder: yükleme süresini artırır ve yüklemenin, yalnızca uygulama tarafından sağlanan bir kitaplık sağladığı durumlarda devam etmesine cihazın CPU mimarisi için derlenmiştir.

Önemli hata düzeltmeleri:
  • GAbi++ uygulamasında, b temel sınıf nesnesinin dynamic_cast<D>(b) sonucunun türetilmiş D sınıfına değiştirildiği bir yazım hatası düzeltildi yanlış bir şekilde temel sınıfın tersi yönde ayarlanmış olmalıdır. (Sorun 28721)
  • make-standalone-toolchain.sh ürününün kopyalanamamasına neden olan sorun düzeltildi libsupc++.*.
Diğer hata düzeltmeleri:
  • ndk-build.cmd düzgün şekilde çalışmaya devam etmesi için ndk-build.cmd düzeltildi kullanıcı, SHELL ortam değişkenini yeniden tanımladıysa (değişebilir) çeşitli geliştirme araçlarını yüklemenizi sağlar.

NDK'nın bu sürümü, Tegra2 tabanlı cihazlar için önemli bir düzeltme ve birkaç ek düzeltmeler ve iyileştirmeler:

Önemli hata düzeltmeleri:
  • GNU STL armeabi-v7a ikili programlarının NEON olmayan cihazlarda kilitlenmemesi düzeltildi cihazlar. NDK r7b ile sağlanan dosyalar doğru yapılandırılmamış. kullanmaya çalışırken Tegra2 tabanlı cihazlarda ve diğer cihazlarda kilitlenmelere neden oluyor belirli kayan nokta işlevlerini (ör. cosf, sinf, expf).
Önemli değişiklikler:
  • NDK_OUT aracılığıyla özel çıkış dizinleri için destek eklendi ortam değişkeni Bu değişken tanımlandığında, bu değişken tüm $PROJECT_PATH/obj yerine ara oluşturulan dosyalar. Değişken ndk-gdb tarafından da tanındı.
  • Yüzlerce, hatta binlerce kaynak barındıran modül derleme desteği eklendi Android.mk içinde LOCAL_SHORT_COMMANDS - true tanımlayarak bu işlemi yapabilirsiniz.

    Bu değişiklik, NDK derleme sistemini çoğu bağlayıcı veya arşivleyici seçeneğini yerleştirmeye zorlar. liste dosyalarına koyabilirsiniz. Ayrıntılar için docs/ANDROID-MK.html sayfasını ziyaret edin.

Diğer hata düzeltmeleri:
  • cpufeatures içindeki android_getCpuCount() uygulaması düzeltildi yardımcı olur. Çekirdeklerin sistem tarafından dinamik bir şekilde etkinleştirildiği belirli cihazlarda, uygulanırken, işlev ilk kez çalıştırıldığında etkin çekirdeklerin toplam sayısını fiziksel olarak mevcut çekirdeklerin toplam sayısı yerine çağrıldı.

NDK'nın bu sürümü yerel Windows derlemeleri, Cygwin ve daha pek çok uygulama için düzeltmeler içerir iyileştirmeler:

Önemli hata düzeltmeleri:
  • Doğrulukla ilgili sorunlardan kaçınmak için sys/atomics.h güncellendi kullanılan gelişmiş dönüşüm izleme oranlarına sahiptir. Değiştirilmemiş kaynaklarınızı bununla yeniden oluşturun ve bu sorunun tamamen ortadan kaldırılması gerekir. Daha fazla bilgi için docs/ANDROID-ATOMICS.html inceleyin.
  • Aşağıdaki hata ayıklama sorunlarını düzeltmek için binutils 2.19 sürümüne geri döndürüldü Bu da NDK r7'de göründü (binutils 2.20.1'e geçti).
  • 32 bit Linux'ta ndk-build sorunu düzeltildi. Paketleme hatası nedeniyle 64 bit sürümü yükleyin NDK r7'deki prebuilt/linux-x86/bin altındaki awk yürütülebilir dosyanın.
  • Yerel Windows derlemesi düzeltildi (ndk-build.cmd). Diğer derleme modları şu şekilde değil: yardımcı olabilir. Düzeltmeler şunları içerir:
    • Deneme sırasında oluşan sonsuz döngü / yığın taşması hatası kaldırıldı için olmayan bir dizinden ndk-build.cmd işlevini çağırmak (ör. proje yolunun herhangi bir alt dizininde yer alır).
    • Otomatik olarak oluşturulan bağımlılık dosyalarının yoksayılmasına neden olan bir sorun düzeltildi. Bu bir başlığın güncellenmesinin, kodu içeren kaynakların yeniden derlenmesini tetiklemediği somut olarak ortaya koyar.
    • Dosyalarda veya yollarda boşluk ve doğru işlenmemiş olabilir.
  • Kullanıldığında uygun ikili programları oluşturmak için bağımsız araç zinciri düzeltildi -lstdc++ (ör. GNU libstdc++ C++ çalışma zamanına bağlantı oluşturma). Siz paylaşılan kitaplığa karşı bağlantı oluşturmak istiyorsanız -lgnustl_shared kullanmalısınız sürümünü veya statik sürüm için -lstdc++ değerini gönderin.

    Bu düzeltmeyle ilgili daha fazla bilgi için docs/STANDALONE-TOOLCHAIN.html adresini ziyaret edin.

  • Cygwin'de gnustl_shared düzeltildi. Bağlayıcı, URL'yi bulamadığından şikayet etti libsupc++.a ancak dosya doğru konumdaydı.
  • Belirli bir C++ çalışma zamanı kullanılmadığında Cygwin C++ bağlantısı düzeltildi APP_STL
Diğer değişiklikler:
  • Uygulamanız GNU libstdc++ çalışma zamanını kullandığında derleyici artık zorunlu olarak etkinleştirmemeye ve etkinleştirmeye izin vermeyecekler. Bu değişiklik nedeniyle daha küçük kod elde edilir.

    Bu özelliklere ihtiyacınız varsa aşağıdakilerden birini yapmanız gerekir:

    • İstisnaları ve/veya RTTI'yı modüllerinizde açıkça etkinleştirin ya da Application.mk (önerilen)
    • APP_GNUSTL_FORCE_CPP_FEATURES - 'exceptions' tanımlansın, Application.mk içinde 'rtti' veya her ikisi. Görüntüleyin Ayrıntılı bilgi için docs/APPLICATION-MK.html.
  • ndk-gdb artık uygulamanızda özel hizmetler varken düzgün çalışıyor ne olduğunu öğreneceğiz. ps tarafından listelenen ilk işlem, genellikle bir hizmet işlemidir.
  • NDK r7'nin, LOCAL_ARM_MODE değerini dikkate almamasına neden olan nadir bir hata düzeltildi ve her zaman belirli kaynak dosyaları (hepsini değil) 32 bit talimatlarında derleyin.
  • STLport: Kaynakları, Android platform sürümüyle eşleşecek şekilde yenileyin. Bu güncelleme ile birkaç küçük hata düzeltildi:
    • Eksik türün örneklendirmesi düzeltildi
    • Sabit küçük "==" ile "=" karşılaştırması yazım hatası
    • string::assign içinde memcpy yerine memmove kullanıldı
    • IsNANorINF, IsINF, IsNegNAN ve daha iyi kullanım özellikleri eklendi vb.

    Tüm ayrıntılar için kayıt günlüğüne bakın.

  • STLport: Gereksiz 5 statik başlatıcı, kitaplıktan kaldırıldı.
  • armeabi-v7a için GNU libstdc++ kitaplıkları yanlışlıkla armeabi'yi kullanıyor. Bu değişikliğin doğruluk üzerinde etkisi olmadı, ancak doğru ABI biraz daha iyi performans sağlar.
  • cpu-features yardımcı kitaplığı, isteğe bağlı üç öğeyi raporlayacak şekilde güncellendi x86 CPU özellikleri (SSSE3, MOVBE ve POPCNT). Görüntüleyin Ayrıntılı bilgi için docs/CPU-FEATURES.html.
  • docs/NDK-BUILD.html, bunun yerine NDK_APPLICATION_MK adını içerecek şekilde güncellendi Özel bir Application.mk dosyası seçmek için NDK_APP_APPLICATION_MK arasından seçim yapın.
  • Cygwin: ndk-build artık boş bir "NUL" oluşturmuyor dosyası dizin.
  • Cygwin: Daha iyi otomatik bağımlılık algılama özelliği eklendi. Önceki sürümde, aşağıdaki durumlarda düzgün çalışmadı:
    • Cygwin sürücü öneki /cygdrive olmadığında.
    • Sürücüsüz montaj düzenekleri kullanılırken (ör. Cygwin C:\Some\Dir yerine /home ile \\server\subdir.
  • Cygwin: ndk-build, şunun altında yerel Windows araçlarını kullanmaya çalışmıyor: Belirli Cygwin ve/veya GNU Make sürümleriyle $NDK/prebuilt/windows/bin.

NDK'nın bu sürümü, Android 4.0 platformunu da destekleyen yeni özellikler içerir. pek çok ekleme ve iyileştirme yaptık:

Yeni özellikler
  • Aşağıdakileri ekleyen Android 4.0 (API düzeyi 14) için resmi NDK API'leri eklendi. yerel özellikler:
    • Khronos Grubu OpenMAX AL 1.0.1 tabanlı yerel multimedya API'sı eklendi standart. Yeni <OMXAL/OpenMAXAL.h> ve <OMXAL/OpenMAXAL_Android.h> üstbilgileri, uygulama hedeflemeye izin verir Yeni bir kod kullanarak multimedya çıkışını doğrudan yerel koddan gerçekleştirmesini sağlayan API düzeyi 14 Android'e özgü arabellek sırası arayüzü. Daha fazla bilgi için bkz. docs/openmaxal/index.html ve http://www.khronos.org/openmax/.
    • Khronos Grubu OpenSL ES 1.0.1'e dayalı olarak yerel ses API'si güncellendi standart. API Level 14 ile artık sıkıştırılmış sesin (ör. MP3, AAC, Vorbis'ten PCM'ye). Daha fazla bilgi için docs/opensles/index.html ve http://www.khronos.org/opensles/
  • CCache desteği eklendi. Büyük yeniden oluşturma işlemlerini hızlandırmak için NDK_CCACHE ortam değişkenini ccache (veya ccache ikili dosyanız). NDK derleme sistemi bildirildiğinde otomatik olarak kaynak dosyayı derlerken CCache kullanır. Örnek:
    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 için bkz. http://ccache.samba.org adresine gidin.

  • Şunları belirtmek için APP_ABI özelliğinin all olarak ayarlanması için destek eklendi belirttiğiniz NDK tarafından desteklenen tüm ABI'ler için NDK modüllerinizi oluşturmak istiyorsanız kullanabilirsiniz. Bu, Application.mk bu sürümle eşdeğerdir:
    APP_ABI := all
    APP_ABI := armeabi armeabi-v7a x86
    

    Bu, çağrı yaparken APP_ABI tanımlarsanız da geçerli olur komut satırından ndk-build kullanabilirsiniz. Bu, desteklenen tüm ABI'ler için proje derlemelerini Application.mk file. Örnek:

    ndk-build APP_ABI=all
    
  • Android.mk içine şu değere sahip bir LOCAL_CPP_FEATURES değişkeni eklendi: ile birlikte, modülünüzün hangi C++ özelliklerini (RTTI veya İstisnalar) kullandığını belirtebilirsiniz. Bu Size bağlı olan önceden oluşturulmuş modülleriniz varsa son bağlantının doğru şekilde çalışmasını sağlar. göz atabilirsiniz. Bkz. docs/ANDROID-MK.html ve Ayrıntılı bilgi için docs/CPLUSPLUS-SUPPORT.html.
  • Derleme komutlarında kullanılan kaynak ve nesne dosyalarının yolları kısaltıldı. Zaman kaynak yollarından $NDK/ndk-build çağırarak bir örneğidir. Derleme komutlarına aktarılan ikili program dosyaları, daha kısa olabilir. Çünkü bunlar mevcut dizine göre iletilmektedir. Faydalı kaynak dosya içeren projeler oluştururken, maksimum veri miktarı sınırlamalarını önlemek için ana makine işletim sisteminiz tarafından desteklenen komut satırı uzunluğu. Davranış değişmiyor ndk-build yöntemini proje ağacınızın bir alt dizininden çağırırsanız belirli bir dizine işaret etmek için NDK_PROJECT_PATH tanımlarsınız.
Deneysel özellikler
. Artık NDK kaynak dosyalarınızı Windows'da Cygwin olmadan oluşturmak için ndk-build.cmd komut dosyasını proje yolunuzdan komut satırından kaldırın. İlgili içeriği oluşturmak için kullanılan komut dosyası, orijinal ndk-build komut dosyasıyla tamamen aynı bağımsız değişkenleri alır. Windows NDK paketi; GNU Make, Awk ve diğerleri için önceden oluşturulmuş ikili programlarla birlikte gelir araçları dahil etmektir. Başlamak için başka bir uygulama yüklemenize gerek yoktur. çalışan bir derleme sistemidir.

Önemli: ndk-gdb şu cihazlarda çalışmaz: olduğundan hata ayıklamak için yine de Cygwin'e ihtiyacınız vardır.

Bu özellik hâlâ deneme aşamasında olduğu için denemeyi ve sorunlarınızı herkese açık hata veritabanı veya herkese açık forum. Tüm örnekler ve birim testleri NDK ile gönderilir ve bu özellikle derleme işlemi başarıyla tamamlanır.

Önemli hata düzeltmeleri
  • İçe aktarılan paylaşılan kitaplıklar artık varsayılan olarak hedef yüklemeye yükleniyor APP_MODULES şurada tanımlanmamışsa konum (libs/<abi>) Application.mk cihazınız. Örneğin, üst düzey bir modül foo bar modülünü, ardından hem libfoo.so hem de libbar.so, yükleme konumuna kopyalanır. Daha önce yalnızca libfoo.sobar APP_MODULES için de geçerlidir. APP_MODULES öğesini açıkça tanımlarsanız değişmeden kalır.
  • ndk-gdb artık birden fazla kategoriye sahip etkinliklerde doğru şekilde çalışıyor ANA intent filtreleri.
  • Statik kitaplık içe aktarma işlemleri artık düzgün şekilde geçiş yapıyor. Örneğin, bir üst düzey foo modülü, statik öğeyi içe aktaran bar adlı statik kitaplığı içe aktarır zoo kitaplığı için libfoo.so artık bu iki libbar.a ve libzoo.a.
Diğer değişiklikler
  • docs/NATIVE-ACTIVITY.HTML: Yazım hatası düzeltildi. Minimum API düzeyi şu olmalıdır: Yerel etkinlikler için 8 değil, 9.
  • docs/STABLE-APIS.html: Eksik dokümanların bulunduğu EGL ve API düzeyi 9'dan itibaren desteklenen kararlı API.
  • download-toolchain-sources.sh: Araç zincirini indirmek için güncellendi android.googlesource.com adresindeki kaynaklar, Bu, AOSP sunucularının yeni konumudur.
  • gabi++ adlı yeni bir C++ destek çalışma zamanı eklendi. Bununla ilgili daha fazla bilgi docs/CPLUSPLUS-SUPPORT.html üzerinden erişilebilir.
  • Buna karşılık gelen gnustl_shared adında yeni bir C++ destek çalışma zamanı eklendi GNU libstdc++ v3'ün (GPLv3 lisansı) paylaşılan kitaplık sürümüne. Daha fazla bilgi için: docs/CPLUSPLUS-SUPPORT.html.
  • STLport C++ çalışma zamanlarına RTTI desteği eklendi ( istisnalar) olur.
  • LOCAL_CPP_EXTENSION hizmetine birden çok dosya uzantısı desteği eklendi. Örneğin, örneğin, foo.cpp ve bar.cxx'ı C++ kaynakları olarak derlemek için aşağıdakileri beyan etmelidir:
    LOCAL_CPP_EXTENSION := .cpp .cxx
    
  • Bağlantı zamanı paylaşılan sistem kitaplıklarındaki istenmeyen dışa aktarılan birçok simge kaldırıldı NDK tarafından sağlanmıştır. Böylece, bağımsız araç zinciriyle oluşturulan kod, yanlışlıkla sabit olmayan bir ABI sembolüne (örneğin, herhangi bir libgcc.a platformu oluşturmak için kullanılan araç zinciri her değiştirildiğinde değişen sembolüyle gösterilir)
  • EGL ve OpenGLES Khronos başlıkları, daha fazla uzantıyı desteklemek için yenilendi. Not Bu işlem, ilgili kitaplıklar için NDK ABI'lerini değiştirmez, çünkü her uzantının çalışma zamanında istemci uygulama tarafından incelenmesi gerekir.

    Kullanabileceğiniz uzantılar, gerçek cihaz ve GPU sürücülerinize bağlıdır. cihazın çalıştığı platform sürümü değil. Başlık değişiklikleri, yeni sabitler ve türler ile çalışır. eglGetProcAddress() veya glGetProcAddress() ile test edildi. İlgili içeriği oluşturmak için kullanılan 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
    EGL
    • EGL_ANDROID_recordable
    • EGL_NV_system_time

NDK'nın bu sürümünde r6'ya kıyasla herhangi bir yeni özellik yoktur. r6b sürümü r6 sürümünde aşağıdaki sorunları giderir:

Önemli hata düzeltmeleri
  • APP_ABI="armeabi x86" kullanıldığında derleme düzeltildi geliştirmenizi sağlar.
  • NDK sürüm paketindeki önceden oluşturulmuş STLport ikili programlarının konumu düzeltildi. Paketleme komut dosyasındaki bir hata, dosyaları yanlış konuma yerleştirdi.
  • x86dependentone ile paylaşılan kitaplıklarda atexit() kullanımı düzeltildi kullanabilirsiniz.
  • make-standalone-toolchain.sh --arch=x86 düzeltildi. Önceden başarısız oluyordu doğru GNU libstdc++ ikili programlarını doğru konuma kopyalamak için.
  • Tanımın eksik olmasıyla ilgili bağımsız araç zinciri bağlayıcı uyarıları düzeltildi ve __dso_handle simgesi için boyut (yalnızca RM).
  • x86 derlemeleri için $(SYSROOT)/usr/include dahil etme sırası düzeltildi. Şu sorun için hata'ya bakın: daha fazla bilgi edinin.
  • Şu dildeki ptrdiff_t ve size_t tanımları düzeltildi: x86'ya özgü sistemlere izin verir.

NDK'nın bu sürümü, x86 ABI için destek ve diğer küçük değişiklikleri içerir. Bu sürümdeki değişiklikleri açıklayan ayrıntılı bilgi için NDK paketinde CHANGES.HTML belge mevcut.

Genel notlar:
  • Makine kodu oluşturmanıza olanak tanıyan x86 ABI için destek ekler Android cihazlarda çalışan bir tarayıcı kullanın. x86'nın önemli özellikleri x86'ya özgü araç zincirlerini, sistem başlıklarını, kitaplıkları ve hata ayıklama desteği. x86 desteğiyle ilgili tüm ayrıntılar için NDK paketinde docs/CPU-X86.html öğesini inceleyin.

    Varsayılan olarak kod, ARM tabanlı cihazlar için oluşturulur, ancak Derlemek için Application.mk dosyanızda APP_ABI tanım yeni bir kod var. Örneğin, aşağıdaki satırda ndk-build talimatı kullanarak üç farklı ABI için kodunuzu derleyin:

    APP_ABI := armeabi armeabi-v7a x86

    ARM tabanlı derleme kaynaklarına kullanmıyorsanız Android.mk dosyalarınızı ekleyerek x86 makine kodu oluşturun.

  • Aşağıdaki kodu kullanarak bağımsız bir x86 araç zinciri oluşturabilirsiniz: --toolchain=x86-4.4.3. make-standalone-toolchain.sh aranıyor. Görüntüleyin Ayrıntılı bilgi için docs/STANDALONE-TOOLCHAIN.html.
  • Yeni ndk-stack aracı, yığın izlemeleri (stack trace) Yerel kod tarafından oluşturulan logcat. Bu araç, okunabilir bir biçime dönüştürür. her yığın karesine karşılık gelen fonksiyon, kaynak dosya ve satır numarası şeklinde görünür. Daha fazla bilgi ve kullanım örneği için docs/NDK-STACK.html bölümüne bakın.
Diğer değişiklikler:
NDK r5'ten itibaren desteği sonlandırılan arm-eabi-4.4.0 NDK dağıtımından çıkarılır.

NDK'nın bu sürümünde r5b ile karşılaştırıldığında yeni özellikler bulunmuyor. r5c sürümü r5b sürümünde aşağıdaki sorunları giderir:

Önemli hata düzeltmeleri:
  • ndk-build: Paralel yapmaya çalışırken ortaya çıkan nadir görülen bir hata düzeltildi derlemelerini geliştirmeye yardımcı olur.
  • LOCAL_WHOLE_STATIC_LIBRARIES uygulamasının çalışmasını engelleyen bir yazım hatası düzeltildi ve buna ilişkin dokümanlar da eklenebilir. Bu nedenle, docs/ANDROID-MK.html.
  • gnustl_static ile bağlantılı olan kodun şu cihazda çalıştırıldığında kilitlenmesine neden olan hata düzeltildi: API düzeyi 8'den (Android 2.2) daha eski platform sürümlerine sahip olan siteler.
  • ndk-gdb: Hata ayıklama sırasında segmentasyon hatasına neden olan bir hata düzeltildi Android 3.0 veya daha yeni cihazlar olabilir.
  • <android/input.h>: API düzeyinde kullanıma sunulan iki işlev 9 (Android 2.3) hatalıydı ve düzeltildi. Bu durum kaynak API'yi kesintiye uğratsa da sisteme ait ikili arayüz değişmemiştir. Yanlış işlevlerde bir eksik history_index parametresi ile birlikte doğru tanımlar aşağıda gösterilmiştir:
    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ı, şurada doğru şekilde gösterilecek şekilde güncellendi: bu API düzeyinde eklenen yeni işlevler (örneğin, pthread_rwlock_init) bilgileri gösterilir.
Küçük iyileştirmeler ve düzeltmeler:
  • Nesne dosyaları artık her zaman göründükleri sırayla birbirine bağlanıyor LOCAL_SRC_FILES Bu durum daha önce yaşanmıyordu. Çünkü dosyalar kaynak uzantılara göre gruplandırılır.
  • import-module başarısız olduğunda, Google Etiket Yöneticisi tarafından oluşturulmuş arandı. Bu, NDK_MODULE_PATH tanımının doğrulanıp doğrulanmadığını doğru olduğundan emin olun.
  • import-module başarılı olduğunda, modülünde bulundu (NDK_LOG=1 ile görünür).
  • Çok fazla sayıda hata ayıklanabilir uygulamaların derleme hızı artırıldı dizinleri de dahil edebilirsiniz.
  • ndk-gdb: adb shell hatalarını daha iyi tespit edip iyileştirme mesajlarının kilidini açar.
  • <pthread.h>: Şu tanımın tanımı düzeltildi: API düzeyi 9 (Android 2.3) ve sonraki sürümler için PTHREAD_RWLOCK_INITIALIZER.
  • Bir modülün kendini içe aktarmasına neden olan sorun giderildi ve bunun sonucunda GNU Markası.
  • LOCAL_ARM_NEON değeri şuna ayarlanırsa derlemenin başarısız olmasına neden olan hata düzeltildi: true (build/core/build-binary.mk dilinde yazım hatası).
  • .s derleme dosyasının derlenmesini engelleyen bir hata düzeltildi (.S dosya sorunsuzdu).

NDK'nın bu sürümünde r5'e kıyasla herhangi bir yeni özellik yoktur. r5b sürümü şuna hitap eder: r5 sürümünde aşağıdaki sorunlar var:

  • r5 ikili programları glibc 2.11'i gerektirdi, ancak r5b ikili programları özel glibc 2.7 veya sonraki sürümleri hedefleyen bir araç zinciri oluşturun. Linux araç zinciri ikili programları artık Ubuntu 8.04 veya sonraki sürümler.
  • arm-linux-androideabi-4.4.3 araç zincirindeki derleyici hatasını düzeltir. Önceki ikili, aşağıdaki durumlarda geçersiz baş parmak talimatı sıraları oluşturdu: bazı hatalar vardır.
  • Proje için eksik olan dokümanları ekler "gnustl_statik" değeri (APP_STL için) ve benzer, GNU libstdc++ statik kitaplık sürümü.
  • Şu ndk-build sorunları düzeltildi:
    • Bir hata oluştuğunda tutarsız bağımlılık dosyaları Windows'da derleme hatası oluştu. Bu, hata kaynak kodunda düzeltildi.
    • Cygwin'e özgü bir hata, veya proje yolunun kullanıcıları Geçersiz bağımlılık dosyalarının oluşumu. Bu strateji sayesinde artımlı imkansızdır.
    • CPUfeatures kitaplığının düzgün çalışmasını engelleyen bir yazım hatası yeni NDK araç zincirini kullanmaya başladım.
    • Cygwin'deki derlemeler, cygpath -m çağrılarına gerek kalmadığı için daha hızlıdır ve bu da sorunlara neden olan her kaynak veya nesne dosyası için büyük kaynak ağaçları bulunur. Bu yöntem düzgün olmazsa, NDK_USE_CYGPATH=1 cygpath -m tekrar kullanmak için.
    • Cygwin yüklemesi artık kullanıcıyı bozan geçersiz yükleme yollarını boşluk içermelidir. Önceden, geçersiz bir yol bir hata mesajı döndürecektir. Bu hata, GNU Make'nin yanlış bir sürümüyle ilgili yüklendi.
  • NDK_MODULE_PATH ortam değişkeninin düzgün şekilde çalışması için iki nokta ile ayrılmış birden fazla dizin içeriyordu.
  • prebuilt-common.sh komut dosyası, derleyiciyi 64 bit için kontrol etmeye yönelik düzeltmeler içerir ana makine etiketine güvenmek yerine, 32 bit araç zincirinin Snow Leopard'da düzgün bir şekilde yeniden oluşturulmasını sağlar. Araç zinciri yeniden oluşturma komut dosyaları artık destekleniyor bir ana makine araç zinciri kullandığınızı unutmayın.
  • INET_ADDRSTRLEN için eksik beyan eklendi <netinet/in.h>.
  • IN6_IS_ADDR_MC_NODELOCAL ve IN6_IS_ADDR_MC_GLOBAL, <netinet/in6.h> adlı çalışma alanına eklendi.
  • "asm" , '__asm__' ile değiştirildi <asm/byteorder.h> içinde izin vermek için -std=c99 ile derleme.

NDK'nın bu sürümü birçok yeni API içerir. Bunların çoğu kullanımı kolay oyun ve benzeri uygulamaların ve olacaktır. Geliştiriciler API'leri kullanarak etkinliklere, sese, grafik ve pencere yönetimi, öğeler ve depolama alanı. Geliştiriciler ayrıca Yeni NativeActivity sınıf. Değişiklikleri açıklayan ayrıntılı bilgi için bu indirdiyseniz, indirilen NDK'da bulunan CHANGES.HTML dokümanını okuyun paketinden yararlanın.

Genel notlar:
  • Yerel etkinlikler için destek ekler. Böylece, Yerel kodda Android uygulama yaşam döngüsü.
  • 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 durumları beklemek için etkinlik döngüsü API'leri.
    • Pencere ve yüzey alt sistemi
    • Oynatma ve kaydı destekleyen OpenSL ES standardına dayalı ses API'leri ses efektleri ve ses efektleri üzerinde kontrol
    • Bir .apk dosyasında paketlenen öğelere erişim.
  • Daha iyi kod üreten yeni bir araç zinciri (GCC 4.4.3'e dayalı) içerir ve şimdi de derlemek isteyenler için bağımsız bir çapraz derleyici olarak kullanılabilir ./configure && make Görüntüleyin docs/STANDALONE-TOOLCHAIN.html adresini ziyaret edin. GCC 4.4.0'ın ikili programları hâlâ güncel değil sağlanan ancak 4.2.1 ikili programları kaldırıldı.
  • Önceden oluşturulmuş statik ve paylaşılan kitaplıklar (docs/PREBUILTS.html) için destek ekler ve modül üçüncü taraf modüllerin paylaşılmasını ve yeniden kullanılmasını çok daha kolay hale getirmek için dışa ve içe aktarma (docs/IMPORT-MODULE.html bunun nedenini açıklar).
  • Yardımcı modül olarak varsayılan bir C++ STL uygulaması (STLport tabanlı) sağlar. Google iki seçenekten biri statik veya paylaşılan bir kitaplık olarak (ayrıntılar ve kullanım örnekleri kaynaklar/android/stlport/BENİOKU) kaldırın. Önceden oluşturulmuş STLport (statik veya paylaşılan) ve GNU libstdc++ (yalnızca statik) için ikili programlar da belirli bir süre için yerine bu kitaplıklarda derlemesini sağlar. Varsayılan STL uygulamasında C++ İstisnaları ve RTTI desteklenmez. Daha fazla bkz. docs/CPLUSPLUS-SUPPORT.HTML.
  • cpufeatures yardımcı kitaplığında yapılan ve şunları iyileştiren iyileştirmeler içerir raporlama (Bazı cihazlar daha önce ARMv7 CPU'yu raporluyor ve bu sırada cihaz gerçekten ARMv6) içerir. Biz uygulamalarını yeniden oluşturmak için bu kitaplığı kullanan geliştiricilere, daha sonra bu iyileştirmelerden faydalanmak için Google Play'e yükleme yapabilirsiniz.
  • OpenGL ES dokularını oluşturup yönetmenize olanak tanıyan bir EGL kitaplığı ekler ve kullanıma sunuyoruz.
  • Yeni örnek uygulamalar, native-plasma ve ekler native-activity, yerel etkinliklerin nasıl yazılacağını gösterir.
  • Birçok hata düzeltmesini ve diğer küçük iyileştirmeleri içerir; için docs/CHANGES.html adresine bakın devamı ve kapsamlı bir değişiklik listesidir.
NDK r4b notları:

NDK derlemesi ve hata ayıklama komut dosyalarındaki çeşitli sorunların çözümlerini içerir (varsa) NDK r4 kullanıyorsanız NDK r4b derlemesini indirmenizi öneririz. Ayrıntılı bilgi için CHANGES.TXT dokümanını okuyun indirilen NDK paketine dahildir.

Genel notlar:
  • Yeni ndk-build derlemesi aracılığıyla basitleştirilmiş bir derleme sistemi sağlar komutunu kullanın.
  • Üretim aşamasında oluşturulan makine kodunda kolay yerel hata ayıklama desteği eklendi yeni ndk-gdb komutuyla kontrol edebilirsiniz.
  • ARM tabanlı CPU mimarileri için Android'e özel yeni bir ABI ekler, armeabi-v7a Yeni ABI, mevcut armeabi ABI'yı dahil et:
    • Beğeni-2 talimatları
    • VFP donanım FPU talimatları (VFPv3-D16)
    • ARM Advanced SIMD (NEON) GCC yerleşik özellikleri ve VFPv3-D32 için isteğe bağlı destek. Motorola'nın Verizon Droid, Google Nexus One ve diğerleri.
  • Yeni cpufeatures statik kitaplığı (kaynaklarla birlikte) ekler. Burada şunları yapabilirsiniz: uygulamanın çalışma zamanında ana cihazın CPU özelliklerini algılamasını sağlar. Uygulamalar özellikle ARMv7-A, VFPv3-D32 ve NEON desteğini kontrol edin ve ardından gerektiği gibi ekleyin.
  • hello-neon cpufeatures kitaplığını kullanarak CPU özelliklerini kontrol edin ve ardından, kod yolunu (NEON temelleri) kullanarak oluşturun.
  • Desteklenen talimat setlerinden biri veya her ikisi için makine kodu oluşturmanıza olanak tanır. (NDK tarafından) Örneğin, hem ARMv5 hem de ARMv7-A mimarileri için her şeyi uygulamanızın son hâline getirmesini sağlayarak .apk
  • Uygulamalarınızın yalnızca kullanıcıları cihazları tarafından kullanılmak üzere kullanılabilmesini sağlamak için artık, Google Play uygulamaları temel alarak filtreler. başvurunuzda talimat grubu bilgileri yer alır; herhangi bir işlem yapmanız gerekmez sizin görevinizdir. Buna ek olarak, Android sisteminin kendisi ayrıca, sırasında uygulamanızı sağlar ve yüklemenin yalnızca uygulaması cihazın CPU mimarisi için derlenmiş bir kitaplık sağlar.
  • Piksele erişim için yeni bir kararlı API de dahil olmak üzere Android 2.2 desteği eklendi yerel koddaki Bitmap nesnenin arabellekleri.
Genel notlar:
  • OpenGL ES 2.0 yerel kitaplık desteği ekler.
  • Kullanımını gösteren örnek bir uygulama (hello-gl2) ekler. OpenGL ES 2.0 tepe noktası ve parça gölgelendiriciler.
  • Bu sürüm için araç zinciri ikili programları, GCC 4.4.0 ile yenilendi. öncekine göre biraz daha kompakt ve verimli bir makine kodu oluşturmalıdır. (4.2.1). NDK, isteğe bağlı olarak kullanabileceğiniz 4.2.1 ikili programlarını da sunmaya devam eder. makine kodunuzu oluşturun.

İ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.
  • 3D grafikler oluşturan bir örnek uygulama (san-angeles) ekler yerel OpenGL ES API'leri üzerinden çalışır ve etkinlik yaşam döngüsünü GLSurfaceView nesnesiyle yönetirsiniz.

İlk olarak "Android 1.5 NDK, Sürüm 1" olarak yayınlandı.

Genel notlar:
  • Thumb-1 dahil olmak üzere ARMv5TE talimatları için derleyici desteğini (GCC) içerir bakın.
  • Kararlı yerel API'ler için sistem başlıkları, dokümanlar ve örnek içerir izin verir.