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.
Android NDK r26 LTS (Eylül 2023)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümü indirebilirsiniz burada bulabilirsiniz.
- Duyurular
-
- KitKat (API 19 ve 20) artık desteklenmemektedir.
Android NDK r25 LTS (Temmuz 2022)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümü indirebilirsiniz burada bulabilirsiniz.
- Duyurular
-
- Android 13 API'lerini içerir.
- LLVM, LLVM 14 geliştirilmesine bağlı olarak clang-r450784d olarak güncellendi.
Android NDK r24 (Mart 2022)
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.
-
GNU Derleyici (GAS) kaldırıldı. Proje yürütülürken
Android NDK r23 LTS (Ağustos 2021)
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).
-
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ı
Android NDK r22b (Mart 2021)
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ğrudanclang
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.
-
Sorun
1258:
-
GNU binutils desteği sonlandırıldı ve yaklaşan bir NDK'da kaldırılacak
kullanabilirsiniz. GNU derleyicisi (
Android NDK r21e LTS (Ocak 2021)
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ç)
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.
-
Android NDK r20b (Haziran 2019)
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.
-
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
Android NDK r19c (Ocak 2019)
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/
. 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ı./bin/armv7a-linux-androideabi26-clang++ src.cpp 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.
-
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
Android NDK r18b (Eylül 2018)
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.
Android NDK r17c (Haziran 2018)
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.
Android NDK r16b (Aralık 2017)
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 itibarenlibc++
, CMake ve bağımsız araç zincirleri için varsayılan STL'dir. Manuel olarak farklı bir STL ile kullanmak istiyorsanızlibc++
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.
Android NDK r15c (Temmuz 2017)
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.
- 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ıysaandroid-14
değerinden düşük ise bunun yerineandroid-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.
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.
- 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.
Android NDK r14b (Mart 2017)
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.
- 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:
Bu sürümdeki yenilikler ve değişiklikler hakkında daha fazla bilgi için şu sayfaya bakın: changelog.
Android NDK r13b (Ekim 2016)
- İ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.
Android NDK r12b (Haziran 2016)
- İ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.
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).
- Bu değişikliklerle ilgili bilgilerin tamamı için bkz. bu değişiklik listesini inceleyin.
- 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
veclang++.exe
yürütülebilir dosyaları Windows paketi aslında 64 bittir. 32 bit yürütülebilir dosyanın adıclang_32.exe
- 32 bit’teki
- 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.
__thread
bu sefer gerçek olarak çalışır.
Android NDK r12 (Haziran 2016)
- İ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üredemake_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çinCameraCharacteristics
referansı. - Clang
- Clang, 3.8svn (r256229, derleme 2812033) olarak güncellendi.
clang.exe
ve 32 bit Windows paketindekiclang++.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ğeriACAMERA_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 yerineACAMERA_STATISTICS_LENS_SHADING_MAP
değerini kullanın.
Android NDK r11c (Mart 2016)
- Değişiklikler
ndk-gdb.py
komut dosyasına ek düzeltmeler uygulandı.ndk-gdb
öğ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)
Android NDK r11b (Mart 2016)
- NDK
-
- Önemli duyurular
- Hata izleyicimizi GitHub'a gidin.
- 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
.
- Önemli duyurular
- 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.
Android NDK r11 (Mart 2016)
- 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.
- Clang'a geçmenizi önemle tavsiye ederiz.
- 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.
- Derleyici artık emülasyon yaparak
- Clang artık emüle edilmiş TLS için destek sağlıyor.
- Önemli duyurular
- 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
- Örnekler artık NDK paketine dahil değildir. Bunun yerine GitHub.
- Belgeler artık NDK paketine dahil değildir. Bunun yerine Android Geliştirici Web Sitesi
- 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.
- Eski davranışı geri yüklemek için
- 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.
- ARM bağımsız araç zincirleri varsayılan olarak arm7 olarak değiştirildi.
- 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
veuchar.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.
- Önemli duyurular
- Binutiller
-
- Eklemeler
- Yeni seçenek eklendi:
--pic-veneer
.
- Yeni seçenek eklendi:
- 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).
- Eklemeler
- 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.
- Kaldırma işlemleri
- YASM
-
- Değişiklikler
- YASM, 1.3.0 sürümüne güncellendi.
- Değişiklikler
- Bilinen sorunlar
-
- x86 ASAN şu anda çalışmıyor. Daha fazla bilgi için 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.
Android NDK r10e (Mayıs 2015)
- İ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.
- Çoklu iş parçacıklarıyla derleme yapmak için
- Tüm mimariler için GDB/gdbserver 7.7'ye yükseltildi.
- 32 bit Darwin için NDK paketi kaldırıldı.
- Cortex-A53 Erratum 843419 çözümü
- Ö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çindePROPERTY_*
düzeltildi.mips64
içinsys/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 veandroid-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
vemips64
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
ve1
değerlerini döndürmek içinstlport 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üzeltildigradle
üzerindenndk-build.cmd
komutunu çalıştırarak.c
dosyası. (Sorun 66937) - Şu konumlarda eksik olan
libatomic.a
velibgomp.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çinld.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
veyaAPP_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.
Android NDK r10d (Aralık 2014)
- Ö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ındamake-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 seviyelerindePIE
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.
- 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
- Ö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)
- Ş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
- 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 projesinestdlib.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
vegl2ext.h
,dlext.h
,fts.h
,sgidefs.h
API düzeyi 21 için geçerlidir. sys/user.h
,mxcsr_mask
adlı cihazınmxcr_mask
olarak yeniden adlandırılacağı şekilde değiştirildi, veu_ar0
için veri türünü değiştirmek istiyorsanızint
olansysconf()
döndürme değeri türü olarak değiştirildilong
.LOCAL_ARM_MODE
için ndk-build'inthumb
işlemini işlemesi düzeltildi: r10d ise ndk-build,LOCAL_LDFLAGS+=-mthumb
aşağıdaki koşullar geçerlidir:LOCAL_ARM_MODE
değeriniarm
olarak ayarladınız.- Hata ayıklama derlemesi yapıyorsunuz (
APP_OPTIM=debug
veandroid:debuggable="true"
içerenAndroidManifest.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)
unsigned long
satıcısından user_regs_struct'ı yapılandırmak için kullanılır*.
Android NDK r10c (Ekim 2014)
- Önemli değişiklikler:
-
- İndirme yapısında aşağıdaki değişiklikler yapıldı:
- Her paket artık 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
- 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. - 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 dizindeprebuilt/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üncellenenhello-neon
örneğini inceleyin.- Intel'in ARM NEON'dan Intel SSE'ye bağlama rehberine bakın.
- NDK Programcı Kılavuzu'na (
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.
Daha ayrıntılı bilgi için aşağıdaki Önemli hata düzeltmeleri bölümüne bakın.
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. - Önemli hata düzeltmeleri:
-
- Aşağıdakilere neden olan GCC4.9/aarch64 ile ilgili dahili derleyici hatası düzeltildi hata mesajı (Sorun 77564):
internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
- GCC4.9/arm'dan hatalı kod oluşturma işlemi düzeltildi. (Sorun 77.567)
- Satır içi derleme içeren GCC4.9/mips ile ilgili dahili derleyici hatası düzeltildi. (Sorun 77.568)
- GCC4.9/arm'ın
x = (cond) ? y : x
için oluşturduğu yanlış kod düzeltildi. (Sorun 77569)- GCC4.9/aarch64 ve Clang3.5/aarch64'ün Varsayılan olarak Cortex-A53 hatası (835769) kullanılır. Belirterek geçici çözümü devre dışı bırakın
-mno-fix-cortex-a53-835769
- 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
veASensor_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
vesys/user.h
tüm API düzeylerine eklendi. İlgili içeriği oluşturmak için kullanılansignal.h
başlığı artık<sys/ucontext.h>
içeriyor. Mevcut tümstruct 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
veclock_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
vedlmalloc
. - Ş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
vewcstoull_l
. - Şu işlevler 64 bit mimariye geri yüklendi:
arc4random
,arc4random_buf
vearc4random_uniform
. cxa_*
ilenew
vedelete
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.
- Daha fazla TV anahtar kodu eklendi:
- 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 derleyicisindeninclude-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)
- GCC4.9'da -Os (
Android NDK r10b (Eylül 2014)
- Önemli notlar:
-
- İndirilebilir paketlerdeki 512 MB boyut kısıtlaması nedeniyle aşağıdaki 32 bit öğeler, 32 bit NDK indirme 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:
- Diğer hata düzeltmeleri:
-
stdio.h
, tüm GCC sürümlerinininclude-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/
vesources/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ı:
ctype.h
vewchar.h
işlevlerine şu işlevler eklendi:dn_expand()
,grantpt()
,inet_nsap_addr()
,inet_nsap_ntoa()
,insque()
,nsdispatch()
,posix_openpt()
,__pthread_cleanup_pop()
,__pthread_cleanup_push()
,remque()
,setfsgid()
,setfsuid()
,splice()
,tee()
,twalk()
(Sorun 73719) ve 42*_l()
işlevleri.cmsg_nxthdr
adlı dosya__cmsg_nxthdr
olarak yeniden adlandırıldı.__libc_malloc_dispatch
kaldırıldı.ptrace()
prototipilong ptrace(int, ...);
olarak değiştirildi.sha1.h
kaldırıldı.android/dlext.h
bölgesindeandroid_dlextinfo
uzatıldı.stdlib.h
,time.h
,wchar.h
vecomplex.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
vemips64el-linux-android-4.9
güncellendi, yeni bir çoklulib dizin düzeni uygulanır ve gdb-7.7 desteği sağlanırcpu-features
, daha fazla arm64 özelliğini algılayacak şekilde iyileştirildi. (Değişiklik listesi 100339.)
Android NDK r10 (Temmuz 2014)
- Ö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
veall64
içeriyorAPP_ABI
ayarlarını değiştirebilirsiniz.APP_ABI=all32
eşdeğerdirAPP_ABI=armeabi,armeabi-v7a,x86,mips
.APP_ABI=all64
eşdeğerdirAPP_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
veya4.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: - Aşağıdaki Clang 3.3/3.4 kilitlenmesi düzeltildi:
llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef
(Sorun 57381).): Assertion Weights.size() >= 2 && "Need at least two branch weights!" Assertion failed: (!Fn && "cast failed but able to resolve overload expression!!"), function CheckCXXCStyleCast, file Volumes/data/ndk-toolchain/src/llvm-3.3/llvm/tools/clang/lib/Sema/SemaCast.cpp, line 2018
. (Sorun 66950). - libc++ artık
- Diğer hata düzeltmeleri:
-
- Sabit başlıklar:
- 32 bit
ssize_t
,long int
yerineint
olacak şekilde düzeltildi. WCHAR_MIN
veWCHAR_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ı vepread64
,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ı: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 vestrrchr()
kullanır yerinestrchr()
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.
include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int);
(Değişiklik listesi 91185). - Diğer değişiklikler:
-
arm_neon.h
, x86 araç zincirine eklendi. Böylece ş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
.
Android NDK r9d (Mart 2014)
- Ö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ıklibs/armeabi-v7a
klasörüne kopyalandı. Makyaj için beklendiği gibi davranırsa hemarmeabi-v7a
hem de Reklam hedefleri olarakarmeabi-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ğerdirarmeabi armeabi-v7a x86 mips
. make-standalone-toolchain.sh
komut dosyası kopyalanır/hard
dizin altında ek kitaplıklar var. YukarıdakiCFLAGS
veLFLAGS
değerlerini GCC veya Clang'in bağlantı kuracağı makefile/hard
kütüphanesi.- Yasm derleyici ve
LOCAL_ASMFLAGS
eklendi ve x86 içinEXPORT_ASMFLAGS
bayrak belirler.ndk-build
komut dosyasıLOCAL_SRC_FILES
oluşturmak içinprebuilts/*/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çindeAPP_STL := c++_static
veyaAPP_STL := c++_shared
ekleyin.LIBCXX_FORCE_REBUILD := true
aracılığıyla kaynaktan yeniden oluşturabilirsinizmake-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.
CPLUSPLUS-SUPPORT.html
. (Sorun 36496)
- Clang 3.4 derleyici desteği eklendi. İlgili içeriği oluşturmak için kullanılan
- Ö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
- Mac OS X:
- 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çinandroid/asset_manager.h
. (Sorun 64988) - Şu dokümandaki eksik
#include
düzeltildi: Android API düzeyi 14 ve sonraki sürümler içinandroid/rect_manager.h
. JNICALL
,JNI_OnLoad
koleksiyonuna eklendi vejni.h
içindeJNI_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
- Şu dokümandaki eksik
- 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__
eklenerekplatforms/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çinscalblnl
- x86libm.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üzeltildistd::terminate()
kullanıcı tanımlı birstd::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ürmeonSystemUiVisibilityChange
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
veld.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 ayarlanarakndk-gdb-py.cmd
düzeltildi: bir ortam değişkeni bir kullanıcıyapython.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 ederekcmd.exe
ve MinGW kabukları anlaşılmıyor cygwin tarafından oluşturulan sembolik bağlantılar. - Üstbilgi düzeltmeleri:
- Diğer değişiklikler:
-
- Yürütme izinleri tüm
*cmd
komut dosyasına uygulandı daha önce yalnızcacmd.exe
kabuğunda kullanılması amaçlanmıştır. geliştiriciler cygwin yerinendk-build.cmd
kullanmayı tercih ederler önerilenndk-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.
- Yürütme izinleri tüm
Android NDK r9c (Aralık 2013)
Bu yalnızca hata düzeltme amaçlı bir sürümdür.
- Önemli hata düzeltmeleri:
-
- Yığın işaretçisinin çok erken geri yü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
prototipipoll.h
içindepoll(struct pollfd *, nfds_t, int);
olarak değiştirildi.utimensat
, Android içinlibc.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çinclock_nanosleep()
-time.h
ve daha yüksek olabilir. CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,
vetime.h.
içindeCLOCK_BOOTTIME_ALARM
- Eski
CLOCK_REALTIME_HR
veCLOCK_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üzeltildicmd.exe
olduğundaLOCAL_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 şekildepc
içermeyenstack:
bölümü,eip
veyaip
. Ö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.
- Üstbilgi düzeltmeleri:
- 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 sistemindk-build
. Bu ayar etkinkenndk-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ğerAPP_*
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çenekndk-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)
Android NDK r9b (Ekim 2013)
- Önemli değişiklikler:
-
include/android/*h
vemath.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çintests/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ınGCC_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ı)
- 16 bit göreli atlama oluşturamayan ARM GCC 4.6
- Diğer hata düzeltmeleri:
-
- Üstbilgi düzeltmeleri
- Şuna göre ARM
WCHAR_MIN
veWCHAR_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
veimaxdiv
işlevleri başlıktan kaldırıldıinttypes.h
. - Döndürülen
pthread_exit()
değerleri vepthread_self()
ile ilgili sorun düzeltildi. (Sorun 60686) bionic
içinde zaten mevcut olan eksikmkdtemp()
işlevi eklendi başlıkstdlib.h
.
- Şuna göre ARM
- 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üzeltildissax-instructions
vefenv
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)
- Üstbilgi düzeltmeleri
- 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çintests/device/test-openmp
sayfasına bakın ld.mcld
boyutu önemli ölçüde küçültüldü (1,5 MB -ld.bfd
3,5 MB veld.gold
7,5 MB) ve yaklaşık %20 hız artışı sağlar.- Belirtmek için
LOCAL_CONLYFLAGS
veAPP_CONLYFLAGS
eklendi seçenekleri yalnızca C için geçerli olup C++ için geçerli değildir. MevcutLOCAL_CFLAGS
veAPP_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ü.
- Tüm GCC derlemeleri için OpenMP etkinleştirildi. Bu özelliği kullanmak için aşağıdaki işaretleri
derleme ayarları:
Android NDK r9 (Temmuz 2013)
- Önemli değişiklikler:
-
- Android 4.3 (API düzeyi 18) için destek eklendi. Daha fazla bilgi için bkz.
samples/gles3jni/README
dilindeSTABLE-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
veyaApplication.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: 55460Not: 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çinLOCAL_LDFLAGS
veyaAPP_LDFLAGS
. - ELF kitaplığı bağımlılıklarını yazdıran
ndk-depends
aracı eklendi. Daha fazla bilgiyiNDK-DEPENDS.html
sayfasında bulabilirsiniz. (Sorun 53486)
- Android 4.3 (API düzeyi 18) için destek eklendi. Daha fazla bilgi için bkz.
- Ö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çinlibc.so
velibc.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ğuLOCAL_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 birstepi
komutu kullanılırken karşılaşılan GDB kilitlenmesi düzeltildiblx pc
Beğenme talimatı. (Sorun 56962, Sorun 36149)- MIPS
gdbserver
yerineDT_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 projelerdenndk-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çinbackward/
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.3stlport
derleme hatası düzeltildi /_Unwind_Control_Block
. (Sorun 54426) - Şu konumda oluşturulan
AndroidManifest.xml
dosyayı işlemek içinawk
komut dosyası düzeltildi Sonunda\r
karakter içerebilen ve derleme hatalarına neden olabilecek pencereler. (Sorun 42548) prebuilts/
cihazını kontrol etmek içinmake-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
vepr2
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ştirildierrno.h
için__set_errno
desteği sonlandırıldı velibc.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 ailesininconst 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
veWCHAR_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üncellendignustl
'a ek olarak kitaplık'ı da kullanabilirsiniz.--stl=stlport
. Daha fazla bilgiyiSTANDALONE-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 olarakclang
veclang++
, 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çinconst_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.
- Eksik bilgi özelliğinin yeniden etkinleştirilmesi için bir
-mldc1-sdc1
, MIPS GCC ve Clang derleyicilerine eklendi. Varsayılan olarak, derleyiciler 8 baytlık nesneleri düzgün bir şekilde hizalayıpldc1
vesdc1
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ış bellekteldc1
vesdc1
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 azAPP_MIN_PLATFORM_LEVEL
.APP_PLATFORM_LEVEL
daha düşük olabilirAPP_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ılanAPP_MIN_PLATFORM_LEVEL
, içindekiandroid:minSdkVersion
ile belirtilir uygulamanızın manifest dosyasıdır. (Sorun 39752)android_getCpuIdArm()
veandroid_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'ninas/ld
öğesini kullanacak şekilde değiştirildi.Not: GCC 4.7'de
monotonic_clock
veis_monotonic
, şu şekilde yeniden adlandırıldı: Sırasıylasteady_clock
veis_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ı.
- Statik kitaplıkta
- Derleme komut dosyaları,
APP_MODULES
tanımlı değilse ve yalnızca statik olacak şekilde güncellendi kitaplıklarAndroid.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 bilgiyiOVERVIEW.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çinLOCAL_DISABLE_FORMAT_STRING_CHECKS=true
. Daha fazla bilgi içinANDROID-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.
- Üstbilgi Düzeltmeleri
Android NDK r8e (Mart 2013)
- Önemli değişiklikler:
-
- 64 bit ana makine araç zinciri grubu eklendi (paket adı son eki
*-x86_64.*
). Daha fazla (bkz.CHANGES.HTML
veNDK-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
veLOCAL_SHARED_LIBRARIES
. Daha fazla bilgiyiCHANGES.HTML
sayfasında bulabilirsiniz. (Sorun 39378)
- 64 bit ana makine araç zinciri grubu eklendi (paket adı son eki
- Ö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 vesteady_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üzeltildidistance_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çinld.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çindekiSTLport
segmentasyon hatası düzeltildi. (Değişim: 50236)- Şu verilerin hizalanmamış erişimi nedeniyle istisna işlemede
STLport
veri yolu hatası düzeltildiDW_EH_PE_udata2
,DW_EH_PE_udata4
veDW_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
veptrdiff_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
veElf64_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)
- Gereksiz
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ındalibgcc_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
veclang++
komut dosyalarının algılanması için düzeltme uygulandı-cc1
ve bulunduğunda-target
belirtilmemelidir. Application.mk
içinde ayarlananNDK_APP_OUT
gözlemini gözlemlemek içinndk-build
düzeltildi.sigsetjmp
değerinin bulunmadığı X86libc.so
velib.a
sorunu düzeltildi vesiglongjmp
işlevlerisetjmp.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)
- Düzeltilen NDK başlıkları:
- 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: projeninobj/local/<abi>/
dizinini oluşturur. (Sorun 40302)__ARM_ARCH_5*__
, ARMtoolchains/*/setup.mk
komut dosyasından kaldırıldı. (Sorun 21132)- ARM için ek GNU libstdc++ kitaplıkları oluşturuldu.
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ıktaisinf
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ınNDK_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şaretleripentiumpro
vegeneric
ilei686
veatom
.- Geliştirilmiş araç zinciri derleme komut dosyaları:
mingw
derleme türü içinbuild-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
vebuild-stlport.sh
güncellendi "NDK paketinden çıkar". (Sorun 52835) MSys
yardımcı programları koleksiyonundarun-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
vestlport_static.a
derleme seçeneği eklendi olmadan çalışır.
Android NDK r8d (Aralık 2012)
- Ö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çinNDK_TOOLCHAIN_VERSION=4.7
değişkenini dışa aktarın veyaApplication.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 kullanaraklibstlport_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.
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.
- Artık
- 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çinsources/android/cpufeatures/cpu-features.c
:/proc
, Android 4.1 ve sonraki sürümlerde kullanılamaz. (Chromium Sorunu 164154)
- 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:
- Ö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__
vewint_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
vedirent.h
ürününde üstbilgiler yeniden düzenlendi.limits.h
,PAGE_SIZE
sağlayanpage.h
öğesini içerecek şekilde düzeltildi Ayarlar'da devre dışı bırakabilirsiniz. (Sorun 39983)glGetAttribLocation()
sabit dönüş türü veint
-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
veHOST_MAKE
ayarları.fsck_msdos
derlemelerinde nesneleri birbirine bağlayanld.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.
- NDK başlığı dosyası düzeltmeleri:
- 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 velib32/
konumuna yerleştirildi.
Android NDK r8c (Kasım 2012)
- Ö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
veCC
ileCXX
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ı etiketiniAndroid.mk
içineLOCAL_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
veandroid-13
içindeAPP_PLATFORM
,project.properties
veya yerineandroid-9
yerinedefault.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. YeniAPP_PIE
seçeneği, bu davranışı kontrol etmenize olanak tanır. Ayrıntılar içinAPPLICATION-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 yeniplatforms/android-N
eklenmemiştir. - Düzenlenen API seviyesi daha büyükse uyarı vermek için
ndk-build
değiştirildi projeninAndroidManifest.xml
metriğindeandroid:minSdkVersion
değerinden daha yüksek.
- Derleme mantığında değişiklik yapılan projeler için
cpu-features
yardımcı kitaplığı, ARM'ye özgü daha fazla özellik içerecek şekilde güncellendi. Ayrıntılar içinsources/android/cpufeatures/cpu-features.h
sayfasını ziyaret edin.- X86 platformundaki uzun çift, 8 bayt olacak şekilde değiştirildi. Bu veri türü artık çift 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 vecrt*.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.
- 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:
- Ö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üzeltildicp/mangle.c::write_unscoped_name
, bağlam şu olduğunda GCC kilitlenebilir:null
veTREE_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üzeltildiLOCAL_SRC_FILES
ayrıcaAPP_STL
kullandı.APP_STL
ilendk-build
komut dosyası, öncekiLOCAL_SRC_FILES
klasöründe C++ dosyalarını arıyor derlemeye STLheader/lib
yolları ekleniyor.ndk-build
, şu şekilde değiştirildi: aramadan önce.arm
ve.neon
soneklerini filtreleyin, aksi takdirde öğeler olsunLOCAL_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 olantag_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 yenibinutils-2.21
tarafından önceden oluşturulmuş nesne - GNU
stdc++
derlemesinde hem-mthumb
hem de-march=armv7-a
, doldurmak içinmake-standalone-toolchain.sh
değerini değiştirerekarmv7-a/thumb
alt dizinindeheaders/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)
- ARM GCC 4.4.3/4.6
- X86 için
-fstack-protector
, aynı zamandandk-build
x86 ABI hedefi. - MIPS'ye özel düzeltmeler:
- Şu durumda
_STLP_LITTLE_ENDIAN
1 olarak ayarlanarakSTLport
bitiş ayarı düzeltildi MIPSlibstlport_*
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)
- Şu durumda
- 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ğindendk-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şikliksolib
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 şimdisvr4_current_sos()
için yapılan her aramada şu tarihe kadarenable_break()
yeniden dener: ve başarılı olur. (Değişim: 43563)gdb
öğesinin yerleştirilen kesme noktalarında durmaması sorunu düzeltildidlopen-ed
kitaplık. (Sorun 34856)- Sistemde
dlopen()
çağrılırken dinamik bağlayıcıdakiSIGILL
sorunu düzeltildi Burada/system/bin/linker
üzerinde semboller vertld_db_dlactivity()
, korunmaması nedeniyleThumb
olarak uygulandıLSB
/sym_addr
. (Sorun 37147)
- 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
- 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çinlinux/sysctl.h
velinux/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
veULONG_LONG_MAX
,<pthread.h>
-<limits.h>
arası.
- Yanlışlıkla kaldırılan
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ızcaSTLport
ü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ıysacrtbegin_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şlerindeobjdump
içinde kullanılan ARM için sembol kod çözücü düzeltildi oluşturabilirsinizfunction@plt
.- GCC 4.6
libgcc.a
sürümünde kullanıma sunulan aşağıdaki simgeler şuradan kaldırıldı: X86 platformulibc.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üncellendiDUMP_XXXX
ndk-build
. Bu değişiklik,Application.mk
veyaAndroid.mk
,$(info ...)
söz dizimiyle bir öğeyi yazdırıyor, almıyorDUMP_XXXX
sonucuna yerleştirilir. (Daha fazla bilgi)
- Düzeltilen NDK başlıkları:
- Diğer değişiklikler:
-
arch-x86
vearch-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şullardastandalone/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
Android NDK r8b (Temmuz 2012)
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ıylagdb
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ığındasolib
simgelerini yeniden tara).
- Araç;
- Windows'da düzeltilemeyen
ndk-build clean
sorunu düzeltildi../libs/*/lib*.so
. make
ikenndk-build.cmd
değerinin sıfır dışında birERRORLEVEL
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ırkenSEGV
sorunu düzeltildi ve HATALAR.
- Mac OS, Windows Cygwin ortamlarında
- Önemli değişiklikler:
-
- GCC 4.6 araç zinciri (
gold
ve GDB 7.3.x ilebinutils
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çindeNDK_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çinAndroid.mk
hesabınaLOCAL_LDLIBS += -fuse-ld=gold
ekleyin.-fPIE
ile derlenen programlar, hata ayıklama için yeniGDB
gerektirir. .binutils
2.21ld
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çerliyseGNU_RELRO
bölümündekip_flags
. Bu çözüm olmazsa programlar-fPIE
ile oluşturulan derlemelerde hata ayıklama işlemi yapılamadı. (mor e bilgileri)
- Hatalı bir şekilde zombi referanslarını saklayan
- Eski sürümlerle uyumluluk için
sincos()
optimizasyonu devre dışı bırakıldı platformlar.
- GCC 4.6 artık varsayılan araç zinciridir. Orijinali seçmek için
- 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:
- Ş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
. -z norelro
ve Bağlayıcı için-z lazy
seçenek.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. - Şu öğe için
.note.ABI-tag
bölümü ile yürütülebilir Android dosyaları için marka bilinci oluşturma özelliği eklendicrtbegin_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 */ }
.
- GCC 4.6 araç zinciri (
- 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ırkenld
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
vetwo-libs
örneklerindeki yanlış paket adları düzeltildi. altındakitests
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
velib
, şuraya taşındı:sources/cxx-stl/gnu-libstdc++/4.6
GCC 4.6 ile derlendiğinde veyasources/cxx-stl/gnu-libstdc++/4.4.3
, GCC 4.4.3 ile derlendiğinde.libbfd.a
velibintl.a
,lib/
kuruluş birimindenlib32/
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ızcacheckout
kullanılarakdownload-toolchain-sources.sh
hızı artırıldı araç zinciri ikili programları.build-host-gcc.sh
vebuild-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ı .
- Linux tarafından barındırılan yeni bir araç zinciri oluşturmak için
if_dl.h
başlığı tüm platformlardan ve mimarilerden kaldırıldı. AçıkladığıAF_LINK
vesockaddr_dl
öğeleri BSD'ye özgüdür (ör. mevcut değiller) ) tıklayın.
- İkili dosyaların yeri değiştirildi:
Android NDK r8 (Mayıs 2012)
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ızdakiAPP_ABI
tanımınızı yaygın proje yöneticisiyim. Örneğin, aşağıdaki satırdandk-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çindocs/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.
- 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
- Önemli hata düzeltmeleri:
-
- GAbi++ uygulamasında,
b
temel sınıf nesnesinindynamic_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üzeltildilibsupc++.*
.
- GAbi++ uygulamasında,
- Diğer hata düzeltmeleri:
-
ndk-build.cmd
düzgün şekilde çalışmaya devam etmesi içinndk-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.
Android NDK r7c (Nisan 2012)
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
).
- 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.
- Ö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şkenndk-gdb
tarafından da tanındı.- Yüzlerce, hatta binlerce kaynak barındıran modül derleme desteği eklendi
Android.mk
içindeLOCAL_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çindekiandroid_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ı.
Android NDK r7b (Şubat 2012)
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çindocs/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'dekiprebuilt/linux-x86/bin
altındakiawk
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.
- Deneme sırasında oluşan sonsuz döngü / yığın taşması hatası kaldırıldı
için olmayan bir dizinden
- Kullanıldığında uygun ikili programları oluşturmak için bağımsız araç zinciri düzeltildi
-lstdc++
(ör. GNUlibstdc++
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 ettilibsupc++.a
ancak dosya doğru konumdaydı. - Belirli bir C++ çalışma zamanı kullanılmadığında Cygwin C++ bağlantısı düzeltildi
APP_STL
- Doğrulukla ilgili sorunlardan kaçınmak için
- 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çindocs/APPLICATION-MK.html
.
- İstisnaları ve/veya RTTI'yı modüllerinizde açıkça etkinleştirin ya da
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çindememcpy
yerinememmove
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
vePOPCNT
). Görüntüleyin Ayrıntılı bilgi içindocs/CPU-FEATURES.html
.docs/NDK-BUILD.html
, bunun yerineNDK_APPLICATION_MK
adını içerecek şekilde güncellendi Özel birApplication.mk
dosyası seçmek içinNDK_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 sürücü öneki
- 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
.
- Uygulamanız GNU
Android NDK r7 (Kasım 2011)
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/
- Khronos Grubu OpenMAX AL 1.0.1 tabanlı yerel multimedya API'sı eklendi
standart. Yeni
- CCache desteği eklendi. Büyük yeniden oluşturma işlemlerini hızlandırmak için
NDK_CCACHE
ortam değişkeniniccache
(veyaccache
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ğininall
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ındanndk-build
kullanabilirsiniz. Bu, desteklenen tüm ABI'ler için proje derlemeleriniApplication.mk file
. Örnek:ndk-build APP_ABI=all
Android.mk
içine şu değere sahip birLOCAL_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çindocs/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şmiyorndk-build
yöntemini proje ağacınızın bir alt dizininden çağırırsanız belirli bir dizine işaret etmek içinNDK_PROJECT_PATH
tanımlarsınız.
- Aşağıdakileri ekleyen Android 4.0 (API düzeyi 14) için resmi NDK API'leri eklendi.
yerel özellikler:
- 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ı, orijinalndk-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ülfoo
bar
modülünü, ardından hemlibfoo.so
hem delibbar.so
, yükleme konumuna kopyalanır. Daha önce yalnızcalibfoo.so
bar
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 aktaranbar
adlı statik kitaplığı içe aktarırzoo
kitaplığı içinlibfoo.so
artık bu ikilibbar.a
velibzoo.a
.
- İçe aktarılan paylaşılan kitaplıklar artık varsayılan olarak hedef yüklemeye yükleniyor
- 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 bilgidocs/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
vebar.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()
veyaglGetProcAddress()
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
Android NDK r6b (Ağustos 2011)
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
vesize_t
tanımları düzeltildi: x86'ya özgü sistemlere izin verir.
Android NDK r6 (Temmuz 2011)
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ızdaAPP_ABI
tanım yeni bir kod var. Örneğin, aşağıdaki satırdandk-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çindocs/STANDALONE-TOOLCHAIN.html
. - Yeni
ndk-stack
aracı, yığın izlemeleri (stack trace) Yerel kod tarafından oluşturulanlogcat
. 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çindocs/NDK-STACK.html
bölümüne bakın.
- 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
- 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.
Android NDK r5c (Haziran 2011)
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 eksikhistory_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çinPTHREAD_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).
- Nesne dosyaları artık her zaman göründükleri sırayla birbirine bağlanıyor
Android NDK r5b (Ocak 2011)
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
veIN6_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.
Android NDK r5 (Aralık 2010)
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 eklernative-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.
Android NDK r4b (Haziran 2010)
- 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, mevcutarmeabi
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.
- Yeni
Android NDK r3 (Mart 2010)
- 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.
Android NDK r2 (Eylül 2009)
İlk olarak "Android 1.6 NDK, Sürüm 1" olarak yayınlandı.
- Genel notlar:
-
- OpenGL ES 1.1 yerel kitaplık desteği ekler.
- 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.
Android NDK r1 (Haziran 2009)
İ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.