Bu sayfada, NDK'nın kullanıma sunulan tüm kararlı sürümlerindeki değişikliklerle ilgili bilgiler sunulmaktadır. NDK'nın en son kararlı sürümünü veya şu anda mevcut olan herhangi bir beta sürümünü indirmek için NDK indirmeleri sayfasını inceleyin.
Android NDK 25 LTS (Temmuz 2022)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
- Android 13 API'lerini içerir.
- LLVM 14 geliştirmesine göre LLVM, clang-r450784d olarak güncellendi.
Android NDK r24 (Mart 2022)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
-
GNU Assembler (GAS) kaldırıldı.
-fno-integrated-as
ile derleme yapıyorsanız bu işareti kaldırmanız gerekir. Derlemeyi LLVM ile uyumlu hale getirme hakkında öneriler için Clang Taşıma Notları'na bakın. - GDB kaldırıldı. Bunun yerine LLDB kullanın. ndk-gdb'nin varsayılan olarak LLDB'yi kullandığını ve Android Studio'nun yalnızca LLDB'yi desteklediğini unutmayın.
- Jelly Bean (API 16, 17 ve 18) artık desteklenmiyor. NDK tarafından desteklenen minimum işletim sistemi KitKat'tır (API düzeyi 19).
- Neon olmayan cihazlar artık desteklenmemektedir. Çok az sayıda eski cihaz Neon'u desteklemediği için çoğu uygulama performans iyileştirmenin dışında bir şey fark etmez.
- RenderScript derleme desteği kaldırıldı. RenderScript, Android 12'de kullanımdan kaldırıldı. Uygulamalarınızı RenderScript'ten taşımayı tamamlamadıysanız NDK r23 LTS kullanılabilir.
-
GNU Assembler (GAS) kaldırıldı.
Android NDK r23 LTS (Ağustos 2021)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
-
GNU Derleyici (GAS) hariç GNU bölmeleri kaldırıldı. GAS
bir sonraki sürümde kaldırılacaktır.
-fno-integrated-as
ile derleme yapıyorsanız bu işareti kaldırmanızı engelleyen bir şey varsa hata bildirin. -
GDB desteği sona erdi. GDB, sonraki sürümden kaldırılacaktır.
Bunun yerine LLDB kullanın.
ndk-gdb
varsayılan olarak LLDB kullanır. - NDK r23, Neon olmayan sürümü destekleyecek son sürümdür. NDK r24'ten başlayarak, sistemdeki armeabi-v7a kitaplıkları Neon ile oluşturulur. Çok az sayıda eski cihaz Neon'u desteklemediği için çoğu uygulama performans iyileştirmenin dışında bir şey fark etmez.
- Jelly Bean (API 16, 17 ve 18), bir sonraki NDK sürümünde desteklenmeyecektir. NDK tarafından r24 tarafından desteklenen minimum işletim sistemi KitKat (API düzeyi 19) olacaktır.
-
GNU Derleyici (GAS) hariç GNU bölmeleri kaldırıldı. GAS
bir sonraki sürümde kaldırılacaktır.
Android NDK r22b (Mart 2021)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
-
GNU binutil'leri kullanımdan kaldırılmıştır ve yakında kullanıma sunulacak NDK sürümünde de kaldırılacaktır. GNU derleyicisinin (
as
) bunun bir parçası olduğunu unutmayın.-fno-integrated-as
ile derleme yapıyorsanız bu işareti kaldırmanızı engelleyen bir şey varsa hata bildirin. Doğrudanas
kullanıyorsanız bunun yerineclang
kullanın. - LLD artık varsayılan bağlayıcıdır. ndk-build ve CMake araç zinciri dosyamız llvm-ar ve llvm-strip kullanmaya da taşındı.
- ndk-gdb, hata ayıklayıcı olarak artık lldb'yi kullanıyor. gdb artık kullanılmamaktadır ve gelecekteki bir sürümde kaldırılacaktır. Gdb'ye dönmek için --no-lldb seçeneğini kullanın. Ancak lütfen lldb'yi kullanamama nedeninizi açıklayan bir hata bildiriminde bulunun.
-
Artık
std::filesystem
desteği dahil. Bilinen iki sorun vardır:-
1258 numaralı sorun: Eski cihazlarda
std::filesystem::perm_options::nofollow
için ödül verilmeyebilir. -
1260 numaralı sorun:
std::filesystem::canonical
, eski cihazlarda var olmayan bir yoldan yanlış geçtiğinde başarılı olur.
-
1258 numaralı sorun: Eski cihazlarda
-
GNU binutil'leri kullanımdan kaldırılmıştır ve yakında kullanıma sunulacak NDK sürümünde de kaldırılacaktır. GNU derleyicisinin (
Android NDK r21e LTS (Ocak 2021)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
-
32 bit Windows artık desteklenmemektedir. Bu durum kullanıcıların büyük çoğunluğunu etkilemez. Windows'un 32 bit sürümlerinden NDK uygulamaları oluşturmanız gerekiyorsa NDK r20'yi kullanmaya devam edin.
Android Geliştirici araçlarındaki bu değişiklik hakkında daha fazla bilgi için konuyla ilgili blog yayınına göz atabilirsiniz.
-
LLD artık test edilebilir.
AOSP varsayılan olarak LLD'ye geçmiştir ve NDK bunu takip edecektir (zaman çizelgesi bilinmiyor). Bağlantı oluştururken
-fuse-ld=lld
değerini ileterek uygulamanızda LLD'yi test edin. 883 numaralı sorunun, llvm-strip ve llvm-objcopy yerine binutils şeridi ve objcopy ile LLD kullanan derlemeleri etkileyeceğini unutmayın. -
Eski araç zinciri yükleme yolları, önümüzdeki sürümlerde kaldırılacaktır. Bu yollar NDK r19'dan bu yana artık kullanılmamaktadır ve NDK'da önemli miktarda yer kaplar. Kaldırılan yollar şunlardır:
- platformlar
- kaynaklar/cxx-stl
- sistem kökü
- araç zincirleri (araç zincirleri/llvm haricinde)
make_standalone_toolchain.py
kullanıcıları bu durumdan etkilenmez (ancak komut dosyası r99'dan bu yana gereksizdir). Eski araç zinciri düzeninden geçiş yapma hakkında bilgi edinmek için kullandığınız NDK sürümüne yönelik Sistem Bakım Aracı Kılavuzu'nu inceleyin. - Ağustos 2019'dan itibaren Play Store, APK yüklenirken 64 bit desteği gerektirecektir. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşıma işlemine başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
- İmzalı ve noter onaylı bir macOS uygulama paketi, artık wiki'mizden ve web sitemizden indirilebilir. Yalnızca paketlerin RPATH'leri kullanabileceğini ve noter onayına olanak tanıdığından macOS için geleneksel NDK paketi noter onayı yapılamaz. Uygulama paketi, uygulamanın Android Studio ile uyumlu olmamasına neden olacak düzen değişiklikleri gerektirdiğinden SDK, geleneksel paketi kullanmaya devam edecektir. NDK, SDK yöneticisi aracılığıyla indirilirken karantinaya alınmaz. Bu nedenle, Gatekeeper tarafından şimdiye kadar izin verilir. SDK yöneticisi şu anda macOS için NDK almanın en güvenilir yoludur.
-
Android NDK r20b (Haziran 2019)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
-
LLD artık test edilebilir.
AOSP, varsayılan olarak LLD'ye geçme sürecindedir ve NDK bunu takip edecektir (zaman çizelgesi bilinmiyor). Bağlantı oluştururken
-fuse-ld=lld
ifadesini ileterek uygulamanızda LLD'yi test edin. - Ağustos 2019'dan itibaren Play Store, APK yüklenirken 64 bit desteği gerektirecektir. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşıma işlemine başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
- Android Q API'leri eklendi.
-
LLD artık test edilebilir.
AOSP, varsayılan olarak LLD'ye geçme sürecindedir ve NDK bunu takip edecektir (zaman çizelgesi bilinmiyor). Bağlantı oluştururken
Android NDK r19c (Ocak 2019)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
-
Geliştiriciler, uygulamalarını LLD ile test etmeye başlamalıdır. AOSP, varsayılan olarak LLD'yi kullanmaya başladı. NDK, bir sonraki sürümde bu özelliği varsayılan olarak kullanacaktır. BFD ve Gold, LLD'nin çözülmemiş önemli sorunları olmayan (yayınlanan 22 sürümü) bir sürüm döngüsüne katıldıktan sonra kaldırılacaktır. Bağlantı oluştururken
-fuse-ld=lld
ifadesini ileterek uygulamanızda LLD'yi test edin. Not: ld şu anda Windows'da sıkıştırılmış simgeleri desteklememektedir. Sorun 888. Clang, Windows'da sıkıştırılmış simgeler de oluşturamaz ancak bu durum, Darwin veya Linux'tan oluşturulan yapıları kullanırken sorun teşkil edebilir. - Ağustos 2019'dan itibaren Play Store, APK yüklenirken 64 bit desteği gerektirecektir. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşıma işlemine başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
-
Sorun 780: Bağımsız araç zincirleri artık gerekli değildir. Clang,binutil, sysroot ve diğer araç zinciri parçaları
$NDK/toolchains/llvm/prebuilt/<host-tag>
ürününe yüklendi. Clang bunları otomatik olarak bulacak. API 26 ARM için bağımsız bir araç zinciri oluşturmak yerine, doğrudan NDK'den derleyici çağırın:$ $NDK/toolchains/llvm/prebuilt/
r19 için araç zinciri, derleme sistemlerine yeni düzene uyum sağlama olanağı vermek üzere eski yola da yüklenir. Eski yollar r20'de kaldırılacak./bin/armv7a-linux-androideabi26-clang++ src.cpp make_standalone_toolchain.py
komut dosyası kaldırılmayacak. Bu işlem artık gerekli değildir ve yukarıdaki bilgilerle bir uyarı oluşturur. Ancak komut dosyası mevcut iş akışlarını korumak için kalır. ndk-build, CMake veya bağımsız bir araç zinciri kullanıyorsanız iş akışınızda herhangi bir değişiklik olmamalıdır. Bu değişiklik, artık Android'e özgü bazı kodları silebilecek olan üçüncü taraf derleme sistemlerinin bakım uzmanları için anlamlıdır. Daha fazla bilgi için Sistem Bakım Hizmeti Oluşturma kılavuzuna bakın. - ndk-depends kaldırıldı. ReLinker'ın eski Android sürümlerindeki yerel kitaplık yükleme sorunlarına daha iyi bir çözüm olduğunu düşünüyoruz.
- Sorun 862: Clang'a yönlendirilen GCC sarmalayıcı komut dosyaları, yerine geçecek kadar çalışmadıkları için kaldırıldı.
-
Geliştiriciler, uygulamalarını LLD ile test etmeye başlamalıdır. AOSP, varsayılan olarak LLD'yi kullanmaya başladı. NDK, bir sonraki sürümde bu özelliği varsayılan olarak kullanacaktır. BFD ve Gold, LLD'nin çözülmemiş önemli sorunları olmayan (yayınlanan 22 sürümü) bir sürüm döngüsüne katıldıktan sonra kaldırılacaktır. Bağlantı oluştururken
Android NDK r18b (Eylül 2018)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
- GCC kaldırıldı.
-
LLD artık test edilebilir.
AOSP, varsayılan olarak LLD'ye geçme sürecindedir ve NDK bunu takip edecektir (zaman çizelgesi bilinmiyor). Bağlantı oluştururken
-fuse-ld=lld
ifadesini ileterek uygulamanızda LLD'yi test edin. - gnustl, gabi++ ve stlport kaldırılmıştır.
- ICS desteği (android-14 ve android-15) kaldırılmıştır. Yürütülebilir dosya kullanan uygulamalar artık hem PIE hem de PIE olmayan yürütülebilir içerik sağlamalıdır.
- Ağustos 2019'dan itibaren Play Store, APK yüklenirken 64 bit desteği gerektirecektir. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşıma işlemine başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
Android NDK r17c (Haziran 2018)
Değişiklik günlüğü- İndirilenler
-
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
- GCC artık desteklenmiyor. NDK r18 cinsinden kaldırılacaktır.
-
libc++ artık CMake ve bağımsız araç zincirleri için varsayılan HDS'dir. Manuel olarak farklı bir HDS seçtiyseniz
libc++
platformuna geçmenizi kesinlikle öneririz. "nk-build" değerinin varsayılan olarak "STL" olmamasına dikkat edin. Daha fazla bilgi için bu blog yayınına göz atın. - gnustl ve stlport kullanımdan kaldırılmıştır ve NDK r18'de kaldırılacaktır.
- ARMv5 (armeabi), MIPS ve MIPS64 desteği kaldırılmıştır. Bu ABI'lerden herhangi birini oluşturmaya çalışmak hataya neden olur.
- ICS (android-14 ve android-15) desteği r18'den kaldırılacaktır.
- Ağustos 2019'dan itibaren Play Store, APK yüklenirken 64 bit desteği gerektirecektir. Zamanı geldiğinde sürprizlerle karşılaşmamak için taşıma işlemine başlayın. Daha fazla bilgi için bu blog yayınına göz atın.
Android NDK r16b (Aralık 2017)
Değişiklik günlüğü- İndirilenler
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
- Kullanımdan kaldırılan başlıklar kaldırıldı. Birleşik Başlıklar artık yalnızca "Başlıklar" oldu. Taşıma ile ilgili ipuçları için Birleştirilmiş Üstbilgi Taşıma Notları başlıklı makaleye bakın.
- GCC artık desteklenmiyor. Ürün henüz NDK'dan kaldırılmayacaktır ancak artık geri bildirim almaz. libc++ varsayılan olana kadar yeterince kararlı hale gelene kadar kaldırılamaz, çünkü kingin bazı kısımları Clang ile hâlâ uyumsuzdur. Diğer STL'ler r18'de kaldırıldığında kaldırılır.
libc++
beta sürümünden çıktı ve NDK'da tercih edilen STL oldu.libc++
, 17 Hindistan rupisinden başlayarak CMake ve bağımsız araç zincirleri için varsayılan HDS'dir. Manuel olarak farklı bir HDS seçtiysenizlibc++
platformuna geçmenizi kesinlikle öneririz. Daha fazla bilgi için bu blog yayınını inceleyin.- ARM5 (armeabi), MIPS ve MIPS64 desteği kullanımdan kaldırılmıştır. Varsayılan olarak ndk-build ile derlenmezler, ancak açıkça adlandırılmaları durumunda yine de derlenebilirler ve "all", "all32" ve "all64"ün hepsine dahil edilirler. Bunların her biri için destek r17'de kaldırılmıştır. Bu ABI'lardan herhangi birini hedeflerseniz hem CMake hem de ndk-build bir uyarı yayınlar.
- API'ler
-
Android 8.1 için yerel API'ler eklendi. Bu API'ler hakkında daha fazla bilgi için Yerel API'lere genel bakış bölümünü inceleyin.
Bu sürümdeki yenilikler ve değişiklikler hakkında daha fazla bilgi edinmek için bu değişiklik günlüğünü inceleyin.
Android NDK r15c (Temmuz 2017)
Değişiklik günlüğü- İndirilenler
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
- Birleştirilmiş başlıklar varsayılan olarak etkindir. Bu başlıkların nasıl kullanılacağını öğrenmek için Birleşik Üstbilgiler bölümüne bakın.
- GCC artık desteklenmiyor. NDK'dan henüz kaldırılmamıştır ancak artık geri alma almamaktadır. libc++ varsayılan değere yetecek kadar sabitleninceye kadar kaldırılamaz, çünkü king'in bazı kısımları Clang ile hâlâ uyumsuzdur.
- Android 2.3 (
android-9
) artık desteklenmiyor. NDK'deki minimum API düzeyi hedefi artık Android 4.0 (android-14
).APP_PLATFORM
ayarınızandroid-14
değerinden düşük bir değere ayarlanırsa bunun yerineandroid-14
kullanılır. - NDK'da CMake artık x86 ve x86-64 mimarilerinde çalışmak için YASM'de yazılmış montaj kodunu oluşturmayı destekliyor. Daha fazla bilgi için Derleme kodu oluşturma bölümüne bakın.
Not: Kullanımdan kaldırılan başlıklar, yakında kullanıma sunulacak bir sürümde kaldırılacaktır. Bu başlıklarla ilgili herhangi bir sorunla karşılaşırsanız lütfen bir hata bildirin.
Taşıma ile ilgili ipuçları için birleştirilmiş başlıkları taşıma notlarına bakın.
- API'ler
-
Android 8.0 için yerel API'ler eklendi. Bu API'ler hakkında daha fazla bilgi için Yerel API'lere genel bakış bölümünü inceleyin.
Bu sürümdeki yenilikler ve değişiklikler hakkında daha fazla bilgi edinmek için bu değişiklik günlüğünü inceleyin.
Android NDK r14b (Mart 2017)
Değişiklik günlüğü- İndirilenler
- Bu sürümün indirmelerini burada bulabilirsiniz.
- Duyurular
-
- Birleştirilmiş başlıklar: Bu sürüm, senkronize edilen ve her zaman Android platformuyla güncel ve doğru durumda kalan platform başlıklarını sunar. Yalnızca başlıkla ilgili hata düzeltmeleri artık tüm API düzeylerini etkiliyor. Birleştirilmiş başlıkların kullanıma sunulması, önceki NDK sürümlerindeki tutarsızlıkları düzeltir. Örneğin:
- M ve N başlıkları da aslında L başlığıydı.
- Üstbilgilerdeki işlev bildirimleri, platform düzeyleri ile doğru şekilde eşleşmiyordu. Başlıklar, mevcut olmayan işlevleri bildirmiş veya kullanılabilir işlevleri bildirememişti.
- Eski API düzeylerinin bazılarında, yeni API düzeylerinde eksik veya yanlış sabit değerler vardı.
Bu yeni birleştirilmiş üstbilgiler varsayılan olarak etkin değildir. Bu başlıkları nasıl etkinleştireceğinizi ve kullanacağınızı öğrenmek için Birleşik Başlıklar konusuna bakın.
- GCC'nin kullanımdan kaldırılması: Bu sürümde, etkin GCC desteği sona ermiştir. GCC, NDK'den henüz kaldırılmadı ancak artık geri alma almayacaktır. Gineg'in bazı kısımları Clang ile hâlâ uyumsuz olduğundan libc++ varsayılan olarak stabil hale gelene kadar GCC tamamen kaldırılmaz.
- Birleştirilmiş başlıklar: Bu sürüm, senkronize edilen ve her zaman Android platformuyla güncel ve doğru durumda kalan platform başlıklarını sunar. Yalnızca başlıkla ilgili hata düzeltmeleri artık tüm API düzeylerini etkiliyor. Birleştirilmiş başlıkların kullanıma sunulması, önceki NDK sürümlerindeki tutarsızlıkları düzeltir. Örneğin:
Bu sürümdeki yenilikler ve değişiklikler hakkında daha fazla bilgi edinmek için bu değişiklik günlüğünü inceleyin.
Android NDK r13b (Ekim 2016)
- İndirilenler
- Bu sürümün indirme işlemleri burada arşivlenir.
- Duyurular
-
- GCC artık desteklenmiyor. İçerik henüz NDK'den kaldırılmayacak ancak artık geri bildirim almıyor. libc++ varsayılan değer kadar yeterince kararlı hale gelene kadar kaldırılamaz, çünkü kingin bazı kısımları Clang ile hâlâ uyumsuzdur. Büyük ihtimalle bu noktadan sonra kaldırılır.
- Android için bir CPU profilcisi olan Simpleperf eklendi.
- R13b
-
-
Eksik
__cxa_bad_cast
için ek düzeltmeler.
-
Eksik
- 300
-
NDK_TOOLCHAIN_VERSION
artık Clang olarak ayarlanmış.- libc++ r263688 olarak güncellendi.
- Neredeyse temiz bir yukarı akış olarak sıfırlandık. Bu işlem çok sayıda hatayı kaldırır. Ancak varsayılan olarak önermeden önce libandroid_support öğesini temizlememiz gerekir.
-
make-standalone-toolchain.sh
, artık bu aracın Python sürümünde kullanılan bir sarmalayıcıdır. Birkaç davranış farkı vardır. Ayrıntılar için taahhüt mesajına bakın. - Desteklenmeyen ABI'lere yönelik bazı kitaplıklar (mips64r2, mips32r6, mips32r2 ve x32) kaldırıldı. Yine de bazı boğucular olabilir.
- crtbegin_static.o ile ilgili, ARM android-21+ için statik bir yürütülebilir bağlantı oluştururken çıkışta eksik çıkışla sonuçlanan sorunlar çözüldü: Sorun 132
- build/cmake/android.toolchain.cmake işlevine CMake araç zinciri dosyası eklendi.
- Bilinen Sorunlar
-
- Bunun, bekleyen tüm hataların kapsamlı bir listesi olması amaçlanmamıştır.
- libc++ ve GCC kullanan bağımsız araç zincirleri çalışmaz. Bu GCC'de bir hata gibi görünüyor. Daha fazla ayrıntı için taahhüt mesajına bakın.
- Marshmallow ve N için biyografik üstbilgiler ve kitaplıklar, android-24'ün varlığına rağmen henüz kullanıma sunulmamıştır. Bu platformlar hâlâ Lollipop başlıkları ve kitaplıklarıdır (r11'den bir regresyon değil).
- RenderScript araçları mevcut değil (r11'den bir regresyon değil): Sorun 7.
Android NDK r12b (Haziran 2016)
- İndirilenler
- Bu sürümün indirme işlemleri burada arşivlenmiştir.
- Duyurular
ndk-build
komutu varsayılan olarak r13'te Clang kullanır. GCC'yi sonraki bir sürümde kaldıracağız.make-standalone-toolchain.sh
komut dosyası r13'te kaldırılacak.make_standalone_toolchain.py
uygulamasının ihtiyaçlarınıza uygun olduğundan emin olun.- Sorunları GitHub'a bildirin.
ndk-gdb.py
hatasını düzelttik. (Sorun 118)-
NdkCameraMetadataTags.h
öğesini, artık geçersiz bir enum değeri içermeyecek şekilde güncelledik. - ndk-build etiketinde, libc++ kullanan statik kitaplıklar için yapay uyarılara neden olan bir hata düzeltildi. Bu değişiklik hakkında daha fazla bilgi için buradaki yorumlara göz atın.
- android-24 için OpenSLES başlıkları güncellendi.
- 300
- armeabi-v7a-hard ABI desteğini kaldırdık. Daha fazla bilgi için bu açıklamayı inceleyin.
- GB öncesi platform seviyeleri için tüm sistem kökleri kaldırıldı. 11. sürüm için kullanıcılarımıza destek vermeyi bıraktık ancak bunları kaldırmayı ihmal ettik.
- ARM32'de c++_shared ile ilgili istisna işleme süreci büyük oranda işe yarıyor. Sarmalayıcı artık libc++ yerine her bağlı nesneye bağlanacaktır. Bu istisnanın işlenmesi hakkında daha fazla bilgi için Bilinen Sorunlar konusuna bakın.
- Varsayılan derleyici işaretleri kısaltıldı.
(Sorun 27).
- Bu değişiklikler hakkında ayrıntılı bilgi için bu değişiklik listesine bakın.
- Bağımsız araç zincirlerinin Python uygulaması eklendi:
build/tools/make_standalone_toolchain.py
.- Windows kullanıcılarının artık bu özelliği kullanmak için Cygwin'e ihtiyacı yoktur.
- Sürüm 13'te armut arosunu kaldıracağız. Yeni türü 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ıklamayı iyileştirecektir.--build-id
artık varsayılan olarak etkin.- Derleme Kimliği artık yerel kilitlenme raporlarında gösterilecek. Böylece kodunuzun hangi sürümünün çalıştığını kolayca anlayabilirsiniz.
NDK_USE_CYGPATH
artık libgcc ile ilgili sorunlara neden olmamalıdır. (Android Sorun 195486)-Wl
,--warn-shared-textrel
ve-Wl,--fatal-warnings
seçenekleri artık varsayılan olarak etkin. Paylaşılan metin yer paylaşımlarınız varsa uygulamanız Android 6.0 (API düzeyi 23) veya sonraki sürümlere yüklenemez. 64 bit uygulamalarda metin yer değiştirmeye hiçbir zaman izin verilmemiştir.- Önceden derlenmiş başlıklar daha iyi çalışır. (14. Sayı ve 16. Sayı)
- Erişilemeyen ARM (başparmak olmayan) STL kitaplıkları kaldırıldı.
- Android-24'e Vulkan desteği eklendi.
- Choreographer API, Android 24'e eklendi.
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
veya daha yeni sürümlerin yüklü olduğu cihazlar içinlibcamera2
API'leri eklendi. Daha fazla bilgi için Kamera Özellikleri konusuna bakın.- Clang
- Clang, 3.8svn (r256229, derleme 2812033) olarak güncellendi.
- 32 bit Windows paketindeki
clang.exe
veclang++.exe
yürütülebilir dosyaları aslında 64 bittir. 32 bit yürütülebilir dosyaclang_32.exe
olarak adlandırılır.
- 32 bit Windows paketindeki
- GCC
- google/gcc-4_9 r227810 adresinde bulunan ChromeOS GCC ile senkronize edilmiştir.
- ToT'ten geriye doğru kapsama alan sterilite yaması (r231296).
- libatomik,
ifuncs
kullanmayacak şekilde düzeltildi. (Sorun 31) - Binutil'ler
- "Erratum 843419 bulundu ve düzeltildi" bilgi mesajlarının sesi kapatıldı.
- Dev Arm32 ikili programlarının bağlanması sırasında oluşan dahili bağlayıcı hatasını düzeltmek için
--long-plt
seçeneği sunuldu. - AArch64 için yanlış çalışma zamanı saplamaları düzeltildi. Bu, çok büyük DSO'lar için atlama adreslerinin yanlış hesaplanmasına neden oluyordu.
- Önceki Android sürümlerinde dinamik bağlantı bağlayıcı hatasını gidermek için varsayılan
--no-apply-dynamic
seçeneği sunuldu. dynamic_cast
için NDK r11 KI, Clang ile çalışmaz. x86,stlport_static
ve optimizasyon sorunlarını düzelttik.- GDB
- GDB 7.11 sürümüne güncellendi. Daha fazla bilgi için GDB Haberleri sayfasına bakın.
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 listesindeki tartışmaya bakın.
c++_shared
ile istisna çözme işlemi Android 2.3 (API düzeyi 9) veya Android 4.0 (API düzeyi 14) üzerinde ARM için yine de çalışmaz.- Android 6.0 (API düzeyi 23) ve Android 7.0 (API düzeyi 24) için biyolojik üstbilgiler ve kitaplıklar, android-24'ün mevcut olmasına rağmen henüz kullanıma sunulmamıştır. Bu platformlar hâlâ Android 5.0 (API düzeyi 21) üstbilgileri 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, tüm bekleyen hataların kapsamlı bir listesi olması amaçlanmamıştır.
__thread
, şu an için gerçek anlamda çalışır.
Android NDK r12 (Haziran 2016)
- İndirilenler
- Bu sürümün indirme işlemleri burada arşivlenmiştir.
- Duyurular
ndk-build
komutu, varsayılan olarak Clang'ı sonraki bir sürümde kullanacaktır. GCC, sonraki bir sürümde kaldırılacaktır.make-standalone-toolchain.sh
komut dosyası, gelecekteki bir sürümde kaldırılacak. Bu komut dosyasını kullanıyorsanız en kısa süredemake_standalone_toolchain.py
ürününe geçiş yapmayı planlayın.- 300
- armeabi-v7a-hard ABI desteği kaldırıldı. Belgelerdeki açıklamayı inceleyin.
- Android 2.3'ten (API düzeyi 9) önceki platform seviyeleri için tüm sistem kökleri kaldırıldı. NDK r11'de bu kuruluş için verdiğimiz desteği sona erdirmiştik ancak bunları kaldırmayı ihmal ettik.
- ARM32'de c++_shared kullanılırken yararlanılan istisna işleme yöntemi güncellendi (Bilinen Sorunlar bölümüne bakın). Sarmalayıcı artık libc++ yerine her bağlı nesneye bağlanmış durumda.
- Varsayılan derleyici işaretlerini kaldırdılar (NDK 27. Sayı). Bu güncellemenin ayrıntılarını Change 207721 sayfasında görebilirsiniz.
build/tools/make_standalone_toolchain.py
için bağımsız araç zincirlerinin Python uygulaması eklendi. Windows'da, bu özelliği kullanmak için artık Cygwin gerekli değildir. Bash aromasının yakında çıkacak bir sürümde kaldırılacağını unutmayın. Bu nedenle yeni çeşidi hemen test edin.- Clang hata ayıklama derlemeleri
-fno-limit-debug-info
seçeneğinin varsayılan olarak etkinleştirileceği şekilde yapılandırılmıştır. Bu değişiklik, LLDB ile daha iyi hata ayıklama sağlar. --build-id
varsayılan olarak etkinleştirildi. Bu seçenek, kodunuzun hangi sürümünün çalıştığını kolayca belirleyebilmeniz için tanımlayıcının yerel kilitlenme raporlarında gösterilmesine neden olur.NDK_USE_CYGPATH
ile ilgili sorun, libgcc ile ilgili sorunlara neden olmayacak şekilde düzeltildi (Sorun 195486).- Şu seçenekler varsayılan olarak etkinleştirildi:
-Wl,--warn-shared-textrel
ve-Wl,--fatal-warnings
. Paylaşılan metin yer paylaşımlarınız varsa uygulamanız Android 6.0 (API düzeyi 23) ve sonraki sürümlerde yüklenmez. 64 bit uygulamalarda bu yapılandırmaya hiçbir zaman izin verilmediğini unutmayın. - Önceden derlenen başlıkların daha iyi çalışması için birkaç sorun düzeltildi (NDK 14. Sayı, NDK 16. Sayı).
- Erişilemeyen ARM (başparmak olmayan) STL kitaplıkları kaldırıldı.
- Android-24'e Vulkan desteği eklendi.
- Choreographer API, Android 24'e eklendi.
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
özellik düzeyini veya daha sonraki sürümleri destekleyen cihazlar için libcamera2 API'leri eklendi. Daha fazla bilgi içinCameraCharacteristics
referansına bakın.- Clang
- Clang, 3.8svn (r256229, derleme 2812033) olarak güncellendi. 32 bit Windows paketindeki
clang.exe
veclang++.exe
yürütülebilir dosyaları aslında 64 bittir. 32 bit yürütülebilir dosyanın adıclang_32.exe
. - Bu sefer gerçek zamanlı çalışması için
__thread
düzeltildi. - GCC
- Derleyici, ChromeOS GCC'de @ google/gcc-4_9 r227810 ile senkronize edildi.
- ToT'ten geriye doğru kapsama alan sterilite yaması (r231296).
libatomic
, ifuncs kullanmayacak şekilde düzeltildi (NDK 31. Sayı).- Binutil'ler
- "Erratum 843419 bulundu ve düzeltildi" bilgi mesajlarının sesini kapattı.
- Devasa kolu 32 ikili programlarını bağlarken dahili bağlayıcı hatasını düzeltmek için
--long-plt
seçeneği sunuldu. AArch64
için yanlış çalışma zamanı sabitleri düzeltildi. Bu sorun, çok büyük dinamik paylaşılan nesneler (DSO'lar) için atlama adreslerinin yanlış hesaplanmasına neden oluyordu.- Daha önceki Android sürümlerinde dinamik bağlayıcı bağlayıcı hatasını çözmek için varsayılan seçenek olan
--no-apply-dynamic
kullanıma sunuldu. dynamic_cast
adlı kullanıcının Clang, x86, stlport_static ve optimizasyon ile çalışmadığı bilinen NDK r11 ile ilgili sorun düzeltildi.- GDB
- GDB 7.11 sürümüne güncellendi. Bu sürüm hakkında daha fazla bilgi için GDB News'a bakın.
ndk-gdb.py
komut dosyasındaki bir dizi hata düzeltildi.- Bilinen Sorunlar
- x86 Adres Temizleyici (ASAN) şu anda çalışmamaktadır. Daha fazla bilgi için Sorun 186276'ya bakın.
c++_shared
ile istisna çözme işlemi Android 2.3 (API düzeyi 9) veya Android 4.0 (API düzeyi 14) üzerinde ARM için çalışmaz.- Android 6.0 (API düzeyi 23) ve sonraki sürümler için biyonik üstbilgiler ve kitaplıklar, android-24'ün mevcut olmasına rağmen henüz kullanıma sunulmamıştır. Bu platformlarda hâlâ NDK r11 ile tutarlı olan Android 5.0 (API düzeyi 21) üstbilgileri ve kitaplıkları vardır.
- NDK r11 ile tutarlı olan RenderScript araçları mevcut değil. (NDK 7. Sayı)
NdkCameraMetadataTags.h
başlık dosyasında, kamera meta veri etiketiACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAP
değeri yanlışlıkla listelendi ve sonraki sürümde kaldırılacak. Bunun yerineACAMERA_STATISTICS_LENS_SHADING_MAP
değerini kullanın.
Android NDK r11c (Mart 2016)
- Değişiklikler
ndk-gdb.py
komut dosyasına ek düzeltmeler uygulandı.ndk-gdb
komutu--attach
seçeneğine isteğe bağlı bir paket adı bağımsız değişkeni eklendi. (Sorun 13)- 32 bit Windows platformu için geçersiz araç zinciri yolları düzeltildi. (Sorun 45)
ndk-which
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)
- 300
-
- Önemli duyurular
- Hata izleyicimizi GitHub'a taşıdık.
- Değişiklikler
ndk-gdb.py
sabit. r11'de tamamen geri çekildi.- Mac'te
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 sürümlerde hiç yoktu.
- libc++ için
__cxxabi_config.h
eksik olan bağımsız araç zincirleri düzeltildi. make-standalone-toolchain.sh
içinde--toolchain
için yardım dokümanları düzeltildi.
- Önemli duyurular
- Clang
-
- Erra
- Sürüm 11'deki Sürüm Notlarında bildirilenden farklı olarak
__thread
çalışmaz. Bunun nedeni, gönderdiğimiz Clang sürümünde emüle edilmiş TLS desteği için bir hata düzeltmesinin eksik olmasıdır.
Android NDK r11 (Mart 2016)
- Clang
-
- Önemli duyurular
- Clang'a geçmenizi önemle tavsiye ederiz.
- Clang ile ilgili sorun yaşıyorsanız NDK'da Clang ile ilgili sorunlar için hataları buradan bildirin. Daha genel Clang sorunları için bu sayfadaki talimatları uygulayarak hataları bildirin.
- Clang, 3.8svn (r243773, derleme 2481030) olarak güncellendi.
- Bu sürüm neredeyse tamamen yukarı akışlı bir Clang'dır.
- Windows 64 bit indirilebilir NDK paketinde Clang'ın 32 bit sürümü bulunur.
- Clang'a geçmenizi önemle tavsiye ederiz.
- Eklemeler
- Clang artık emülasyonlu TLS desteği sağlamaktadır.
- Derleyici, artık ELF TLS'yi ileti dizisi ileti dizisine özel verilerle emüle ederek
__thread
'i destekliyor. - C++11
thread_local
bazı durumlarda çalışır ancak önemsiz olmayan yıkıcılara sahip veriler için çalışmaz, çünkü bu durumlarda libc'den destek alınması gerekir. Bu sınırlama, Android 6.0 (API düzeyi 23) veya daha yeni sürümlerde çalışırken geçerli değildir. - Emülasyonlu TLS, TLS değişkenlerine paylaşılan bir kitaplıktan erişildiğinde Aarch64 ile henüz çalışmaz.
- Derleyici, artık ELF TLS'yi ileti dizisi ileti dizisine özel verilerle emüle ederek
- Clang artık emülasyonlu TLS desteği sağlamaktadır.
- Önemli duyurular
- GCC
-
- Önemli duyurular
- NDK'daki GCC, Clang yerine kullanımdan kaldırılmıştır.
- NDK ne 5.x sürümüne ne de kritik olmayan geri noktaları kabul edecektir.
- 4.9'da yanlış derlenenler ve dahili derleyici hatalarının bakımı, her durum için ayrı ayrı yapılır.
- Kaldırma işlemleri
- GCC 4.8 kaldırıldı. Artık tüm hedefler GCC 4.9'u kullanmaktadır.
- Diğer değişiklikler
- google/gcc-4_9 ile r224707 arasında senkronize edildi. Daha önce r214835 ile senkronize edilmişti.
- 300
-
- Önemli duyurular
- Örnekler artık NDK paketine dahil edilmedi. Bunun yerine GitHub'da kullanılabilir.
- Söz konusu belgeler artık NDK paketinde yer almıyor. Bunun yerine Android geliştirici web sitesinde bulunur.
- Eklemeler
android-23
için yerel izleme API'si eklendi.android-23
ürününe yerel çoklu ağ API'si eklendi.- API düzeyi 21'den itibaren, sürüm içeren simgeler sağlamak için libc, m ve dl etkinleştirildi.
- API düzeyi N'ye Vulkan üstbilgileri ve kitaplığı eklendi.
- Kaldırma işlemleri
_WCHAR_IS_8BIT
desteği kaldırıldı.- Ss kaldırıldı.
- Mclinker kaldırıldı.
- Perl kaldırıldı.
- NDK libc, m ve dl'nin tüm sürümlerinden kaldırılan bu lib'lerin platform sürümlerinden desteklenmemektedir.
- mips64r2 desteği kısmen kaldırıldı. Kalan kısımlar ileride kaldırılacaktır.
- Diğer değişiklikler
- ARM bağımsız araç zincirleri varsayılan olarak arm7 olarak değiştirildi.
-target
seçeneğiniarmv5te-linux-androideabi
olarak belirterek eski davranışı geri yükleyebilirsiniz.
- Derleme sistemi, platform dahil olmak üzere
-isystem
kullanacak şekilde değiştirildi.- Biyografinin artık uygulama derlemelerini bozmadığına dair uyarılar.
- Bir ikili program, gabi++ üzerinden istisnaları tetiklediğinde oluşan sorun düzeltildi. (Sorun 179410)
- libc++ ile ilgili ODR sorunlarını önlemek için libc++'ın satır içi ad alanı
std::__ndk1
olarak değiştirildi. - Tüm libc++ kitaplıkları artık libc++abi ile oluşturulmuştur.
- Varsayılan
APP_PLATFORM
, Zencefilli- Froyo ve daha eski sürümlerin artık desteklenmeyecek.
- ARM bağımsız araç zincirleri varsayılan olarak arm7 olarak değiştirildi.
- 64 bit için gabi++
_Unwind_Exception
yapısı güncellendi. - cpufeatures'a aşağıdaki özellikler eklendi:
- SSE4.1 ve SSE4.2'yi tespit edin.
- x86_64'te cpu özelliklerini algılama.
- libc+abi yukarı akış olarak güncellendi r231075.
byteswap.h
,endian.h
,sys/procfs.h
,sys/ucontext.h
,sys/user.h
veuchar.h
, ToT Bionic'ten güncellendi.sys/cdefs.h
tüm API düzeylerinde senkronize edildi.- Kol için
fegetenv and fesetenv
düzeltildi. - mips64 ve x86_64 için
crtend_*
olan uç uç boyutunu veya hizalamasını düzeltin.
- Önemli duyurular
- Binutil'ler
-
- Eklemeler
- Yeni bir seçenek eklendi:
--pic-veneer
.
- Yeni bir seçenek eklendi:
- Kaldırma işlemleri
- 32 bit Windows paketi artık ld.gold ifadesini içermiyor. Bunun yerine ld.gold'u 64 bit Windows paketinden alabilirsiniz.
- Değişiklikler
- Android ve ChromiumOS arasında birleştirilmiş ikili programlar kaynağı. Bu değişiklik hakkında daha fazla bilgi için buradaki yorumlara göz atın.
- aarch64 için Altının güvenilirliği iyileştirildi. bfd yerine altın kullanmak için bağlantı sırasında
-fuse-ld=gold
kullanın. Varsayılan değer bir sonraki sürümde büyük olasılıkla değiştirilir. - Altın ARM arka ucu için çok büyük ikili programlar için iyileştirilmiş bağlantı süresi (hata ayıklaması yapılabilecek Chrome Tarayıcı için% 50'ye kadar bağlantı süresi azaltma).
- Eklemeler
- GDB
-
- Kaldırma işlemleri
- ndk-gdb.py ifadesinin yerine ndk-gdb kaldırıldı.
- Değişiklikler
- Gdb sürüm 7.10 olarak güncellendi.
- Gelişmiş performans.
- Hata mesajları iyileştirildi.
- Göreli proje yolları düzeltildi.
- Ctrl-C'nin arka plandaki gdbsunucusunu sonlandırması durduruldu.
- İyileştirilmiş Windows desteği.
- Kaldırma işlemleri
- YASM
-
- Değişiklikler
- YASM, 1.3.0 sürümüne güncellendi.
- Değişiklikler
- Bilinen sorunlar
-
- x86 ASAN şu anda çalışmıyor. Daha fazla bilgi için buradaki tartışmaya göz atın.
- Clang, x86, stlport_static ve
-O0
değerinden yüksek optimizasyon düzeyleri,dynamic_cast
ile test hatalarına neden olur. Daha fazla bilgi için buradaki yorumları inceleyin. - İstisna durumu genellikle ARM32'de c++_shared ile başarısız olur. Bunun temel nedeni, libc++abi'nin ARM32 ve libgcc için kullandığı LLVM sarmalayıcı arasındaki uyumsuzluktur. Bu davranış, r10e kaynaklı bir regresyon değildir.
Android NDK r10e (Mayıs 2015)
- İndirilenler
- Bu sürümün indirme işlemleri burada arşivlenmiştir.
- Önemli değişiklikler:
-
- Cortex-A53 Erratum 843419 ile ilgili geçici çözüm,
aarch64-linux-android-4.9
bağlayıcısına entegre edildi. Bu geçici çözüm hakkında daha fazla bilgi için cortex-a53 erratum 843419 sorununu çözme bölümüne bakın. - Clang 3.6 eklendi;
NDK_TOOLCHAIN_VERSION=clang
artık varsayılan olarak Clang sürümünü seçiyor. - Clang 3.4 kaldırıldı.
- GCC 4.6 kaldırıldı.
- Tüm mimariler için
ld.gold
bölgesinde çoklu ileti dizisi desteği uygulandı. Artık çoklu ileti dizisi desteği olmadan veya bu bağlantı olmadan desteklenebilir. Varsayılan ayar olmadan bu işlemi yapmak mümkündür.- Birden çok iş parçacığı ile derlemek için
--threads
seçeneğini kullanın. - Birden çok iş parçacığı olmadan derleme yapmak için
--no-threads
seçeneğini kullanın.
- Birden çok iş parçacığı ile derlemek için
- Tüm mimariler için GDB/gdbserver 7.7'ye yükseltildi.
- Darwin'in NDK paketi kaldırıldı.
- Cortex-A53 Erratum 843419 ile ilgili geçici çözüm,
- Önemli hata düzeltmeleri:
-
- Ana iş parçacığının dışında OpenMP döngüleri olduğunda meydana gelen kilitlenme düzeltildi.
- Kullanıcı
#pragma GCC optimize ("O0")
öğesini bildirdiğinde, ancak komut satırında farklı bir optimizasyon düzeyi belirtildiğinde oluşan GCC 4.9 dahili derleyici hatası (ICE) düzeltildi.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ştirmenin ARM talimat grubunda eşdeğeri olmayan bir talimat
llvm.cttz.v2i64()
oluşturduğu Clang 3.5 sorunu için bir geçici çözüm uygulandı.
- Diğer hata düzeltmeleri:
-
- Aşağıdaki üstbilgi ve kitaplık düzeltmeleri yapıldı:
media/NdkMediaDrm.h
tarihindekiPROPERTY_*
düzeltildi.mips64
içinsys/ucontext.h
düzeltildi.__builtin_isnan
ve__builtin_isinf
için Clang sürüm kontrolü kaldırıldı.android-21/arch-mips/usr/include/asm/reg.h
veandroid-21/arch-mips64/usr/include/asm/reg.h
eklendi.- GCC 4.9'un x86 için ürettiği dizi dizisi sınırları uyarısı ve GCC 4.9'un ARM için oluşturduğu dizi sınırları uyarısını yeniden etkinleştirdi. ARM uyarısı, önceden koşulsuz olarak devre dışı bırakılmıştı.
mips
vemips64
için Clang 3.5 düzeltildi ve yazılabilir bir.gcc_except_table
bölümü oluşturuldu. Bu değişiklik, aşağıdaki bağlayıcı uyarısından kaçınmanızı sağlar:.../ld: warning: creating a DT_TEXTREL in a shared object
- Clang
mips64
için derlendiğinde kilitlenmeye neden olancompiler-rt
sorunu için düzeltme yapıldı. Daha fazla bilgi için LLVM Sorunu'na (20098) bakın. - ASCII olmayan yorumlarda oluşan Clang 3.5 kilitlenmeleri düzeltildi. (Sorun 81440)
stlport collate::compare
,-1
ve1
değerlerini döndürecek şekilde düzeltildi. Daha önce, rastgele imzalı numaralar döndürüyordu.- 64 bit ABI'lar için
ndk-gdb
düzeltildi. (Sorun 118300) - RenderScript için HelloComputeNDK örneğinin Android 4.4 (Android API düzeyi 19) üzerinde oluşturduğu kilitlenme düzeltildi. Daha fazla bilgi için bu sayfaya bakın.
- GCC için
libc++ __wrap_iter
düzeltildi. Daha fazla bilgi için LLVM Sorunu (22355) sayfasını inceleyin. - ABI
x86_64
için.asm
desteği düzeltildi. - GCC 4.8
stlport
sorunuyla ilgili bir geçici çözüm uygulanmıştır. (Sorun 127773) - Sondaki
\\
dizin ayırıcısı Windows'daki proje yolundan kaldırıldı. (Sorun 160584) gradle
öğesindenndk-build.cmd
komutunu yürüterek tek bir.c
dosyasını derlerken oluşanno rule to make target
hatası düzeltildi. (Sorun 66937)- Aşağıdaki ana makine araç zincirlerinde bulunmayan
libatomic.a
velibgomp.a
kitaplıkları eklendi:aarch64-linux-android-4.9
mips64el-linux-android-4.9
mipsel-linux-android-4.9
x86_64-4.9
- Diğer değişiklikler:
-
aarch64
içinld.gold
eklendi. Varsayılan bağlayıcıld.bfd
olarak kalır.ld.gold
öğesini açıkça etkinleştirmek içinLOCAL_LDFLAGS
veyaAPP_LDFLAGS
değişkenine-fuse-ld=gold
ekleyin.- RIP desteğini iyileştiren
binutils-2.25
sayesinde MIPS ve MIPS64 araç zincirleri geliştirildi. -fstandalone-debug
(tam hata ayıklama bilgileri) Clang için varsayılan bir seçenek oldu.- GCC 4.9, Clang 3.5 ve Clang 3.6 için
-fstack-protector
, ARMh, AArch64, X86 ve X86_64 araç zincirleri için-fstack-protector-strong
ile değiştirildi. - Derleme sisteminin paket adını geçersiz kılmasına izin vermek için
--package
komut satırı anahtarındk-gdb
konumuna eklendi. (Sorun 56189) - MIPS için
-mno-ldc1-stc1
desteği sonlandırıldı. Bu seçenek, yeni-fpxx
ve-mno-odd-spreg
seçenekleriyle veya FPXX ABI ile çalışmayabilir. - MIPS MSA ve R6 algılama
cpu-features
listesine eklendi.
Android NDK r10d (Aralık 2014)
- Önemli değişiklikler:
-
- GCC 4.8, tüm 32 bit ABI'lar için varsayılan olarak ayarlanır. GCC 4.6 kullanımdan kaldırılmıştır ve bir sonraki sürümde kaldırılacaktır. Önceki davranışı geri yüklemek için ndk-build öğesine
NDK_TOOLCHAIN_VERSION=4.6
ekleyin veya komut satırınamake-standalone-toolchain.sh
yürütürken--toolchain=arm-linux-androideabi-4.6
ekleyin. GCC 4.9, 64 bit ABI'lar için varsayılan olarak kalır. - x86[_64] araç zincirlerinin varsayılan olarak
-mstackrealign
eklemesi durduruldu. NDK araç zinciri, 16 baytlık bir yığın hizalamasını varsayar. Varsayılan olarak kullanılan araçlar ve seçenekler bu kuralı uygular. Montaj kodunu yazan bir kullanıcı, yığın hizalamasını korumalı ve diğer derleyicilerin de bu kurala uygun olmasını sağlamalıdır. (GCC hatası 38496) - ARM ve x86 ABI'ya Clang 3.5 desteğine Adres Temizleyici işlevi eklendi. Bu değişiklik hakkında daha fazla bilgi için Adres Temizleyici projesine bakın.
- API düzeyi 21'den başlayarak, derleme sırasında
-fPIE -pie
kullanma şartı getirildi. ndk-build API 16 ve sonraki sürümlerde derleme sırasındaPIE
kullanır. Bu değişikliğin birçok sonucu vardır. Bu durum, Geliştirici Önizlemesi Sorunu 888'de açıklanmaktadır. Bu sonuçlar, paylaşılan kitaplıklar için geçerli değildir.
- GCC 4.8, tüm 32 bit ABI'lar için varsayılan olarak ayarlanır. GCC 4.6 kullanımdan kaldırılmıştır ve bir sonraki sürümde kaldırılacaktır. Önceki davranışı geri yüklemek için ndk-build öğesine
- Önemli hata düzeltmeleri:
-
- aarch64-linux-android-4.9 bağlayıcıda
A53 Errata #835769 ile ilgili daha fazla düzeltme yapıldı. Bunun bir parçası olarak GCC,
-mfix-cortex-a53-835769
(varsayılan olarak etkindir) belirtildiğinde yeni bir seçeneği (--fix-cortex-a53-835769
) aktarır. Daha fazla bilgi için bu binutils mesajını ve bu binutils mesajını inceleyin. - API düzeyinde 21'de meydana gelen libc++
sscanf/vsscanf
sabitleme sorunu düzeltildi. Düzeltme, r10c sürümünde uygulanmıştır. (Sorun 77988) -Os
belirtildiğinde GCC 4.9 ile gerçekleşen bir AutoFDO (-fauto-profile
) kilitlenmesi düzeltildi. (Sorun 77571)
- aarch64-linux-android-4.9 bağlayıcıda
A53 Errata #835769 ile ilgili daha fazla düzeltme yapıldı. Bunun bir parçası olarak GCC,
- Diğer hata düzeltmeleri:
-
- Aşağıdaki üstbilgi ve kitaplık düzeltmeleri yapıldı:
posix_memalign
, API düzeyi 16'ya eklendi. Ayrıcastdlib.h
platformuna 16-19 API düzeylerinde bir prototip ekledi. (Sorun 77861)stdatomic.h
, yalnızca C++11 için<atomic>
içerecek şekilde düzeltildi.- Bağımsız kullanım için şu başlıklar değiştirildi:
sys/user.h
ve API 21 düzeyi içingl2ext.h
,dlext.h
,fts.h
,sgidefs.h
. sys/user.h
,mxcsr_mask
olarak yeniden adlandırılıpu_ar0
veri türünü değiştirmek için değiştirildimxcr_mask
user_regs_struct* yapılandırmak için int
olansysconf()
iade değeri türü,long
olarak değiştirildi.- ndk-build'ün
LOCAL_ARM_MODE
içinthumb
kullanımı düzeltildi: r10d'de aşağıdaki koşullardan biri geçerli olmadığı sürece ndk-build varsayılan olarakLOCAL_LDFLAGS+=-mthumb
değerini ekler: LOCAL_ARM_MODE
değeriniarm
olarak ayarladınız.- Önceki araç zincirleriyle uyumluluğu korumak için ARM modu, varsayılan olarak
android:debuggable="true"
veAPP_OPTIM=debug
gibi ayarları içeren bir hata ayıklama derlemesi yapıyorsunuz.AndroidManifest.xml
(Sorun 74040) - nk-build etiketi içinde, Windows mutlak yollarının kullanılması için
LOCAL_SRC_FILES
düzeltildi. (Sorun 74333) - ndk-gdb'den bash'a özel kod kaldırıldı. (Sorun 73338)
- Bash'e özel kod
make-standalone-toolchain.sh
öğesinden kaldırıldı. (Sorun 74145) System.loadLibrary()
geçişli bağımlılığın düzeltilmesiyle ilgili dokümanlar düzeltildi. (Sorun 41790)- Ubuntu 14.04 ve OS X 10.10'da (Yosemite) 64 bit paketlerin çıkarılmasını engelleyen bir sorun düzeltildi. (Sorun 78148)
- Clang desteğini iyileştirmek için
LOCAL_PCH
ile ilgili sorun düzeltildi. (Sorun 77575) - ld.gold, "Çalıştırılabilir yığın gerektirir" uyarısına açıklık getirdi. (Sorun 79115)
unsigned long
kullanın.
Android NDK r10c (Ekim 2014)
- Önemli değişiklikler:
-
- İndirme işleminde aşağıdaki değişiklikler yapıldı:
- Her paket artık kendi platformu için hem 32 bit hem de 64 bit başlıkları, kitaplıkları ve araçları içerir.
- Hata ayıklama bilgilerini içeren STL kitaplıklarının artık ayrı olarak indirilmesi gerekmiyor.
- Daha önce
Android-L
adını taşıyan her şey resmi sürüm tanımı olarak değiştirildi:android-21
. - GCC deposunun
google
şubesine yeniden oluşturarak GCC 4.9 güncellendi. GCC 4.9'un yayın öncesi sürümünden önemli farklılıklar şunlardır: -O2
seçeneği artık döngü inceleme olmadan, agresif geri döndürme ile vektörleştirmeyi açıyor.- FDO ve LIPO geliştirmeleri
- Tüm ana makinelere Clang 3.5 desteği eklendi:
NDK_TOOLCHAIN_VERSION=clang
şimdi Clang 3.5'i seçiyor. Unutmayın: - ARM ve x86, varsayılan olarak entegre derleyiciyi kullanır. Bu durum soruna neden oluyorsa geçici çözüm olarak
-fno-integrated-as
kullanın. - Clang 3.5, kullanılmayan işaretler için GCC'nin desteklediği
-finline-functions
seçeneği gibi daha fazla uyarı gösterir. - Bir Android 5.0 cihazında hata ayıklama işlemi sırasında sanal makine olarak ART kullanılarak ART hata ayıklama moduna geçilmesini sağlamak için
art-on
seçeneği belirlendi. Daha fazla bilgi için NDK içeren dizindekiprebuilt/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ılmıştır ve gelecekteki sürümlerden kaldırılabilir.
- mclinker, 2,8 olarak güncellendi ve aynı Kod Katlama ("ICF") desteği sağlandı.
--icf
seçeneğini kullanarak ICF'yi belirtin. - x86 ve x86_64 dillerinde
arm_neon.h
desteği genişletildi ve NEON gerçeklerinin yaklaşık% 93'ü kapsama alındı. NEON desteği hakkında daha fazla bilgi için:- NDK Programlama Kılavuzu'na (
docs/Programmers_Guide/html/
) giderek Mimari ve CPU > Neon bölümüne bakın. samples/
uygulamasındaki güncellenmişhello-neon
örneğini inceleyin.- Intel'in ARM NEON'dan Intel SSE'ye taşıma kılavuzunu inceleyin.
- NDK Programlama Kılavuzu'na (
headers/libs/android-21
içinde_FORTIFY_SOURCE
için desteklenen destek, r10'da görünüyordu (android-21
hâlâAndroid-L
olarak adlandırıldığında), ancak doküman içermiyordu.
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, kullanılmayan işaretleri uzun vadede ne yapacağına karar verene kadar yoksaymak için
-Wno-invalid-command-line-argument
ve-Wno-unused-command-line-argument
kullanabilirsiniz. - Önemli hata düzeltmeleri:
-
- GCC4.9/aarch64 ile ilgili aşağıdaki hata mesajına neden olan dahili bir derleyici hatası düzeltildi (Sorun 77564):
internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
- GCC4.9/koldan yanlış kod oluşturma sorunu düzeltildi. (Sorun 77567)
- Satır içi derleme içeren GCC4.9/mix'ler ile ilgili dahili bir derleyici hatası düzeltildi. (Sorun 77568)
- GCC4.9/Arm'ın
x = (cond) ? y : x
için oluşturduğu yanlış kod düzeltildi. (Sorun 77569)- GCC4.9/aarch64 ve Clang3.5/aarch64'ün varsayılan olarak Cortex-A53 operatöründe (835769) çalışması sağlanır.
-mno-fix-cortex-a53-835769
belirterek geçici çözümü devre dışı bırakın. - 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ı eklendi:
android/keycodes.h
android/sensor.h
koleksiyonuna daha fazla sabit değer ve altı yeni sensör işlevi eklendi:ASensorManager_getDefaultSensorEx
,ASensor_getFifoMaxEventCount
,ASensor_getFifoReservedEventCount
,ASensor_getStringType
,ASensor_getReportingMode
veASensor_isWakeUpSensor
.- GCC 4.6 ile uyumluluğu iyileştirmek ve
<atomic>
üstbilgisi için destek sağlamak üzerestdatomic.h
düzeltildi. sys/ucontext.h
vesys/user.h
tüm API düzeylerine eklendi.signal.h
başlığı artık<sys/ucontext.h>
içeriyor. Mevcutstruct ucontext
tanımlarını kaldırabilirsiniz.posix_memalign
, API seviyeleri 17, 18 ve 19'a eklendi.- Şu işlevler tüm mimarilere eklendi:
android_set_abort_message
,posix_fadvise
,posix_fadvise64
,pthread_gettid_np
. native-media/AndroidManifest.xml
örneğine gerekli izinler eklendi. (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
,__sread
, ._fwalk
__sglue
__get_thread
__wait4
__futex_wake
__open
__get_tls
__getdents64
dlmalloc
- Şu işlevler 64 bit mimarilerden kaldırıldı:
basename_r
,dirname_r
,__isthreaded
,_flush_cache
(mip64). - Aşağıdaki işlev 32 bit mimarilerden kaldırıldı:
__signalfd4
. - Şu işlevlerde
size_t
olan üçüncü bağımsız değişkenin türüint
olarak değiştirildi:strtoll_l
,strtoull_l
,wcstoll_l
vewcstoull_l
. - Şu işlevler 64 bit mimariye geri yüklendi:
arc4random
,arc4random_buf
vearc4random_uniform
. cxa_*
venew
iledelete
operatörleri tekrarlibstdc++.so
klasörüne taşındı. Bu değişiklik r9d davranışını geri yükler; r10'un önceki sürümleri yer tutucu dosyalar içerir.
- Daha fazla TV anahtarı eklendi:
- Mikrofonlar için GCC 4.8 ve 4.9 sürümlerinde MXU desteği geri yüklendi. GCC'nin bu sürümleri MXU'yu desteklemeyen binutils-2.24 ile derlenmiş olduğundan bu destek r10 ve r10b'den yoktu. Artık destekleniyor.
make-standalone-toolchain.sh
içindeki--toolchain=
özelliği artık Clang sürümünü belirten bir son ekin kullanımını düzgün şekilde destekleyecek şekilde düzeltildi.- libc++/armeabi
strtod()
işlevleri düzeltildi. docs/
içindeki NDK dokümanlarında düzeltmeler yapıldı.
- Diğer değişiklikler:
-
cpu-features
, şu talimat grupları için ARMv8 desteğini algılamak üzere gelişmiştir: AES, CRC32, SHA2, SHA1 ve 64 bit PMULL/PMULL2. (Sorun 106360)- ndk-build etiketi GCC 4.8, GCC 4.9 ve Clang'da kullanılabilen
*-gcc-ar
kullanacak şekilde değiştirildi. Clang,*-ar
yerine bunu belirtir. Bu ayar, gelişmiş LTO desteği sunar. include-fixed/linux/a.out.h
veinclude-fixed/linux/compiler.h
başlıkları GCC derleyiciden kaldırıldı. (Sorun 73728)- Mac OS X'te GCC 4.8 ile ilgili
-flto
sorunu düzeltildi. Hata mesajı şu şekildedir:
.../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so Symbol not found: _environ
build-binary.mk.
yazım hatası düzeltildi (Sorun 76992) - Bilinen önemli sorunlar:
-
- GCC4.9'da -O'ların (
-fauto-profile
) belirtilmesi kilitlenmeye neden olabilir. (Sorun 77571)
- GCC4.9'da -O'ların (
Android NDK r10b (Eylül 2014)
- Önemli notlar:
-
- Aşağıdaki 32 bit öğeler, indirilebilir paketlerdeki 512 MB boyut kısıtlaması nedeniyle 32 bit NDK indirme paketlerinde yer almamaktadır. Bunun yerine 64 bit'te bulunurlar:
- Android-L başlıkları
- GCC 4,9
- Şu anda NDK tarafından sağlanan tek Renderscript desteği, Android 4.4 (API düzeyi 19) ile 32 bit Renderscript içindir. Diğer Renderscript (32 veya 64 bit) ve Android sürümünün herhangi bir kombinasyonuyla HelloComputeNDK (tek Renderscript örneği) oluşturamazsınız.
- Yerel kodlamayı derlemek için 64 bit NDK paketi kullanmanız gerekir. Pakette tüm Android-L üstbilgileri yer alır.
- Önemli hata düzeltmeleri:
- Diğer hata düzeltmeleri:
-
stdio.h
, GCC'nin tüm sürümlerinininclude-fixed/
dizinlerinden kaldırıldı. (Sorun 73728.)- Yinelenen dizin dosyaları
platforms/android-L/arch-*/usr/include/linux/netfilter*/
dizinlerindeki Windows paketlerinden kaldırıldı. (Sorun 73704.) - Clang'ın HelloComputeNDK oluşturmasını engelleyen sorun düzeltildi.
- Atexit düzeltildi. (Sorun 66595.)
docs/
vesources/third_party/googletest/README.NDK
dokümanlarında dokümanlarda çeşitli düzeltmeler yapıldı. (Sorun 74069.)- Android-L başlıklarında aşağıdaki düzeltmeler yapıldı:
- Şu işlevler eklendi:
ctype.h
vewchar.h
:dn_expand()
,grantpt()
,inet_nsap_addr()
,inet_nsap_ntoa()
,insque()
,nsdispatch()
,posix_openpt()
,__pthread_cleanup_pop()
,__pthread_cleanup_push()
,remque()
,setfsgid()
,setfsuid()
,splice()
,tee()
,twalk()
(Sorun 73719) ve 42 .*_l()
cmsg_nxthdr
,__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
grubundakiandroid_dlextinfo
uzatıldı.stdlib.h
,time.h
,wchar.h
vecomplex.h
için kayan veya çift türlü değerler alan ya da döndüren işlevler için__NDK_FPABI__
olarak ek açıklama eklenir.
- Diğer değişiklikler:
-
mipsel-linux-android-4.9
vemips64el-linux-android-4.9
güncellendi, yeni bir çoklu libre dizin düzeni uygulandı ve gdb-7.7 desteği sağlandı- Daha fazla Arm64 özelliği tespit etmek için
cpu-features
geliştirildi. (100339 listesini değiştirin.)
Android NDK r10 (Temmuz 2014)
- Önemli değişiklikler:
-
- 64 bit için 3 yeni ABI eklendi: arm64-v8a, x86_64, mips64. Unutmayın:
- GCC 4.9, 64 bit ABI'lar için varsayılan derleyicidir. Clang şu anda 3.4 sürümüdür.
NDK_TOOLCHAIN_VERSION=clang
, arm64-v8a ve mips64 için çalışmayabilir. - Android-L, 64 bit desteğine sahip ilk düzeydir. Bu API düzeyinin geçici olduğunu ve yalnızca L önizleme için geçerli olduğunu unutmayın. Bunun yerine L sürümünde yeni bir API düzeyi numarası kullanılır.
- Bu sürüm artık
APP_ABI
içinall32
veall64
ayarlarını içeriyor.APP_ABI=all32
,APP_ABI=armeabi,armeabi-v7a,x86,mips
değerine eş değerdir.APP_ABI=all64
,APP_ABI=arm64-v8a,x86_64,mips64
değerine eş değerdir.APP_ABI=all
tüm ABI'ları seçer.
- Android-L'deki yeni GNU libstdc++ şunları içerir:
<tr1/cmath>
Kendi matematik fonksiyonunuzu tanımlamadan önce, bağlayıcıdan "birden fazla tanım" hataları oluşmaması için bu ada sahip bir fonksiyon olup olmadığını görmek amacıyla_GLIBCXX_USE_C99_MATH_TR1
işlevini kontrol edin. - CPU-özellik kitaplığı, ARMv8 çekirdeği için güncellendi. Mevcut CPU özellikleri kitaplığı, ARMv8 platformunda NEON'un varlığını algılayamayabilir. Kodunuzu yeni sürümle yeniden derleyin.
- Yeni bir
platforms/android-L/
API dizini eklendi. Şunları içermektedir: - Android API düzeyi 3'ten (Cupcake) 19 (KitKat) olarak değiştirilmemiş Biyonik başlıklar güncellendi. L düzeyi için bu yeni sürüm AOSP ile senkronize edilecek.
- Yeni medya API'leri ve yerel codec'ler örneği.
- SLES/OpenSLES için güncellenmiş bir
Android.h
başlığı, AudioPlayer'da tek hassasiyetli, kayan noktalı ses biçimi desteğini etkinleştirir. - GLES 3.1 ve AEP uzantıları,
libGLESv3.so.
- GLES2 ve GLES3 üstbilgileri, en son resmi Khronos sürümlerine güncellendi.
- 32//64 bit ABI'lara GCC 4.9 derleyicileri eklendi. GCC 4.9, daha önce de belirtildiği gibi 64 bit ABI'ler için varsayılan (yalnızca) derleyicidir. 32 bit ABI'lar için GCC 4.6 hâlâ varsayılan olduğundan, GCC 4.9'u açık bir şekilde etkinleştirmeniz gerekir.
- ndk-build için
NDK_TOOLCHAIN_VERSION=4.9
özelliğiniApplication.mk
öğesine ekleyerek veya komut satırından ortam değişkeni olarak dışa aktararak 32 bit GCC 4.9 derlemesini etkinleştirin. - Bağımsız bir araç zinciri için
make-standalone-toolchain.sh
komut dosyasındaki--toolchain=
seçeneğini kullanın. Örneğin:--toolchain=arm-linux-androideabi-4.9.
- GCC 4.8/4.9 ve x86'da* 7.6 sürümüne yükseltildi. GDB, GCC 4.6'da (ARM ve MIPS için varsayılan) hâlâ GDB-7.3.x sürümünde olduğundan ndk-gdb'nin GDB 7.6'yı seçebilmesi için
NDK_TOOLCHAIN_VERSION=4.8
veya4.9
ayarlanmalıdır. - SSSE3 desteği sağlamak için
-mssse3
derleme seçeneği eklendi ve bu seçenek, ABI x86 için varsayılan hale getirildi (SSE3'ten yükseltme). Google tarafından yayınlanan resim, SSSE3 talimatlarını içermiyor. - GCC 4.8, 4.8.3 olarak güncellendi.
- gabi++ yerine libc++abi'ye geçerek ARM libc++ EH desteği iyileştirildi. Ayrıntılı bilgi için dokümanların "C++ Desteği" bölümüne bakın. Unutmayın:
- Yerel ayar dışında tüm testler artık Clang 3.4 ve GCC 4.8 için başarılı olmaktadır. Daha fazla bilgi için dokümanların "C++ Desteği" bölümüne bakın.
- X86 ve MIPS libc++ için libc++ kitaplıkları gabi++ kullanmaya devam eder.
- GCC 4.7 ve sonraki sürümlerde <atomic> kullanılabilir.
__list_imp::_end
_ TBAA kurallarını çiğnediğinden<list>
kullanıyorsanız-fno-strict-aliasing
eklemeniz gerekir. (Sorun 61571.)- GCC 4.6 itibarıyla LIBCXX_FORCE_REBUILD:=true artık libc++ sürümünü yeniden oluşturmamaktadır. Uygulamayı yeniden oluşturmak için farklı bir derleyici kullanılması gerekir. Clang 3.3'ün test edilmediğini unutmayın.
- mclinker artık 2.7 sürümü ve aarch64 Linux desteğine sahip.
LOCAL_PCH
tarafından belirtilen başlıklar için önceden derlenmiş başlık desteği eklendi. (Sorun 25412).
- Önemli hata düzeltmeleri:
-
- libc++ hatasını
std::feof
vb. artık derleyecektir. (Sorun 66668). - ABI armeabi için libc++ testlerinden bazılarında kilitlenmelere neden olan Clang 3.3/3.4 atom kitaplığı çağrısı düzeltildi.
- Önceden derlenmiş başlıkların okunmasıyla ilgili Clang 3.4 kilitlenmeleri düzeltildi. (Sorun 66657).
- Clang 3.3/3.4
-O3
hak talebi aşağıdaki tarihte 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++ hatasını
- Diğer hata düzeltmeleri:
-
- Sabit üstbilgiler:
- 32 bit
ssize_t
,long int
yerineint
olacak şekilde düzeltildi. WCHAR_MIN
veWCHAR_MAX
öğeleri, üzerinde çalıştıkları mimariye uygun şekilde uygun tabelalar alabilecek şekilde düzeltildi:- X86/MIPS: imzalandı.
- ARM: imzasız.
- X86/MIPS'yi varsayılan olarak imzasız olmaya zorlamak için
-D__WCHAR_UNSIGNED__
özelliğini kullanın. wchar_t
eklentisini 16 bit olmaya zorlamak için-fshort-wchar
özelliğini kullanın.- Mevcut olmayan simgeler 32 bit
libc.so
sürümünden kaldırıldı ve Android API düzeyi 12 ve üstü içinpread64
,pwrite64
veftruncate64
eklendi. (Sorun 69319). Daha fazla bilgi için 94137 numaralı AOSP değişiklik listesine eşlik eden kaydetme iletisine bakın. putchar
ürününün yeniden tanımlanmasıyla ilgili GCC uyarısı düzeltildi. Uyarı mesajının mesajı:make-standalone-toolchain.sh --stl=libc++
sabitlendi. Böylece:cxxabi.h
kopyalar. (Sorun 68001).- NDK yükleme dizini dışındaki dizinlerde çalışır. (67690 ve 68647 sayıları).
- GCC/Windows'un, harici programlarda yalnızca oluşturma işlemleri için gerekli olduğu durumlarda bağımsız değişkenleri belirtmesi düzeltildi. Bu değişiklik, 32K uzunluk sınırını aşma olasılığını azaltır.
APP_PLATFORM
ortam değişkeninin ayarlanmasını imkansız hale getiren bir sorun düzeltildi.- crazy_linker'da, kitaplık yolunun gerçek temel adını bulmak için
strchr()
yerinestrrchr()
kullanacak şekildeIsSystemLibrary()
'nin uygulanması düzeltildi. - Yerel sesin hata ayıklama modunda geliştirilememesi düzeltildi.
- Gdb'nin uçan kayan nokta sayılarını yazdıramaması sorunu düzeltildi. (Sorun 69203).
- Clang 3.4'ün
-Wl,-shared
ile derleme yapamaması düzeltildi (derleme sorunu olmayan-shared
yerine). Sorun, Clang'ın-shared
veya-static
olmaması durumunda Android hedefleri için-pie
öğesini eklemesiydi. Bu hatalı bir davranış, bağlayıcıdan-shared
ve-pie
adlı kişilerin birlikte var olamayacağına dair şikayette bulunmasına neden oldu.
include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int);
(Listeyi 91185 değiştirin). - Diğer değişiklikler:
-
- x86 araç zincirine artık
arm_neon.h
ekleyerek neon'un yaklaşık% 47'sini taklit ediyor. Şu anda 64 bit türleri için destek yoktur. Daha fazla bilgi için x86 dokümanlarındaki ARM Neon yerleşik destek bölümü bölümünü inceleyin. - ARM/GOT_PREL optimizasyonu (GCC google şubesinden oluşturulan GCC 4.6'da mevcuttur)
ARM GCC 4.8/4.9'a taşınmıştır. Bu optimizasyon, bazen global değişkenlere erişirken talimat sayısını azaltır. Örneğin,
$NDK/tests/build/b14811006-GOT_PREL-optimization/
içindeki build.sh komut dosyasına göz atın. - STL gabi++, stlport ve libc++ için ARM sürümü eklendi. Artık hem ADO hem de Thumb moduna sahip.
- Artık
--toolchain=x86_64-4.9
- stand-oneal-toolchain.sh komut dosyasını--toolchain=x86_64-4.9
ile eşdeğer olan--toolchain=x86_64-4.9
ile çağırabilirsiniz.--toolchain=x86_64-linux-android-4.9
- x86 araç zincirine artık
Android NDK r9d (Mart 2014)
- Önemli değişiklikler:
-
- Clang 3.4 derleyicisi için destek eklendi.
NDK_TOOLCHAIN_VERSION=clang
seçeneğinde artık Clang 3.4 seçiliyor. GCC 4.6 hâlâ varsayılan derleyicidir. - Ek çoklu
APP_ABI=armeabi-v7a-hard
seçenekliAPP_ABI=armeabi-v7a-hard
eklendi.-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 libreleri kullanır) ile kullanılır. 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çenekleri ekleyin:TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1 TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
Oluşturulan kitaplık,libs/armeabi-v7a
konumuna kopyalanır. Beklendiği gibi davranmak için hemarmeabi-v7a
hem dearmeabi-v7a-hard
öğesini hedef olarak belirtemezsiniz (yani APP_ABI= satırında). Aksi takdirde içlerinden biri yok sayılır.APP_ABI=all
değerinin hâlâarmeabi armeabi-v7a x86 mips
ile eşdeğer olduğunu unutmayın. make-standalone-toolchain.sh
komut dosyası/hard
dizin altındaki ek literaları kopyalar. GCC veya Clang'i/hard
içerisindeki kitaplıklara bağlamak için yukarıdakiCFLAGS
veLFLAGS
dosyalarını hale getirin.- Yasm derleyicinin yanı sıra x86 hedefleri için
LOCAL_ASMFLAGS
veEXPORT_ASMFLAGS
işaretleri eklendi.ndk-build
komut dosyası,.asm
uzantısına sahipLOCAL_SRC_FILES
oluşturmak içinprebuilts/*/bin/yasm*
özelliğini kullanır. - MClinker, 2.6.0 sürümüne güncellenerek
-gc-sections
desteği eklendi. - Deneysel libc++ desteği eklendi (yayın öncesi r201101). Aşağıdaki adımları uygulayarak bu yeni özelliği kullanın:
Application.mk
içinAPP_STL := c++_static
veyaAPP_STL := c++_shared
ekleyin. KaynaktanLIBCXX_FORCE_REBUILD := true
aracılığıyla yeniden oluşturabilirsiniz- libc++/libt ile bağımsız bir araç zinciri oluşturmak için
make-standalone-toolchain.sh --stl=libc++
çalıştırın.
CPLUSPLUS-SUPPORT.html
adresini ziyaret edin. (Sorun 36496)
- Clang 3.4 derleyicisi için destek eklendi.
- Önemli hata düzeltmeleri:
-
- GCC 4.6/4.8 ARM EABI için beklenmeyen bir istisna işleyiciden yakalanmayan bir hata düzeltildi. (GCC Sorunu 59392)
- GCC 4.8 düzeltildi ve artık bağımlı olmayan, türde olmayan bir şablon bağımsız değişkeniyle bir şablonun kısmi uzmanlığı doğru şekilde çözülebilir. (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 bağlantısı düzeltildi
event_getmsg_helper
. - RenderScript NDK araç zincirindeki eski cihazlar arasında uyumluluk sorunları ve C++ yansıma dahil çok sayıda sorun düzeltildi.
- Diğer hata düzeltmeleri:
-
- Başlık düzeltmeleri:
- Android API düzeyi 13 ve üstü için
android/asset_manager.h
içindeki eksik#include <sys/types.h>
düzeltildi. (Sorun 64988) - Android API düzeyi 14 ve üstü için
android/rect_manager.h
içindeki eksik#include
düzeltildi. JNICALL
,JNI_OnLoad
koleksiyonuna veJNI_OnUnload
adlı komut dosyasınınjni.h
adlı uygulamasına eklendi.JNICALL
,__NDK_FPABI__
olarak tanımlanır. Daha fazla bilgi için bkz.sys/cdefs.h
.- Aşağıdaki başlıklar, bağımlılıklarını manuel olarak eklemelerine gerek kalmadan eklenebilmeleri için güncellendi (Sorun 64679):
android/tts.h EGL/eglext.h fts.h GLES/glext.h GLES2/gl2ext.h OMXAL/OpenMAXSL_Android.h SLES/OpenSLES_Android.h sys/prctl.h sys/utime.h
- Android API düzeyi 13 ve üstü için
- Tüm mimariler için
sys/cachectl.h
eklendi. MIPS geliştiricileri artık bu başlığı#ifdef __mips__
yazmak yerine ekleyebilir. - Kayan veya çift değerler alan veya döndüren işlevlere
__NDK_FPABI__
ekleyerekplatforms/android-18/include/android/input.h
düzeltildi. - Android API düzeyi 12 ve sonraki sürümleri için yanlış şekilde 64 bit'e eşdeğer olan MIPS
struct stat
düzeltildi. Bu yanlış ayar, r9c sürümünde kullanıma sunulan bir regresyondur. - Android API düzeyi 9 ve önceki sürümler için
__PTHREAD_MUTEX_INIT_VALUE
,__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE
ve__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE
tanımlandı. scalbln
,scalblnf
vescalblnl
, 18 ve sonraki API'ler için x86libm.so
sürümüne eklendi.sources/android/support/include/iconv.h
içindeki bir yazım hatası düzeltildi. (Sorun 63806)
- gabi++
std::unexpected()
işlevininstd::terminate()
öğesini çağırması için düzeltildi. Böylece kullanıcı tanımlıstd::terminate()
işleyicisi çalışma fırsatına sahip oldu.- gabi++ parametresini
std::nullptr
yakalamak için düzeltildi.- Çaydanlık ve Diğer Çaydanlıklar için sabit örnekler:
- Belirli değişkenleri orta hassasiyet kullanacak şekilde değiştirerek Tegra 2 ve 3 çipleriyle ilgili bir sorunu çözdüler. Yansıtma gücü değerleri 1,0'dan küçük olabilir.
- Numaraları değiştirmek için ses düğmesine basıldığında sürükleyici mod geri yüklenir ve
SYSTEM_UI_FLAG_IMMERSIVE_STICKY
geçersiz kılınır. Ekran döndürme,onSystemUiVisibilityChange
öğesini tetiklemez ve yoğun modu geri yüklemez.
- Yürütülebilir dosyaları bağlamak için
ld.bfd
özelliğini kullanmak üzere-rpath-link=$SYSROOT/usr/lib
ve-rpath-link=$TARGET_OUT
öğelerini eklemek içinndk-build
komut dosyası düzeltildi. (Sorun 64266)-Bsymbolic
tüm STL derlemelerinden kaldırıldı.SHELL
öğesinipython.exe
işlevine aktarmak yerine ortam değişkeni olarak ayarlayarak ayarı düzeltti. Bu durumda, ayar yoksayılır.ndk-gdb-py.cmd
(Sorun 63054)make-standalone-toolchain.sh
komut dosyası,--stl=stlport
seçeneğinin gabi++ başlıklarını sembolikleştirmek yerine kopyalaması için düzeltildi.cmd.exe
ve MinGW kabukları, cygwin tarafından oluşturulan sembol bağlantılarını anlamaz. - Başlık düzeltmeleri:
- Diğer değişiklikler:
-
- Geliştiricilerin, önerilen
ndk-build
komut dosyası yerine cygwin dilindendk-build.cmd
kullanmayı tercih etmeleri durumunda, yürütme izinleri daha önce yalnızcacmd.exe
kabuğunda kullanılmak üzere uygulanıyordu.*cmd
- Belirtilen hedef dizin yoksa kopyalamak yerine hareket ederek
make-standalone-toolchain.sh
komut dosyasının hızı iyileştirildi.
- Geliştiricilerin, önerilen
Android NDK r9c (Aralık 2013)
Bu, yalnızca hata düzeltmesi içeren bir sürümdür.
- Önemli hata düzeltmeleri:
-
- Yığın işaretçisinin çok erken geri yüklenmesiyle ilgili GCC 4.8 ARM sorunu düzeltildi. Bu sorun, çerçeve işaretçisinin yığın çerçevesindeki bir değişkene güvenilir şekilde erişmesini engelledi. (GCC Sorunu 58854)
- GCC 4.8 libstdc++ ile ilgili bir sorun düzeltildi. Bu sorun nedeniyle std::nth_element içindeki bir hata, rastgele bir sıralamaya neden olan kod oluşturulmasına neden oluyordu. (Sorun 62910)
- CC1/cc1plus ile GCC 4.8 ICE için
-fuse-ld=mcld
kodu düzeltilmiştir. Dolayısıyla, aşağıdaki hata artık gerçekleşmez:cc1: internal compiler error: in common_handle_option, at opts.c:1774
__builtin
matematiksel işlev için-mhard-float
desteği düzeltildi. STL ile-mhard-float
düzeltmeleri hakkında bilgi almak için lütfen 61784. Sayı'yı uygulayın.
- Diğer hata düzeltmeleri:
-
- Başlık düzeltmeleri:
poll.h
projesindekipoll
prototipipoll(struct pollfd *, nfds_t, int);
olarak değiştirildi.utimensat
, Android API'si 12 ve 19 düzeyleri içinlibc.so
klasörüne eklendi. Bu kitaplıklar artık 12-19 yaş aralığındaki tüm Android API seviyelerine dahildir.futimens
, Android API düzeyi 19 içinlibc.so
'da kullanıma sunulmuştur.- Android API düzeyi 8 ve üstü için eksik
clock_settime()
veclock_nanosleep()
,time.h
olarak eklendi. time.h.
koleksiyonunaCLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,
veCLOCK_BOOTTIME_ALARM
eklendi- Eski
CLOCK_REALTIME_HR
veCLOCK_MONOTONIC_HR.
kaldırıldı
- Çaydanlık, MoreTeapot ve
source/android/ndk_helper
çeşitlerinde:- Bunları, artık armeabi-v7a için sabit bir abi kullanacak şekilde değiştirdiler.
- Bunları, Android API düzeyi 19 ve üstü sürümlerde etkileyici modu kullanacak şekilde güncelledik.
/system/lib/libdvm.so
uygulamasındaCheck_ReleaseStringUTFChars
ile ilgili x86 cihazlarda kilitlenmeye neden olan bir sorun düzeltildi.
- NDK paketine sembolik bağlantı üzerinden referans verildiğinde cygwin öğesinde oluşan
ndk-build
hatası düzeltildi. LOCAL_SRC_FILES
, mutlak yollar içerdiğindendk-build.cmd
pencerelerindekindk-build.cmd
hatası düzeltildi.cmd.exe
(Sorun 69992)- Rutini, dosya adını veya satır numarasını bulamadığı için kareyi ayrıştıramadığında bile
ndk-stack
komut dosyasının devam etmesini sağladınız. Her durumda,??
yazdırılır. - Windows-x64_64 hedefleri için
ndk-stack
yığını,stack:
bölümündepc
,eip
veyaip
içermeyen bir çizgiyle hatalı bir şekilde eşleşmeyen bir çizgiyle artık eşleşmeyecek şekilde düzeltildi. Örneğin:I/DEBUG ( 1151): #00 5f09db68 401f01c4 /system/lib/libc.so
- gabi++ aşağıdaki gibi düzeltildi:
- C++ iş parçacığı yerel nesneleri ayırmak için Malloc() kullanılamaz.
- libc.debug.malloc, userdebug/eng Android platformu derlemelerinde sıfır olmayan durumlarda gabi++'daki kilitlenmelerden kaçınır.
- Başlık düzeltmeleri:
- Diğer değişiklikler:
-
LOCAL_EXPORT_LDFLAGS
eklendi.- Seçeneklerin açıkça
ndk-build
ile aktarıldığı entegre bir derleme sisteminde kullanılmak üzereNDK_PROJECT_PATH=null
ayarı kullanıma sunuldu. Bu ayardandk-build
,NDK_PROJECT_PATH.
için arama girişiminde bulunmaz. Bu ayar, değişkenlerin NDK_PROJECT_PATH yolundan varsayılan ayarları türetmesini de önler. Bu nedenle, şu değişkenler açıkça belirtilmelidir (varsa, varsayılan değerleriyle birlikte):NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG
(isteğe bağlı, varsayılan olarak 0'dır) ve diğerAPP_*
öğeleriApplication.mk
öğesinde yer alır. APP_ABI
artık virgülle ayrılmış bir listede sıralanabilir. Örneğin:APP_ABI := "armeabi,armeabi-v7a"
android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip
adlı isteğe bağlı ve ayrı bir pakette hata ayıklama bilgileriyle tüm STL'leri yeniden oluşturma imkanı,-g
seçeneği kapsamında sunulmaktadır. Bu seçenek,ndk-stack
komut dosyasının STL genelinde daha iyi bir yığın dökümü sağlamasına yardımcı olur. Bu değişiklik, sadeleştirilmiş nihai dosyanın kodunu/boyutunu etkilememelidir.APP_ABI
derlemelerini bildirmek içinhello-jni
örnekleri iyileştirildi.- Statik kitaplıklar oluşturmak için
ar
aracını Dedektif modunda (-D
seçeneği) kullandılar. (Sorun 60705)
Android NDK r9b (Ekim 2013)
- Önemli değişiklikler:
-
- 13, 15, 16 ve 17. seviyelerin eklenmesi de dahil olmak üzere 18 adede kadar tüm Android API seviyeleri için
include/android/*h
vemath.h
güncellendi. Eklenen API'ler hakkında bilgi için 68012 ve 68014 değişiklikleriyle ilgili taahhüt mesajlarını inceleyin. (47150, 58528 ve 38423 sayıları) - Renderscript bağlaması dahil Android API düzeyi 19 için destek eklendi.
- Mevcut armeabi-v7a ABI'da
-mhard-float
desteği eklendi. Clang hakkında daha fazla bilgi ve geçerli kısıtlamalar içintests/device/hard-float/jni/Android.mk
adresini ziyaret edin. - GNU Compiler Collection (GCC) 4.8'den 4.8.2'ye taşındı ve teşhis rengi desteği eklendi. Teşhis renklerini etkinleştirmek için
-fdiagnostics-color=auto
,-fdiagnostics-color=always,
ayarlarını yapın veya aşağıda gösterildiği gibiGCC_COLORS
dışa aktarın:GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
Daha fazla bilgi için GCC Dilden Bağımsız Seçenekler bölümüne bakın. - OpenGL ES 3.0 özelliklerini göstermek için iki yeni örnek eklendi: Teapot ve MoreTeapots. Bu örnekler, Android 4.1 (API düzeyi 16) ve sonraki sürümlere sahip cihazlarda çalışır.
- GCC 4.7 ve Clang 3.2 desteği kullanımdan kaldırılmıştır. Bu özellikler bir sonraki sürümde kaldırılacaktır.
- 13, 15, 16 ve 17. seviyelerin eklenmesi de dahil olmak üzere 18 adede kadar tüm Android API seviyeleri için
- Önemli hata düzeltmeleri:
-
- ARM GCC 4.6
thumb2
'nin 16 bit göreli atlama tabloları oluşturamamasıyla ilgili sorun düzeltildi. (GCC Sorunu) g++.dg/cpp0x/lambda/lambda-defarg3.C
üzerindeki GCC 4.8 dahili derleyici hatası (ICE) düzeltildi. (Değiştir 62770, GCC Sorunu)- Windows 32 bit
*-gdb.exe
yürütülebilir dosyalarının başlatılamamasına neden olan sorun düzeltildi. (Sorun 58975) - Madde işareti kitaplığı oluşturulurken GCC 4.8 ICE düzeltildi. Hata mesajı şöyledir:
internal compiler error: verify_flow_info failed
(Sorun 58916, GCC Sorunu) - GDB/ARM derlemesinde değişiklik yaparak giriş kodunu gevşetmek için
ARM.exidx
verilerini atladı ve exidx tabanlı yığın dinlenmesini kontrol etmek için bir komut (set arm exidx-unwinding
) ekledi. (Sorun 55826) - HI ve LO kayıtlarının yanlış bir şekilde yeniden kullanıldığı Clang 3.3 MIPS derleyici sorunu düzeltildi.
dbx_reg_number
içindeki MIPS 4.7 ICE ile ilgili sorun düzeltildi. Hata mesajı aşağıdaki gibidir:external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
(GCC Yama)
- ARM GCC 4.6
- Diğer hata düzeltmeleri:
-
- Başlık düzeltmeleri
- ARM
WCHAR_MIN
veWCHAR_MAX
özelliklerinin spesifikasyona göre imzası kaldırıldı (X86/MIPS sürümleri imzalandı). Eski davranışı geri yüklemek için_WCHAR_IS_ALWAYS_SIGNED
özelliğini tanımlayın. (Sorun 57749) include/netinet/tcp.h
,TCP_INFO
durum enum'unu içerecek şekilde düzeltildi. (Sorun 38881)- CCC + 11 modu kullanılırken GCC 4.8 araç zincirinde uyarı oluşturulmasını durdurmak için
cdefs_elh.h
makrosu_C_LABEL_STRING
düzeltildi. (Sorun 58135, Sorun 58652) imaxabs
veimaxdiv
olmayan mevcut işlevlerinttypes.h
başlığından kaldırıldı.pthread_exit()
iade değerleri vepthread_self()
ile ilgili sorun düzeltildi. (Sorun 60686)- Zaten
bionic
üst bilgisindestdlib.h
bulunanmkdtemp()
işlevi eksik.
- ARM
- Android API düzeyi 11'de Clang ile
samples/gles3jni
oluşturulurken sorun düzeltildi. - MCLinker, şu seçeneklerin birden fazla oluşumuna izin verecek şekilde düzeltildi:
-gc-sections
ve--eh-frame-hdr
. - MCLinker'ın
--no-warn-mismatch
seçeneğini kabul etmesi düzeltildi. cpu-features
seçeneği, tüm VFPv4 cihazların IDIV'ı desteklediğini varsaymayacak şekilde değiştirildi. Bu seçenek artık IDIV'yi yalnızca Nexus 4 dahil olmak üzere beyaz listedeki cihazlara ekler. (Sorun 57637)android_native_app_glue.c
etkinlik öncesi işlemlerindeki hataları yanlışlıkla günlüğe kaydetmeyle ilgili sorun düzeltildi.gabi++
üzerindeki tüm işlemlerin sona ermesi ve beklenmedik_kullanıcının ileti dizisi açısından güvenli olması düzeltildi.ssax-instructions
vefenv
için testlerden geçebilmesi amacıyla Clang-integrated-as
seçeneğiyle ilgili birkaç sorun düzeltildi.- GCC 4.6/4.7/4.8 derleyici, statik yürütülebilir dosyalar için bile bağlayıcı seçeneğini
--eh-frame-hdr
iletecek şekilde düzeltildi. Daha fazla bilgi için GCC yamasına bakın. CPU-ARCH-ABIS.html
içindeki ekstra kesme işareti düzeltildi. Daha fazla bilgi içinNDK-DEPENDS.html
adresini ziyaret edin. (Sorun 60142)- Windows'da nk-build çıktısında fazladan alıntılar düzeltildi. (Sorun 60649)
- Clang 3.3, ARM'nın
__atomic_fetch_add
,__atomic_fetch_sub
ve__atomic_fetch_or
gibi dahili, atomik işlemlerini derlemeyi düzeltti. - Özelleştirilmiş
vfprintf
özelliğine sahip Clang 3.3 ICE düzeltildi. (Clang sorunu)
- Başlık düzeltmeleri
- Diğer değişiklikler:
-
- Tüm GCC derlemeleri için OpenMP etkinleştirildi. Bu özelliği kullanmak için derleme ayarlarınıza aşağıdaki işaretleri ekleyin:
LOCAL_CFLAGS += -fopenmp LOCAL_LDFLAGS += -fopenmp
Kod örnekleri içintests/device/test-openmp
adresine göz atın. ld.mcld
boyutu önemli ölçüde düşürüldü (1,5 MB -ld.bfd
3,5 MB veld.gold
7,5 MB). Bu sayede, hız neredeyse %20 oranında arttı.- Yalnızca C++ için geçerli olmayan seçenekleri belirtmek için
LOCAL_CONLYFLAGS
veAPP_CONLYFLAGS
eklendi. MevcutLOCAL_CFLAGS
veAPP_CFLAGS
, C++ derlemesi için de kullanılır (çoğu seçeneği iki kez belirtme zahmetinden tasarruf etmek için) ve-std=gnu99
gibi seçenekler uyarıyla g++ derlemelerinde başarısız olabilir ve clang++ yapılarında hata olabilir. gabi++
dizi yardımcı işlevi eklendi.- Değiştirilen GCC, tüm
libgcc.a
dosyalarının-funwind-tables
ile derlenmesini ve böylece, yığının daha önce engellenen noktalardan (ör.__aeabi_idiv0
) dönüştürülmesini sağlayacak şekilde değiştirildi. - MIPS GCC4.6/4.7/4.8 sürümünde,
-mmxu
yeni seçenekle Gengenic MXU desteği eklendi. - ldxc1/sdxc1'i de denetlemek için MIPS GCC4.6/4.7/4.8
-mldc1-sdc1
genişletildi - Çılgın bağlayıcı eklendi. Daha fazla bilgi için
sources/android/crazy_linker/README.TXT
adresini ziyaret edin. - 200x200 piksellik bir alan yerine tam ekrana çizim yapmak için
bitmap-plasma
düzeltildi. - Aynı dosyalara olan sembolik bağlantılar oluşturarak linux ve darwin araç zinciri boyutları% 25 azaltıldı.
- Tüm GCC derlemeleri için OpenMP etkinleştirildi. Bu özelliği kullanmak için derleme ayarlarınıza aşağıdaki işaretleri ekleyin:
Android NDK r9 (Temmuz 2013)
- Önemli değişiklikler:
-
- Android 4.3 (API düzeyi 18) desteği eklendi. Daha fazla bilgi için
STABLE-APIS.html
belgesine vesamples/gles3jni/README
dilindeki yeni kod örneklerine bakın. - OpenGL ES 3.0 için Android 4.3 (API düzeyi 18) ve sonraki sürümleri tarafından desteklenen başlıklar ve kitaplıklar eklendi.
- GNU Compiler Collection (GCC) 4.8 derleyici, NDK'ya eklendi. GCC 4.6 hâlâ varsayılan olduğundan, bu seçeneği açıkça etkinleştirmeniz gerekir:
ndk-build
derlemeleri içinNDK_TOOLCHAIN_VERSION=4.8
öğesini dışa aktarın veyaApplication.mk
öğesine ekleyin.- Bağımsız derlemeler için
make-standalone-toolchain.sh
uygulamasındaki--toolchain=
seçeneğini kullanın. Örneğin:
--toolchain=arm-linux-androideabi-4.8
Not:
-Wunused-local-typedefs
seçeneği-Wall
tarafından etkinleştirilir.sources/cxx-stl/stlport/stlport/stl/config/features.h
, 311. satır gibi derleme zamanı onayları kullanıyorsanız__attribute__((unused))
özelliğini eklediğinizden emin olun. Daha fazla bilgi için 55460'ı değiştirme bölümüne bakınNot: GCC 4.7 ve sonraki sürümlerde ARM derleyicileri, ARMv6 ve daha yüksek derleme hedefleri için varsayılan olarak, hizalanmamış erişim kodu oluşturur. Bu özelliği desteklemeyen çekirdekler için derleme yaparken
-mno-unaligned-access
derleme seçeneğini eklemeniz gerekebilir. - Clang 3.3 desteği eklendi.
NDK_TOOLCHAIN_VERSION=clang
derleme seçeneği artık varsayılan olarak Clang 3.3'ü seçiyor.Not: GCC 4.4.3 ve Clang 3.1 kullanımdan kaldırılmıştır ve bir sonraki NDK sürümünden kaldırılacaktır.
- GNU Project Hata Ayıklayıcısı (GDB), python 2.7.5'i destekleyecek şekilde güncellendi.
- Windows ana makinelerini desteklemek için MCLinker eklendi. Mümkün olduğunda
ld.gold
varsayılan olarak MCLinker'ı etkinleştirmek içinLOCAL_LDFLAGS
veyaAPP_LDFLAGS
eklemeniz gerekir.-fuse-ld=mcld
- ELF kitaplığı bağımlılıklarını yazdıran
ndk-depends
aracı eklendi. Daha fazla bilgi içinNDK-DEPENDS.html
adresini ziyaret edin. (Sorun 53486)
- Android 4.3 (API düzeyi 18) desteği eklendi. Daha fazla bilgi için
- Önemli hata düzeltmeleri:
-
android_native_app_glue
grubundaki olası etkinlik işleme sorunu düzeltildi. (Sorun 41755)- NEON yükleme ve VST ile VLD mağaza talimatları için yeterli hizalama oluşturmak üzere ARM/GCC-4.7 derlemesi düzeltildi. (GCC Sorunu 57271)
- Dize değişmez değerindeki sabit negatif dizin değeri için GCC 4.4.3/4.6/4.7 dahili derleyici hatası (ICE) düzeltildi. (Sorun 54623)
- Nesne adresi ile sürekli başlatma için GCC 4.7 segmentasyon hatası düzeltildi. (Sorun 56508)
- Boost 1.52.0 kullanılırken
-O
değerleri için GCC 4.6 ARM segmentasyon hatası düzeltildi. (Sorun 42891) libc.so
velibc.a
,wait4()
işlevini destekleyecek şekilde düzeltildi. (Sorun 19854)- x86 libc.so ve libc.a dosyaları,
clone()
işlevini içerecek şekilde güncellendi. linker.list
dosyasının boş olması veya kullanılmamasıyla ilgiliLOCAL_SHORT_COMMANDS
hatası düzeltildi.- Mac OS'te GCC MIPS derlemesinin CFI yönergelerini kullanması düzeltildi. Bu işlemde
ld.mcld --eh-frame-hdr
sık sık başarısız oluyor. llvm/lib/VMCore/Value.cpp
ürününde Clang 3.2 X86/MIPS dahili derleyici hatası düzeltildi. (59021'i değiştirin)- GCC 4.7 64 bit Windows birleştirici kilitlenmesi düzeltildi. (Hata:
out of memory allocating 4294967280 bytes
). ndk-gdb
komut dosyası,--start
veya--launch
işlemlerinin artık GNU Hata Ayıklama Sunucusu'nu beklemesi için güncellendi. Böylece, yürütme yolunda erken oluşturulan kesme noktalarına (JNI kodundaki kesme noktaları gibi) daha güvenilir bir şekilde ulaşılabilir. (Sorun 41278)Not: Bu özellik, jdb gerektirir ve beklemedeki 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
veyablx pc
başparmak talimatından sonrakistepi
komutu kullanılırken GDB kilitlenmesi düzeltildi. (Sorun 56962, Sorun 36149)- MIPS
gdbserver
,DT_DEBUG
yerineDT_MIPS_RLD_MAP
araması yapacak şekilde düzeltildi. (Sorun 56586) - nk-build komut dosyasındaki döngüsel bir bağımlılık düzeltildi. Örneğin: A->B ve B->B, B, derlemeden çıkarıldı. (Sorun 56690)
- Diğer hata düzeltmeleri:
-
- Komut satırı seçeneği olarak Clang sürümünü belirtmenizi sağlamak için
ndk-build
komut dosyası düzeltildi (ör.NDK_TOOLCHAIN_VERSION=clang3.2
). Daha önce, sürümü bir ortam değişkeni olarak belirtmek işe yarıyordu. - Clang derleyici kullanılırken MIPS derleme hedefleri için
_Unwind_Exception
gabi++ boyutunun 24 olması düzeltildi. (54.141'i değiştirin) ndk-build clean
komutu kullanılırken, oluşturulmuş kitaplıkların önceden oluşturulmuş statik kitaplıklar içeren projelerden kaldırıldığından emin olmak içinndk-build
komut dosyası düzeltildi. (54461'i değiştirin, 54480'i değiştirin)NDK_ANALYZE=1
seçeneği daha az ayrıntılı olacak şekilde değiştirildi.gnu-libstdc++/Android.mk
, geriye dönük uyumluluk kullanan derlemeler içinbackward/
yolu içerecek şekilde düzeltildi. (Sorun 53404)stlport new
işlevinin bazen rastgele değerler döndürmesi sorunu düzeltildi.ndk-gdb
,APP_ABIS
sırasına göreCPU_ABIS
sırası ile eşleşecek şekilde düzeltildi. (Sorun 54033)- MacOSX'te NDK 64 bit derlemenin derleyici için yanlış yolu seçmesine neden olan sorun düzeltildi. (Sorun 53769)
- 64 bit Windows Vista'yı tespit etmek için derleme komut dosyaları düzeltildi. (Sorun 54485)
- x86
ntonl/swap32
hatası düzeltildi:invalid 'asm': operand number out of range
. (Sorun 54465, 57242'yi değiştir) - Dize değişmez değerlerini birleştirmek için
ld.gold
düzeltildi. - Büyük simge hizalamasını işlemek için
ld.gold
düzeltildi. --sort-section=name
seçeneğinin etkinleştirilmesi içinld.gold
güncellendi.- GCC 4.4.3/4.6/4.7, statik olarak bağlantılı programlar için
-export-dynamic
seçeneğinin atlanmasına neden oldu. GCC, artık statik olarak bağlı programlar için.interp
bölümü eklemiyor. - Tutarsız
typedef
/_Unwind_Control_Block
GCC 4.4.3stlport
derleme derlemesi hatası düzeltildi. (Sorun 54426) awk
komut dosyalarının, Windows'da oluşturulan ve sonda\r
karakter bulunan ve derleme hatalarına neden olanAndroidManifest.xml
dosyayı işleyebilecek şekilde düzeltildi. (Sorun 42548)- Ana makinenin 32 bit mi yoksa 64 bit mi olduğunu tespit etmek için
make-standalone-toolchain.sh
,prebuilts/
dizinini düzeltti. - Clang 3.2
-integrated-as
seçeneği düzeltildi. - Clang 3.2 ARM EHABI kompakt modeli
pr1
vepr2
işleyici verileri düzeltildi. - Şu 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!
- Uygulama manifest dosyasında
uses-sdk
öğesi olmadığında yapılan derleme hatası düzeltildi. (Sorun 57015)
- Komut satırı seçeneği olarak Clang sürümünü belirtmenizi sağlamak için
- Diğer değişiklikler:
-
- Başlık Düzeltmeleri
errno.h
içinde__set_errno
kullanımdan kaldırıldığı velibc.so
tarafından dışa aktarılmadığı için__set_errno
öğeleri satır içi işlev olacak şekilde değiştirildi.elf.h
,stdint.h
değerini içerecek şekilde değiştirildi. (Sorun 55443)sys/un.h
öğesinin diğer başlıklardan bağımsız olarak eklenmesi düzeltildi. (Sorun 53646)- Tüm
MotionEvent_getHistorical
API ailesininconst AInputEvent* motion_event
üyesi olması düzeltildi. (Sorun 55873) malloc_usable_size
,const void*
değerini değiştirdi. (Sorun 55725)- stdint.h dosyasının C99 ile daha uyumlu olması düzeltildi. (46821'i değiştirin)
wchar.h
,WCHAR_MAX
veWCHAR_MIN
şeklinde yeniden tanımlanmayacak şekilde değiştirildi- İşaretçiyle ilgili
PRI
veSCN
makroları için<inttypes.h>
bildirimi düzeltildi. (Sorun 57218) sys/cdefs.h
üst bilgisi, 9'dan küçük API düzeyleri için__WCHAR_TYPE__
değerinin 32 bit olacağı şekilde değiştirildi. Bu,wchat_t
değerinin tüm API düzeyleri için 32 bit olduğu anlamına gelir. Önceki davranışı geri yüklemek için_WCHAR_IS_8BIT
boole değişkenini tanımlayın. (Sorun 57267)
- NDK
docs/
içinde daha fazla biçimlendirme ve çeşitli doküman düzeltmeleri eklendi. - Statik kitaplıklar oluştururken ince bir arşiv tekniği eklendi. (Sorun 40303)
make-standalone-toolchain.sh
seçeneği,--stl=stlport
seçeneğini belirttiğinizdegnustl
öğesine ek olarakstlport
kitaplığını destekleyecek şekilde güncellendi. Daha fazla bilgi içinSTANDALONE-TOOLCHAIN.html
adresini ziyaret edin.make-standalone-toolchain.sh
komut dosyası, ana makinenin clang ve clang++ tanımlarını yanlışlıkla kullanmaktan kaçınmak içinclang
veclang++
'a ek olarak$TOOLCHAIN_PREFIX-clang
ve$TOOLCHAIN_PREFIX-clang++
komut dosyalarını oluşturacak şekilde güncellendi.--llvm-version=
- Yayın öncesi Clang'da iki optimizasyonu yeniden etkinleştirmek için iki işaret eklendi ancak GCC tarafından derlenen kodla daha iyi uyumluluk için NDK'de devre dışı bırakıldı:
- Clang 3.2 ve sonraki sürümlerinde eksik dönüş semantiğini yeniden etkinleştirmek için bir
-fcxx-missing-return-semantics
işareti eklendi. Normalde, tüm yollar değer döndüren bir işlev için dönüş ifadesiyle son bulmalıdır. Böyle bir durum yoksa Clang, yola dönüş ifadesi olmadan tanımlanmamış bir talimat (veya hata ayıklama modunda tuzak) ekler. Kodunuzun doğru olduğundan eminseniz optimize edicinin tanımsız davranıştan faydalanmasını sağlamak için bu işareti kullanın. Emin değilseniz bu işareti kullanmayın. Arayan, rastgele bir yanlış değer almaya devam edebilir. Ancak optimize edici, bu güvenlik değerinden yararlanmaz ve kodunuzun hata ayıklamasını zorlaştırır. - Statik oluşturucuyla birlikte genel değişkenleri sabit olacak şekilde tanıtmayı yeniden etkinleştirmek için bir
-fglobal-ctor-const-promotion
işareti eklendi. Bu işaret ile LLVM'nin global değişken optimizasyon geçişi, global değişkenleri statik oluşturucularla değerlendirmeye ve bunları sabit değerlere yükseltmeye çalışır. Bu optimizasyon doğru olsa da, GCC tarafından derlenen kodda bazı uyumsuzluklara neden olabilir. Örneğin, kod, sabit değeri değişebilir hale getirmek ve değiştirmek içinconst_cast
yapabilir. Değişken, GCC'de okuma yazmasındadır ve kod yanlışlıkla çalıştırılmıştır. Clang'da const değişkeni salt okunur bellektedir ve uygulamanızın kilitlenmesine neden olabilir.
- Clang 3.2 ve sonraki sürümlerinde eksik dönüş semantiğini yeniden etkinleştirmek için bir
-mldc1-sdc1
, MIPS GCC ve Clang derleyicilerine eklendi. Derleyiciler varsayılan olarak 8 baytlık nesneleri düzgün şekilde hizalar ve bunları hareket ettirmek içinldc1
vesdc1
talimatlarını uygular. Uygulamanız, varsayılan ayırıcıyla aynı şekilde her zaman yeni bir nesnenin 8 baytlık sınırıyla uyumlu olmayan özel bir ayırma kullanırsa uygulamanız, uyumlu olmayan bellekteldc1
vesdc1
işlemleri nedeniyle kilitlenebilir. Bu durumda, sorunu gidermek için-mno-ldc1-sdc1
işaretini kullanın.APP_PLATFORM_LEVEL
,APP_MIN_PLATFORM_LEVEL
değerinden büyükse etkinlik önem düzeyi, uyarıdan bilgiye düşürüldü.APP_PLATFORM_LEVEL
, NDK'nın tüm seviyelerin başlıklarına sahip olmadığı içinjni/Application.mk
içindeAPP_PLATFORM
değerinden daha düşük olabilir. Bu durumda, asıl seviye aşağı kaydırılır.APP_MIN_PLATFORM_LEVEL
, uygulamanızın manifest dosyasındakiandroid:minSdkVersion
tarafından belirtilir. (Sorun 39752)android_getCpuIdArm()
veandroid_setCpuArm()
yöntemlericpu-features.c
klasörüne eklendi. Bu ekleme, ARM CPUID bilgilerinin alınmasını kolaylaştırır. (Sorun 53689)- Clang derlemesi için GCC 4.7'nin
as/ld
özelliğini kullanmak üzerendk-build
değiştirildi.Not: GCC 4.7'de,
monotonic_clock
veis_monotonic
,steady_clock
veis_steady
olarak yeniden adlandırıldı. ndk-build
komut dosyasına aşağıdaki yeni uyarılar eklendi:LOCAL_LDLIBS/LDFLAGS
, statik kitaplık modüllerinde kullanılıyorsa uyarılar eklendi.- Yapılandırmada derlenecek modül yoksa bir uyarı eklendi.
- Paylaşılan kitaplığın veya
yürütülebilir modüllerin
LOCAL_LDLIBS/LDFLAGS
tanesinde kullanılan sistem dışı kitaplıklar için uyarı eklendi.
- Derleme komut dosyaları güncellendi. Bu sayede
APP_MODULES
,Android.mk
içinde tanımlanmamışsa ve yalnızca statik kitaplıklar listeleniyorsa komut dosyası tümünü zorunlu olarak oluşturur. (Sorun 53502) ndk-build
,LOCAL_SRC_FILES
içindeki mutlak yolları destekleyecek şekilde güncellendi.-tui
yürütülecek*-gdb
yürütülebilir dosyanın kopyası olan*-gdbtui
yürütülebilir dosya kaldırıldı.- Derleme komut dosyaları, Edison Design Group (EDG) derleyicinin kullanıcı arabirimi
_STLP_HAS_INCLUDE_NEXT
özelliğini tekrar etkinleştirdiğinde sizi uyaracak şekilde güncellendi. (Sorun 53646) libraries/gdbserver
için yolun varsayılan$PROJECT/libs
ayarından geçersiz kılınmasına izin vermek üzereNDK_LIBS_OUT
ortam değişkeni eklendi. Daha fazla bilgi içinOVERVIEW.html
adresini ziyaret edin.- ndk-build komut dosyası, varsayılan olarak biçim dizesi korumasıyla kod derlemek için
-Wformat -Werror=format-security
kullanır. Devre dışı bırakmak içinLOCAL_DISABLE_FORMAT_STRING_CHECKS=true
değerini ayarlayabilirsiniz. Daha fazla bilgi içinANDROID-MK.html
adresini ziyaret edin ndk-gdb-py
için STL güzel baskı desteği eklendi. Daha fazla bilgi içinNDK-GDB.html
adresini ziyaret edin.- googletest çerçevelerine dayalı testler eklendi.
- Araç kabuğu derleme komut dosyasına, mevcut kabuk
bash
değilse sizi uyaracak bir bildirim eklendi.
- Başlık Düzeltmeleri
Android NDK r8e (Mart 2013)
- Önemli değişiklikler:
-
- 64 bit ana makine araç zinciri grubu (paket adı son eki
*-x86_64.*
) eklendi. Daha fazla bilgi içinCHANGES.HTML
veNDK-BUILD.html
bölümlerine bakın. - Clang 3.2 derleyici eklendi. GCC 4.6 hâlâ varsayılan seçenektir. Clang derleyicisini kullanma hakkında bilgi için
CHANGES.HTML
sayfasına bakın. - Linux/MacOSX ana makineleri için statik kod analiz aracı eklendi. Analizcinin kullanımıyla ilgili bilgi için
CHANGES.HTML
bölümüne bakın. - Linux/MacOSX ana makineleri için MCLinker deneysel bir özellik olarak eklendi.
ld.gold
bağlayıcısı, mümkün olduğunda varsayılan seçenektir. Bu nedenle özelliği açıkça etkinleştirmeniz gerekir. Daha fazla bilgi içinCHANGES.HTML
adresini ziyaret edin. - ndk-build, modül bağımlılıkları için topolojik sıralamayı kullanacak şekilde güncellendi. Bu da derlemenin
LOCAL_STATIC_LIBRARIES
,LOCAL_WHOLE_STATIC_LIBRARIES
veLOCAL_SHARED_LIBRARIES
'de belirtilen kitaplıkların sırasını otomatik olarak sıralayacağı anlamına geliyor. Daha fazla bilgi içinCHANGES.HTML
adresini ziyaret edin. (Sorun 39378)
- 64 bit ana makine araç zinciri grubu (paket adı son eki
- Önemli hata düzeltmeleri:
-
-O2
içindeki tüm araç zincirlerini oluşturmak için derleme komut dosyası düzeltildi. Önceki sürümlerdeki araç zincirleri, optimizasyon olmadan hatalı bir şekilde oluşturulmuştu.- MacOSX için 64 bitte koşulsuz olarak Clang/llvm derlemesi oluşturan sabit derleme komut dosyası.
- GCC 4.6/4.7 dahili derleyici hatası düzeltildi:
gen_thumb_movhi_clobber at config/arm/arm.md:5832
. (Sorun 52732) - GCC/ARM 4.6/4.7'nin 64 bit atomik yerleşik işlevleri kullanarak kodu bağlayamamasıyla ilgili sorun düzeltildi. (Sorun 41297)
- GCC 4.7 bağlayıcı DIV kullanım uyuşmazlığı hataları düzeltildi. (Kaynak yazılım sorunu)
- GCC 4.7 dahili derleyici hatası
build_data_member_initialization, at cp/semantics.c:5790
düzeltildi. - GCC 4.7 dahili derleyici hatası
redirect_eh_edge_1, at tree-eh.c:2214
düzeltildi. (Sorun 52909) - GCC 4.7 segul hatası düzeltildi. (GCC Sorunu)
<chrono>
saat çözünürlüğü düzeltildi vesteady_clock
özelliği etkinleştirildi. (Sorun 39680)- GCC 4.7 libstdc++ için
_GLIBCXX_HAS_GTHREADS
'yi etkinleştirecek araç zinciri düzeltildi. (Sorun 41770, Sorun 41859) - X86 MXX/SSE kodunun
posix_memalign
eksik olması nedeniyle bağlanamamasıyla ilgili sorun düzeltildi. (51872'yi değiştirin) i386.c
işlevindeki GCC4.7/X86 segmentasyonu hatası,distance_non_agu_define_in_bb()
işlevi düzeltildi. (50383'ü değiştirin)- GCC4.7/X86'nın önceki
cmov
davranışını geri yüklemesi düzeltildi. (GCC Sorunu) - libstdc++/GCC4.7'de
setlocale()
işlevinin NULL dönüş değerinin işlenmesi düzeltildi. (Sorun 46718) __exidx_start
ve__exidx_start_end
içinld.gold
çalışma zamanı tanımsız referansı düzeltildi. (52134'ü değiştirin)- Eigen kitaplığı kullanılırken Clang 3.1 dahili derleyici hatası düzeltildi. (Sorun 41246)
- C++11 modunda
<chrono>
dahil olmak üzere Clang 3.1 dahili derleyici hatası düzeltildi. (Sorun 39600) - Tek tip başlatılmış
rvalue
adlı bir üniforma çağrısına nesne kodu oluşturulurken Clang 3.1 dahili derleyici hatası düzeltildi. (Sorun 41387) - Clang 3.1/X86 yığınının yeniden hizalaması düzeltildi. (52154'ü değiştirin)
- Android 4.1.2'de hata ayıklarken GNU Hata Ayıklayıcısı (GDB) SIGILL ile ilgili sorun düzeltildi. (Sorun 40941)
- Semboller uzun, dolaylı dosya yolları içerdiğinde GDB'nin
source:line
ayrılma noktalarını ayarlayamaması sorunu düzeltildi. (Sorun 42448) - MIPS PIE yürütülebilir dosyaları için GDB
read_program_header
düzeltildi. (49592'yi değiştirin) uncaught_exception()
grubundakiSTLport
segmentasyon hatası düzeltildi. (50236'yı değiştirin)DW_EH_PE_udata2
,DW_EH_PE_udata4
veDW_EH_PE_udata8
özelliklerinin uyumsuz erişimi nedeniyle istisnai kullanımdakiSTLport
otobüs hatası düzeltildi.nothrow new[]
operatörüyle Gabi++ sonsuz yineleme sorunu düzeltildi. (Sorun 52833)- İstisna işleyici işaretçisine Gabi++ yanlış göreli konumu düzeltildi. (53446'yı değiştirin)
- İstisna nesnesinde Gabi++ yedeği kaldırıldı (53447'yi değiştirin)
- Diğer hata düzeltmeleri:
-
- Sabit NDK üstbilgileri:
size_t
,ssize_t
veptrdiff_t
gereksiz tanımları kaldırıldı.- MIPS ve ARM
fenv.h
başlığı düzeltildi. stddef.h
, araç zincirinde zaten bulunduğu içinoffsetof
öğesini yeniden tanımlamayacak şekilde düzeltildi.elf.h
,Elf32_auxv_t
veElf64_auxv_t
içerecek şekilde düzeltildi. (Sorun 38441)OpenSLES_AndroidConfiguration.h
başlık dosyasındaki#ifdef
C++ tanımları düzeltildi. (Sorun 53163)
STLport
, sessiz olarak çıkmak yerine bellek yetersizliği hatasından sonra iptal edilecek şekilde düzeltildi.- API düzeyi 8 ve önceki sürümleriyle derleme yapabilmesi için sistem ve Gabi++ üstbilgileri düzeltildi.
cpufeatures
,/proc/self/auxv
öğesini ayrıştıramayacak şekilde düzeltildi. (Sorun 43055)ld.gold
, ana makine libstdc++'ya ve Windows platformlarına bağlı kalmayacak,libgcc_sjlj_1.dll
kitaplığına bağlı olmayacak şekilde düzeltildi..vsave
ürününde tutarsız kayıt listesi yayınlayan ve derleyiciyi başarısız kılan Clang 3.1 düzeltildi. (49930'u değiştirin)- Clang 3.1'in libgabi++ derlemesi yapabilmesi ve MIPS derleme hedefleri için
test-stlport
testlerini geçebilmesi sorunu düzeltildi. (51961'i değiştirin) - Clang 3.1, C+ için yalnızca C++ için istisnayı etkinleştirecek şekilde düzeltildi.
- Çoğu GNU istisna testini geçmek için Clang 3.1'deki birkaç sorun düzeltildi.
- Bağımsız NDK derleyicisinde
clang
veclang++
komut dosyalarını,-cc1
algılayacak ve bulunan-target
öğesini belirtmeyecek şekilde düzeltti. ndk-build
,NDK_APP_OUT
öğesininApplication.mk
içinde ayarlandığını gösterecek şekilde düzeltildi.setjmp.h
işlevinde tanımlanansigsetjmp
vesiglongjmp
işlevleri eksik olan X86libc.so
velib.a
ile ilgili sorunlar düzeltildi. (Sorun 19851)- C++ 11'de Clang ile çalışmak için GCC 4.4.3/4.6/4.7 libstdc++ yamasına. (Clang Sorunu)
HOST_AWK
bağımsız değişkenindeki bağımsız değişkendeki cygwin yolu düzeltildi.- Projenin JNI dizininden çalıştırılırken pencerelerdeki
ndk-build
komut dosyası uyarısı düzeltildi. (Sorun 40192) - Makefile'ın
LOCAL_PATH
tanımında sondaki boşlukları olması durumundandk-build
komut dosyasının oluşturulmaması sorunu düzeltildi. (Sorun 42841)
- Sabit NDK üstbilgileri:
- Diğer değişiklikler:
-
- GCC/MIPS araç zincirinde mesaj dizisi desteği etkinleştirildi.
- GCC istisnası işleme yardımcıları
__cxa_begin_cleanup
ve__cxa_type_match
, GNU libstdc++ ürününde önceki gizli görünürlük ayarına göre varsayılan görünürlük elde edecek şekilde güncellendi. Daha fazla bilgi içinCHANGES.HTML
sayfasına bakın. - Derleme komut dosyaları, Gabi++ ve STLport statik kitaplıklarının artık istisna işleme yardımcıları hariç gizli görünürlükle derlenmesi için güncellendi.
STLport
öğesi, Başparmak modunda ARM için çalışacak şekilde güncellendi.- Gabi++'da
std::set_new_handler
için destek eklendi. (Sorun 52805) - GNU libstdc++ ile
FUTEX
sistem çağrısı etkinleştirildi. ndk-build
, önceden oluşturulmuş statik kitaplığı artık projeninobj/local/<abi>/
dizinine kopyalamayacak şekilde güncellendi. (Sorun 40302)__ARM_ARCH_5*__
, ARMtoolchains/*/setup.mk
komut dosyasından kaldırıldı. (Sorun 21132)- ARM için özel GNU libstdc++ kitaplıkları eklendi.
- 32 bit FPU ile MIPS kayan nokta
madd/msub/nmadd/nmsub/recip/rsqrt
talimatları etkinleştirildi. - Daha fazla optimizasyona olanak tanımak için GCC 4.6 ve 4.7'de grafiti optimize edici etkinleştirildi:
-fgraphite
,-fgraphite-identity
,-floop-block
,-floop-flatten
,-floop-interchange
,-floop-strip-mine
,-floop-parallelize-all
ve-ftree-loop-linear
. (bilgi) - Linux ve Max OS X 32 bit ana makinelerde Clang 3.1 için
polly
etkinleştirildi. Bu ana makine, bellek erişimini analiz edip optimize eder. (bilgi) - GCC 4.7, 4.6, Clang 3.2 ve Clang 3.1 üzerinde linux'ta (CVM LTO, LLVMgold.so) etkinleştirildi.
-flto
ld.gold
kullanılamadığından MIPS derleyici hedefleri desteklenmiyor. - GCC 4.6/4.7 sürümünde
ld.gold
için--plugin
ve--plugin-opt
etkinleştirildi. - GCC 4.7'de
ld.gold
için--text-reorder
etkinleştirildi. _GLIBCXX_USE_C99_MATH
ile GNU libstdc++ yapılandırıldı. Bu işlem, biyonik üst bilgideisinf
komut dosyasının tanımını kaldırır. Daha fazla bilgi içinCHANGES.html
adresini ziyaret edin.APP_LDFLAGS
, derleme komut dosyalarına eklendi. Daha fazla bilgi içinANDROID-MK.html
adresini ziyaret edin.- 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
tarafından ana makine geliştirici ortamı 32 bit araç zincirini devre dışı bırakacak şekilde güncellendi. pentiumpro
vegeneric
olan-march=
ve-mtune=
varsayılan GCC/X86 işaretleri,i686
veatom
olarak değiştirildi.- Geliştirilmiş araç zinciri derleme komut dosyaları:
mingw
derleme türü içinbuild-gcc.sh
bölgesindeki bir yarış koşulu düzeltildi. Bu da paralel derlemelerin önemli miktarda işlenmesini engelliyordu.build-gabi++.sh
vebuild-stlport.sh
, artık NDK paketinden çalıştırılabilmeleri için güncellendi. (Sorun 52835)MSys
yardımcı program koleksiyonundarun-tests.sh
düzeltildi.- İyileştirilmiş 64 bit ana makine araç zinciri ve Canada Cross derleme desteği.
build-mingw64-toolchain.sh
komut dosyası daha yeni bir sürüme güncellendi.- Gizli görünürlük olmadan
libgnustl_static.a
vestlport_static.a
derleme seçeneği eklendi.
Android NDK r8d (Aralık 2012)
- Önemli değişiklikler:
-
- GNU Compiler Collection (GCC) 4.7 derleyici, NDK'ya eklendi. GCC 4.6 derleyicisi hâlâ varsayılan seçenektir. Bu nedenle, yeni sürümü aşağıdaki gibi 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ğinimake-standalone-toolchain.sh
öğesine ekleyin. Örneğin:--toolchain=arm-linux-androideabi-4.7
Not: Bu özellik deneyseldir. Lütfen deneyin ve sorunları bildirin.
- gabi++ üzerinden
stlport
istisna desteği eklendi. Yeni gabi++ yönteminindlopen
ve ilgili koda bağlı olduğunu unutmayın. Yani:- Artık
-static
seçeneğini kullanarak statik olarak yürütülemez veyaAPP_STL := stlport_static
kullanaraklibstlport_static.a
değerini ekleyemezsiniz. (-static
seçeneğini bağımsız bir araç zinciriyle kullanmaya devam edebilirsiniz.) Derleyici,-ldl
seçeneğini otomatik olarak eklediğinden,include $(BUILD_EXECUTABLE)
kullanılarak yürütülebilir dinamik bir derleme derlemeye devam eder. - Projeniz
-nostdlib
ve {-Wl,--no-undefine} kullanarak bağlanıyorsa-ldl
seçeneğini manuel olarak eklemeniz gerekir.
CPLUSPLUS-SUPPORT.html
adresini ziyaret edin.Not: Bu özellik deneyseldir ve GCC 4.6/4.7 derleyicileriyle GCC 4.4.3 veya Clang 3.1'e kıyasla daha iyi çalışır. Lütfen deneyin ve sorunları bildirin.
- Artık
- x86 için, GCC 4.6 ve üzeri derleyicileri kullanarak
-fstack-protector
,-fstack-protector-all
ve-fstack-protector-strong
ürünlerinde eski Android C kitaplığı (biyonik) ile uyumlu yeni bir tls yolu (%gs:20) arasından seçim yapabileceğiniz bir-mstack-protector-guard=
seçeneği eklendi.Not:
-mstack-protector-guard
ayarının kendisi herhangi bir-fstack-protector*
seçeneğini etkinleştirmez. - Android 4.1 ve sonraki sürümlerde
/proc
aracılığıyla otomatik algılama mümkün olmadığında kullanmak içinsources/android/cpufeatures/cpu-features.c
işlevineandroid_setCpu()
işlevi eklendi. (Chromium Sorunu 164154)
- GNU Compiler Collection (GCC) 4.7 derleyici, NDK'ya eklendi. GCC 4.6 derleyicisi hâlâ varsayılan seçenektir. Bu nedenle, yeni sürümü aşağıdaki gibi açıkça etkinleştirmeniz gerekir:
- Önemli hata düzeltmeleri:
-
ndk-build
komut dosyasını kullanırken nesne dosyalarının gereksiz şekilde yeniden oluşturulması sorunu düzeltildi. (Sorun 39810)- Mac OS X 10.6.x için NDK 8c sürümünde yapılan ve aşağıdaki hatayı veren bağlayıcı hatası düzeltildi:
dyld: lazy symbol binding failed: Symbol not found: _memmem Referenced from: ...../arm-linux-androideabi/bin/ld Expected in: /usr/lib/libSystem.B.dylib
Bu sorun, Mac OS 10.6.x ve NDK ile uyumlu olmayan ikili programlar üreten Mac OS X 10.7 sürümü üzerinde geliştirildi. - Clang++ bağımsız derleme komut dosyasından
-x c++
seçenekleri kaldırıldı. (Sorun 39089) - Cygwin'deki
NDK_TOOLCHAIN_VERSION=clang3.1
seçeneğini kullanmayla ilgili sorunlar düzeltildi. (Sorun 39585) make-standalone-toolchain.sh
komut dosyası, Cygwin veya MinGW ortamlarını kullanan bağımsız bir araç zinciri oluşturulmasına izin verecek şekilde düzeltildi. Ortaya çıkan araç zinciri Cygwin, MingGW veya CMD.exe ortamlarında kullanılabilir. (Sorun 39915, Sorun 39585)- ARM ve X86 için android-14 derlemelerinde eksik
SL_IID_ANDROIDBUFFERQUEUESOURCE
seçeneği eklendi. (Sorun 40625) ANDROID_CPU_X86_FEATURE_MOVBE
özelliği için x86 CPU algılama düzeltildi. (Sorun 39317)- Standart Şablon Kitaplığı'nın (STL),
.cpp
dosya uzantısına sahip olmayan C++ kaynaklarını kullanmasını engelleyen bir sorun düzeltildi. - upload1.c:1061'de GCC 4.6 ARM dahili derleyici hatası düzeltildi. (Sorun 20862)
- emit-rtl.c:1954 adresindeki GCC 4.4.3 ARM dahili derleyici hatası düzeltildi. (Sorun 22336)
- postreload.c:396 adresindeki GCC 4.4.3 ARM dahili derleyici hatası düzeltildi. (Sorun 22345)
- GCC 4.6/4.7 lambda işlevlerini atlamayla ilgili sorun düzeltildi. (Sorun 35933)
- Diğer hata düzeltmeleri:
-
- NDK başlık dosyası düzeltmeleri:
__WINT_TYPE__
vewint_t
aynı türde olacak şekilde düzeltildi.android/bitmap.h
içindeki yazım hatası düzeltildi. (Sorun 15134)errno.h
içindeki yazım hatası düzeltildi.sys/cdefs.h
içindeki__STDC_VERSION__
varlığı için kontrol eklendi. (Sorun 14627)- Başlıklar
byteswap.h
vedirent.h
içinde yeniden düzenlendi. limits.h
,PAGE_SIZE
ayarları sağlayanpage.h
özelliğini içerecek şekilde düzeltildi. (Sorun 39983)int
veGLint
içinglGetAttribLocation()
veglGetUniformLocation()
dönüş türü sabit.- x86 derlemeleri için
__BYTE_ORDER
sabit değeri düzeltildi. (Sorun 39824)
ndk-build
komut dosyasının, ARM derlemeleri için-O2
ile-Os
üzerine yazmaması düzeltildi.HOST_AWK
,HOST_SED
veHOST_MAKE
ayarlarının üzerine yazılmasına izin veren derleme komut dosyaları düzeltildi.fsck_msdos
sitesindekild.gold
sorunu, Intel C/C++ derleyicisi (ICC) tarafından oluşturulan bağlantı nesnelerini oluşturuyor.- Clang'daki spesifikasyonlara uymak için ARM EHABI desteği düzeltildi.
- GNU Hata Ayıklayıcısı (GDB),
solib
etkinlikleri sırasında hedefin bağlantı haritasında gezinmek için harcanan süreyi kısaltacak şekilde düzeltildi. (Sorun 38402) - Paylaşılan kitaplıklar bağlanırken eksik
libgcc.a
dosyası düzeltildi.
- NDK başlık dosyası düzeltmeleri:
- Diğer değişiklikler:
-
- ARM için GCC 4.6'ya 64 bit dahili atomik işlevler geri aktarılmıştır.
- Ses çıkışı gecikmesi için dokümanların yanı sıra diğer dokümanlar ve düzeltmeler eklendi.
- Sabit hata ayıklama, Clang ile derlenirken, geçersiz olmayan işlevler artık dönüş ifadesi olmayan yollar için bir
SIGILL
sinyali oluşturuyor. make-standalone-toolchain.sh
,--llvm-version=3.1
son ekini GCC 4.6 araç zincirine eklemeye eşdeğer olan-clang3.1
son ekini kabul edecek şekilde güncellendi.- GCC ve Clang hata raporu URL'si şu şekilde güncellendi: https://source.android.com/source/report-bug s.html
llvm-objdump
için ARM ELF desteği eklendi.- Clang derlemeleri için c girişi + c olarak işleniyor uyarısı engellendi.
- Derleme yalnızca
libiberty.a
uygulamasının 32 bit sürümünün oluşturuluplib32/
konumuna yerleştirilmesi için güncellendi.
Android NDK r8c (Kasım 2012)
- Önemli değişiklikler:
-
- CD 3.1 derleyici, NDK'ya eklendi. GNU derleyici koleksiyonu (GCC) 4.6 hâlâ varsayılan olduğundan Clang derleyici seçeneğini aşağıdaki şekilde açıkça etkinleştirmeniz gerekir:
ndk-build
içinNDK_TOOLCHAIN_VERSION=clang3.1
dışa aktarın veya bu ortam değişkeni ayarınıApplication.mk
öğesine ekleyin.- Bağımsız derlemeler için
--llvm-version=3.1
öğesinimake-standalone-toolchain.sh
öğesine ekleyin veCC
dosyanız ileCXX
dosyanızı<tool-path>/bin/clang
ve<tool-path>/bin/clang++
ile değiştirin. Ayrıntılar içinSTANDALONE-TOOLCHAIN.html
adresini ziyaret edin.
Not: Bu özellik deneyseldir. Lütfen deneyin ve sorunları bildirin.
- Windows araç zinciri için
ld.gold
altın bağlayıcı eklendi. Altın bağlayıcı, tüm ana makinelerde ARM ve X86 için de varsayılan seçenektir.LOCAL_LDFLAGS += -fuse-ld=bfd
öğesineAndroid.mk
ekleyerek veya bağlantıyı yapan g++/clang++ komut satırına-fuse-ld=bfd
değerini ileterekld.bfd
bağlayıcısını kullanmak için bunu geçersiz kılabilirsiniz. - Teşhis edilmesi zor derleme hatalarını önlemek için NDK yolundaki
ndk-build[.cmd]
vendk-gdb
komut dosyalarına alanlar eklendi. - API düzeyi işlemeyle ilgili aşağıdaki değişiklikleri yaptı:
- Derleme mantığı değiştirildi. Böylece,
APP_PLATFORM
,project.properties
veyadefault.properties
içindeandroid-10
öğesini belirten projelerandroid-14
yerineandroid-9
ile bağlantı kuracak.android-13
- android-16 (Jelly Bean) veya sonraki sürümleri kullanan yürütülebilir dosyaların
konumu bağımsız bağımsız dosyalar (PIE) için
-fPIE
seçeneğiyle derlenmesi için güncellendi. Yeni birAPP_PIE
seçeneği, bu davranışı kontrol etmenizi sağlar. Ayrıntılar içinAPPLICATION-MK.html
adresini ziyaret edin.Not: 14'ün üzerindeki tüm API düzeyleri
platforms/android-14
ile bağlantı kurmaya devam etmektedir ve yeniplatforms/android-N
eklenmemiştir. - Ayarlanan API düzeyi, projenin
AndroidManifest.xml
öğesindekiandroid:minSdkVersion
değerinden büyük olduğunda uyarı sağlamak içinndk-build
değiştirildi.
- Derleme mantığı değiştirildi. Böylece,
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
adresini ziyaret edin.- X86 platformundaki uzun çift, 8 bayt olarak değiştirildi. Bu veri türü artık çift ile aynı boyuttadır ancak yine ayrı bir tür olarak kabul edilir.
APP_ABI=armeabi-v7a
için güncellenen derleme:- Bu parametre türü,
-march=armv7-a
parametresini bağlayıcıya iletecek şekilde değiştirildi. Bu değişiklik, v7'ye özgü kitaplıkların vecrt*.o
öğelerinin doğru şekilde bağlanmasını sağlar. - Önceki sürümlerde kullanılan
-mfpu=vfp
yerinendk-build
öğesine-mfpu=vfpv3-d16
eklendi.
- Bu parametre türü,
- CD 3.1 derleyici, NDK'ya eklendi. GNU derleyici koleksiyonu (GCC) 4.6 hâlâ varsayılan olduğundan Clang derleyici seçeneğini aşağıdaki şekilde açıkça etkinleştirmeniz gerekir:
- Önemli hata düzeltmeleri:
-
make-standalone-toolchain.sh
hizmetini kök ayrıcalıklarıyla çalıştırmak, bazı kullanıcıların bağımsız araç zincirine erişememesine neden oldu. (Sorun 35279)- NDK sürüm paketindeki tüm dosyalar ve yürütülebilir dosyalar, herkes için okuma ve yürütme izinlerine sahip olacak şekilde ayarlanır.
- Kopyalandığında
libstdc++.a
alanının sahipliği/grubu artık korunuyor.
\r
,echo.exe
adlı önceden oluşturulmuş Windows uygulamasından kaldırıldı. Gereksiz\r
, GNU Hata Ayıklayıcısı'nda (GDB) yanlış bir şekilde yolun bir parçası haline geldiği içingdb.setup
hatasının oluşmasına neden oldu. (Sorun 36054)host-mkdir
uygulamasında zamanlama sorunları nedeniyle bazen başarısız olan Windows paralel yapıları düzeltildi. (Sorun 25875)- GCC 4.4.3 GNU
libstdc++
'nin,typeinfo
adlarını varsayılan olarak birleştirmemesi düzeltildi. Daha fazla bilgi içintoolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo
adresini ziyaret edin. (Sorun 22165) - GCC 4.6
cp/mangle.c::write_unscoped_name
'danull
bağlamındaki sorun düzeltildi. Bağlam,null
olduğunda veTREE_CODE
için kaynakçanın bağlantısı kaldırıldığında GCC kilitlenebilir. - Kayan öğeler için ARM NEON'a özgü tür tanımlarında GCC 4.4.3 kilitlenmeleri düzeltildi. (Sorun 34613)
- Kaldırılan değeri içeren eski bir yığın konumunun döndürüldüğü ve çalışma zamanının kilitlenmesine neden olduğu
STLport
dahili_IteWrapper::operator*()
uygulaması düzeltildi. (Sorun 38630) - ARM'ye özel düzeltmeler:
- ARM GCC 4.4.3/4.6
g++
, GCC 4.4'te <va_list> iş ortağının değiştirildiği uyarısını uyarmadı. Bu uyarıdan kaçınmak için-Wno-psabi
anahtarının kullanılmasıyla ilgili geçici çözüm artık gerekli değildir. LOCAL_SRC_FILES
içinde.arm
veya.neon
son ekleri olan bir projedeAPP_STL
etiketinin de kullanılması sorunu düzeltildi.APP_STL
ilendk-build
komut dosyası, derlemeye STLheader/lib
yolları eklemeden önceLOCAL_SRC_FILES
'de C++ dosyalarını arar. Aramadan önce.arm
ve.neon
son eklerini filtrelemek içinndk-build
değiştirildi. Aksi takdirde,LOCAL_SRC_FILES
gibimyfile.cpp.arm.neon
içindeki öğeler C++ kodu olarak derlenmez.binutils-2.21/ld.bfd
,tag_FP_arch
olmadan eski bağlayıcılardan nesne bağlayabilir. Bu durum GNU Binutils'de provation başarısız hata mesajları oluşturuyordu. (Sorun 35.209)binutils-2.19/ld
, önceden oluşturulmuş nesneyi yenibinutils-2.21
tarafından bağladığında Bilinmeyen EABI nesne özelliği 44 uyarısı kaldırıldıarmv7-a/thumb
alt dizinindekiheaders/libs
alanını doldurmak içinmake-standalone-toolchain.sh
değiştirerek hem-mthumb
hem de-march=armv7-a
ile GNUstdc++
derlemesindeki sorun düzeltildi. (Sorun 35616)- Çözlenemeyen R_ARM_THM_CALL yeri değiştirme hatası düzeltildi. (Sorun 35342)
reload1.c:3633
ile ilgili, dahili derleyici hatası düzeltildi. Bu hata, ARM arka ucunun,char
öğesinden imza genişlemesi sırasında yanlış işlenen türü beklediğini gösteriyor. (GCC Sorunu 50099)- Negatif kayma tutarına sahip dahili derleyici hatası düzeltildi. (GCC Sorunu)
- ARM GCC 4.4.3/4.6
- X 86 için sabit olan
-fstack-protector
aynı zamandandk-build
x86 ABI hedefi için de varsayılan seçenektir. - MIPS'e özel düzeltmeler:
- MIPS
libstlport_*
derlenirken_STLP_LITTLE_ENDIAN
1 olarak ayarlanarakSTLport
uç noktası düzeltildi. - LLVM derlenirken GCC
__builtin_unreachable
sorunu düzeltildi. (GCC Sorunu 54369) cc1
derleme işlemi için% 100 CPU tüketen geriye dönük düzeltme. (GCC Sorunu 50380)
- MIPS
- GNU Hata Ayıklayıcıya özgü düzeltmeler:
- Derlemede gdb-7.x'te Python desteği devre dışı bırakıldı. Aksi takdirde, gdb-7.x yapılandırma işlevi ana makinede bulunan Python sürümünü alıp belirli bir Python sürümüne sabit kablolu bağımlılığa sahip
gdb
oluşturabilir. (Sorun 36120) APP_ABI
,all
içerdiğinde ve bilinen mimarilerin hiçbiriyle eşleşmediğindendk-gdb
düzeltildi. (Sorun 35392):
karakteri, sürücü harfiyle başlayan bir Windows yolunun parçası gibi görünerek Windows yol adı desteği düzeltildi. (GDB Sorunu 12843)gdbserver
içindeki ARM için donanım ayrılma noktası desteği eklendi. (GDB Sorunu)- Bağlayıcı tutarlı olduğunda yalnızca mevcut
solibs
öğesini okumak için düzeltme eklendi. Bu değişikliksolib
etkinlik işleme sürecini hızlandırır. (Sorun 37677) solib
kesme noktasını tekrar tekrar bulmak için düzeltme eklendi. GDB, başarılı olana kadar hersvr4_current_sos()
aramasındaenable_break()
değerini yeniden dener. (43563'ü değiştirin)gdb
aracınındlopen-ed
kitaplıklarına yerleştirilen kesme noktalarında durmaması sorunu düzeltildi. (Sorun 34856)dlopen()
çağrılırken dinamik bağlayıcıdakiSIGILL
sabitlendi (/system/bin/linker
sembollerin atıldığı vertld_db_dlactivity()
LSB
özelliğinin korunması nedeniylertld_db_dlactivity()
Thumb
olarak uygulandı.sym_addr
(Sorun 37147)
- Derlemede gdb-7.x'te Python desteği devre dışı bırakıldı. Aksi takdirde, gdb-7.x yapılandırma işlevi ana makinede bulunan Python sürümünü alıp belirli bir Python sürümüne sabit kablolu bağımlılığa sahip
- Diğer hata düzeltmeleri:
-
- Sabit NDK üstbilgileri:
- Orijinal çekirdekten yanlışlıkla kaldırılan
arch-mips/include/asm/*
kodu düzeltildi. (43335'ü değiştirin) sys/cdefs.h
içinde#define __unused
ile çakışma olmaması için, struct üye verilerilinux/sysctl.h
velinux/icmp.h
için__linux_unused
ile değiştirildi.__unused
__BEGIN_DECLS
ve__END_DECLS
ile ilişkili C işlevleri içinfenv.h
düzeltildi.malloc.h
grubundaki uygulanmayan işlevler kaldırıldı.- ANSI derleyiciler için
uint64_t
tanımınınstdint.h
tanımı düzeltildi. (Sorun 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ı<pthread.h>
, olanLONG_LONG_MIN
,LONG_LONG_MAX
veULONG_LONG_MAX
adlı GLibc'e özel makroları<limits.h>
hedefine taşıyın.
- Orijinal çekirdekten yanlışlıkla kaldırılan
ndk-stack-parser
içindeki arabellek taşması düzeltildi.- Tanımlanmamış
_STLP_USE_EXCEPTIONS
,__Named_exception
öğesinin tüm tanım ve kullanımlarını atlayacak şekilde düzeltildi.__Named_exception
ayarlarının derlenmesi ve kullanılması yalnızcaSTLport
sitesinin istisnaları kullanmasına izin verildiğinde gerçekleşir. - Windows kodu da oluşturulmadan yalnızca Linux için NDK paketleri oluşturma işlemi düzeltildi. Bu tür bir derleme gerçekleştirmek için aşağıdaki ayarları kullanın:
./build/tools/make-release.sh --force --systems=linux-x86
atexit()
ve__do_handler
öğelerinin dışa aktarılmaması içinlibc.so
düzeltildi. Bu semboller, ARM derlemeleri için eski yerel kitaplıkları desteklemek amacıyla C kitaplığının sistem sürümüne göre dışa aktarılır. NDK tarafından oluşturulan ürünler asla doğrudan bunlara atıfta bulunmamalıdır. Bunun yerine, paylaşılan her kitaplık veya yürütülebilir dosyacrtbegin_*.o
tarafından sağlanan kendi sembollerinin kendi sürümünü yerleştirmelidir.Projeniz
-nostdlib -Wl,--no-undefined
seçeneklerine bağlıysa bu durumdacrtbegin_so.o
bağlanmadığı için kendi__dso_handle
öğenizi sağlamanız gerekir. Aşağıdaki örnek kodda gösterildiği gibi__dso_handle
içeriği önemli değildir:extern "C" { extern void *__dso_handle __attribute__((__visibility__ ("hidden"))); void *__dso_handle; }
- Daha okunabilir bir form oluşturmak amacıyla
objdump
içinplt
girişlerinde kullanılan ARM'nın simge kod çözücüsü düzeltildi.function@plt
- GCC 4.6
libgcc.a
sürümünde sunulan şu simgeler X86 platformulibc.so
kitaplığından kaldırıldı:__aeabi_idiv0
,__aeabi_ldiv0
,__aeabi_unwind_cpp_pr1
ve__aeabi_unwind_cpp_pr2
. - MIPS
crt*_so.S
kapsamında kullanılmayan.ctors
,.dtors
ve.eh_frame
kaldırıldı. ndk-gdb
,ndk-build
DUMP_XXXX
boyunca yalnızca son çıkış satırını alacak şekilde güncellendi. Bu değişiklik,Application.mk
veyaAndroid.mk
işlevinin$(info ...)
söz dizimiyle bir şey yazdırması halindeDUMP_XXXX
sonucuna eklenmemesini sağlar. (Daha fazla bilgi)
- Sabit NDK üstbilgileri:
- Diğer değişiklikler:
-
arch-x86
vearch-mips
başlıklarıplatforms/android-[3,4,5,8]
etiketlerinden kaldırıldı. X86 ve MIPS ABI'lar yalnızca API 9 veya sonraki sürümlerde desteklendiği için bu başlıklar eksikti.- Basitleştirilmiş c++, aşağıda gösterildiği gibi bağımsız paketlerde yol içerir.
(Sorun 35279)
<path>/arm-linux-androideabi/include/c++/4.6.x-google to: <path>/include/c++/4.6/
ndk-build
, varsayılan olarak daha fazla C++ dosya uzantısını tanımaya başladı:.cc .cp .cxx .cpp .CPP .c++ .C
. Bu uzantı ayarlarının üzerine yazmak içinLOCAL_CPP_EXTENSION
öğesini kullanmaya devam edebilirsiniz.samples/san-angeles
uygulamasında, yeniden başlatma sırasında siyah ekran veya donmasına neden olan bir sorun düzeltildi.- NDK örneklerinde kullanımdan kaldırılan API'ler değiştirildi.
(Sorun 20017)
- Android-5'ten Android-7'ye
hello-gl2
- android-9'dan android-10'a
native-activity
- android-9'dan android-10'a
native-audio
- android-9'dan android-10'a
native-plasma
- Android-5'ten Android-7'ye
- Hata ayıklama araçlarının düzgün şekilde çalışması için
.note.android.ident
bölümünde (crtbegin_static/dynamic.o
bölümünde tanımlanmıştır) daha basit bir şemayla, Android yürütülebilir dosyaları için yeni markalama eklendi. Yapı üyesi ve değerleri şu şekilde tanımlanır:static const struct { int32_t namesz; /* = 8, sizeof ("Android") */ int32_t descsz; /* = 1 * sizeof(int32_t) */ int32_t type; /* = 1, ABI_NOTETYPE */ char name[sizeof "Android"]; /* = "Android" */ int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ }
.note.ABI-tag
bölümündeki önceki marka bilinci oluşturma seçenekleri kullanımdan kaldırıldı. - Çeşitli koşulları içeren
run-tests.sh
ilestandalone/run.sh
çağrısı yapan yeni bir komut dosyasırun-tests-all.sh
eklendi.run-tests.sh
komut dosyası,--abi
seçeneği olmadan çalıştırılır ve desteklenen tüm ABI'ler için testlerin çoğunu derlemek ve eklenen tüm cihazlarda çalışmak üzere iyileştirilir
Android NDK r8b (Temmuz 2012)
Bu sürümün ana özellikleri, Android 4.1 (API Düzeyi 16) sistem görüntüsü için hata ayıklama desteği ekleyen yeni bir GNU Compiler Collection (GCC) 4.6 araç zinciri ve GNU Hata Ayıklayıcı (GDB) 7.3.x'tir.
- Önemli hata düzeltmeleri:
-
- Statik kitaplıklar için Mac OS ve Windows Cygwin ortamdaki
LOCAL_SHORT_COMMANDS
sorun düzeltildi. Liste dosyası oluşturma işlemi daha hızlıdır ve proje oluşumlarını tekrarlamaktan kaçınmak için yeniden oluşturulmaz. ndk-gdb
ile ilgili birkaç sorun düzeltildi:-e
,-d
ve-s
işaretlerini daha tutarlı bir şekilde geçmek için kullanılan araç güncellendi.- Araç, boşluk içeren cihaz seri adlarını kabul edecek şekilde güncellendi.
/system/bin/link
bilgilerini almak için kullanılan araç güncellendi.Böylece ana makinedekigdb
,__dl_rtld_db_dlactivity
içinde bir kesme noktası ayarlayabilir ve bağlayıcı etkinliğinden haberdar olabilir (ör.dlopen()
çağrıldığında,solib
sembollerini yeniden tarama).
- Windows'da
ndk-build clean
düzeltildi ve./libs/*/lib*.so
sorunu kaldırılamadı. make
başarısız olduğundandk-build.cmd
, sıfır olmayan birERRORLEVEL
döndürmesi için düzeltildi.__exidx_start
ve__exidx_end
sembollerinin yanlış şekilde dışa aktarılmasını durdurmak içinlibc.so
düzeltildi.- ARM ve MIPS için
__libc_init
geçmişinden sonraki yığının gevşetilmesi sırasındaSEGV
düzeltildi.
- Statik kitaplıklar için Mac OS ve Windows Cygwin ortamdaki
- Önemli değişiklikler:
-
- Orijinal GCC 4.4.3 araç zinciriyle (
binutils
2.19 ve GDB 6.6) birlikte kullanılmak üzere GCC 4.6 araç zinciri (binutils
2.21 vegold
ile GDB 7.3.x) eklendi.- GCC 4.6 artık varsayılan araç zinciridir. Orijinal seçimi yapmak için
Application.mk
içindeNDK_TOOLCHAIN_VERSION=4.4.3
ayarlayabilirsiniz. gold
bağlayıcısı için destek yalnızca Linux ve Mac OS ana makinelerindeki ARM ve x86 mimarileri için geçerlidir. Bu destek varsayılan olarak devre dışıdır. Bu özelliği etkinleştirmek içinAndroid.mk
uygulamasınaLOCAL_LDLIBS += -fuse-ld=gold
ekleyin.-fPIE
ile derlenen programlar, Android 4.1 (API Düzeyi 16) sistem görüntülerindeki ikili programlar da dahil olmak üzere hata ayıklama için yeniGDB
özelliğini gerektirir.binutils
2.21ld
aracı, sürüm 2.22'den geri taşınan düzeltmeleri içerir:- Harici kitaplıklara yapılan zombi referanslarını yanlış şekilde saklayan
ld --gc-sections
düzeltildi. (daha fazla bilgi). - Geçerliyse
GNU_RELRO
bölümündeki orijinalp_align
vep_flags
değerlerini korumak için ARMstrip
komutu düzeltildi. Bu düzeltme olmadan-fPIE
ile oluşturulan programlarda hata ayıklaması yapılamadı. (diğer bilgiler)
- Harici kitaplıklara yapılan zombi referanslarını yanlış şekilde saklayan
- Eski platformlarla uyumluluk için
sincos()
optimizasyonu devre dışı bırakıldı.
- GCC 4.6 artık varsayılan araç zinciridir. Orijinal seçimi yapmak için
- Hiçbir zaman eXecute (NX) bitini ve
relro
/bind_now
korumaları varsayılan olarak etkinleştirmek için derleme seçenekleri güncellendi:--noexecstack
, derleyiciye-z noexecstack
ve yığın ve yığın üzerinde NX bitini etkinleştirerek arabellek taşması saldırılarına karşı NX koruması sağlayan bağlayıcıya eklendi.- Bozukluktan kaynaklanan güvenlik açıklarına karşı koruma sağlamak için bağlantı oluşturduktan sonra dahili veri bölümlerini güçlendirmek amacıyla
-z relro
ve-z now
bağlayıcıya eklendi. (daha fazla bilgi: 1, 2) - Bu özellikler, aşağıdaki seçenekler kullanılarak devre dışı bırakılabilir:
- NX korumasını derleyici için
--execstack
seçeneğini ve bağlayıcı için-z execstack
değerini ayarlayarak devre dışı bırakın. - Bağlayıcı için
-z norelro
ve-z lazy
seçeneklerini ayarlayarak dahili verilerin şifrelenmesini devre dışı bırakın. - Aşağıdaki seçenekleri ayarlayarak NDK
jni/Android.mk
ürününde bu korumaları devre dışı bırakın: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
göz atın. - NX korumasını derleyici için
- Hata ayıklama araçlarının gereken şekilde çalışabilmesi için
.note.ABI-tag
bölümünde (crtbegin_static/dynamic.o
bölümünde) Android yürütülebilir öğeleri için markalama eklendi. Yapı üyesi 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 */ }
- Orijinal GCC 4.4.3 araç zinciriyle (
- Diğer hata düzeltmeleri:
-
mips-linux-gnu
yerini değiştirme işlemiR_MIPS_TLS_LDM
soruna uyacak şekilde kısaltıldı. (daha fazla bilgi)--gc-sections
kullanılırkenld
araç sekansları düzeltildi. (daha fazla bilgi)- MIPS
GOT_PAGE
sayım sorunu düzeltildi. (daha fazla bilgi) mips_elf_count_got_symbols
için takip uyarısı sembolü bağlantısı düzeltildi.mips_elf_allocate_lazy_stub
için takip uyarısı sembolü bağlantısı düzeltildi.- Yazılabilir olması için MIPS
.dynamic
veri segmentine taşındı. - MIPS'de doğru segment boyutlarına sahip simgeler için sabit kodlu değerler 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
(veya destekleniyorsa-fpic
).-mshared
,-fpic
,-fPIC
,-fpie
veya-fPIE
değerlerini açıkça belirtmezseniz MIPS derleyicisi, PIC'i kapatan-mno-shared
ekler. Bu durumda derleyicinin-mno-shared
öğesini eklememesi düzeltildi.hello-jni
vetwo-libs
örneklerindeki yanlış paket adları düzeltildi. Böylece paket içindekitests
projesi derlenebilir.
- Diğer Değişiklikler:
-
- İkili program konumları değişti:
gdbserver
,toolchain/<arch-os-ver>/prebuilt/gdbserver
klasöründenprebuilt/android-<arch>/gdbserver/gdbserver
klasörüne taşındı.- x86 araç zinciri öneki
i686-android-linux-
yerinei686-linux-android-
olarak değiştirildi. sources/cxx-stl/gnu-libstdc++/include
velib
, GCC 4.6 ile derlendiğindesources/cxx-stl/gnu-libstdc++/4.6
, GCC 4.4.3 ile derlendiğindesources/cxx-stl/gnu-libstdc++/4.4.3
'e taşındı.libbfd.a
velibintl.a
,lib/
klasöründenlib32/
klasörüne taşındı.
- NDK araç zincirine yeniden oluşturup test etme amacıyla çeşitli komut dosyaları eklendi ve iyileştirildi:
- Win32 ve Win64 yürütülebilirleri oluşturan yeni bir Linux tarafından barındırılan araç zinciri oluşturmak için
build-mingw64-toolchain.sh
eklendi. clone
komutu kullanılarak ve NDK araç zinciri ikili programları oluşturmak için gereken dizinler için yalnızcacheckout
kullanılarakdownload-toolchain-sources.sh
hızı artırıldı.build-host-gcc.sh
vebuild-host-gdb.sh
komut dosyaları eklendi.- Belirli bir NDK yükleme dizininin veya mevcut bir NDK paketinin içeriğini kontrol etmek için
tests/check-release.sh
eklendi. tests/standalone/run.sh
bağımsız testlerini yeniden yazdı .
- Win32 ve Win64 yürütülebilirleri oluşturan yeni bir Linux tarafından barındırılan araç zinciri oluşturmak için
if_dl.h
başlığı tüm platform ve mimarilerden kaldırıldı. AçıkladığıAF_LINK
vesockaddr_dl
öğeleri BSD'ye özeldir (yani Linux'ta mevcut değildir).
- İkili program konumları değişti:
Android NDK r8 (Mayıs 2012)
NDK'nın bu sürümünde MIPS ABI desteği ve birkaç ek düzeltme yer almaktadır.
- Yeni özellikler:
-
- MIPS ABI desteği eklendi. Bu özellik, MIPS tabanlı uyumlu Android cihazlarda çalışan makine kodu oluşturmanıza olanak tanır. MIPS için önemli özellikler arasında MIPS'e özel araç zincirleri, sistem başlıkları, kitaplıklar ve hata ayıklama desteği yer alır. MIPS desteği hakkında daha fazla bilgi için NDK paketindeki
docs/CPU-MIPS.html
bölümüne bakın.Varsayılan olarak kod, ARM tabanlı cihazlar için oluşturulur. MIPS platformları için derleme yapmak istiyorsanız
Application.mk
dosyanızdakiAPP_ABI
tanımınızamips
ekleyebilirsiniz. Örneğin, aşağıdaki satırndk-build
adlı geliştiriciye üç farklı ABI için kodunuzu oluşturmasını bildirir:APP_ABI := armeabi armeabi-v7a mips
ARM montaj kodu gibi mimariye özgü montaj kaynaklarına dayanmıyorsanız MIPS makine kodunu oluşturmak için
Android.mk
dosyalarınıza dokunmanız gerekmez. make-standalone-toolchain.sh
yöntemini çağırırken--arch=mips
seçeneğini kullanarak bağımsız bir MIPS araç zinciri oluşturabilirsiniz. Ayrıntılı bilgi içindocs/STANDALONE-TOOLCHAIN.html
göz atın.
Not: Google Play, uygulamalarınızın yalnızca cihazları çalıştırabilen kullanıcılara sunulduğundan emin olmak için uygulamaları, uygulamanızda yer alan talimat grubu bilgilerine göre filtreler. filtrelemeyi etkinleştirmek için herhangi bir işlem yapmanıza gerek yoktur. Ayrıca, Android sistemi ayrıca yükleme sırasında uygulamanızı kontrol eder ve yalnızca uygulama, cihazın CPU mimarisi için derlenmiş bir kitaplık sağlarsa yüklemenin devam etmesine izin verir.
- MIPS ABI desteği eklendi. Bu özellik, MIPS tabanlı uyumlu Android cihazlarda çalışan makine kodu oluşturmanıza olanak tanır. MIPS için önemli özellikler arasında MIPS'e özel araç zincirleri, sistem başlıkları, kitaplıklar ve hata ayıklama desteği yer alır. MIPS desteği hakkında daha fazla bilgi için NDK paketindeki
- Önemli hata düzeltmeleri:
-
- GAbi++ uygulamasında,
dynamic_cast<D>(b)
temel sınıf nesnesine aitdynamic_cast<D>(b)
sonucununD
temel sınıfından ters yönde yanlış ayarlanmış olarak yazım hatası düzeltildi.b
(Sorun 28721) make-standalone-toolchain.sh
tarafındanlibsupc++.*
öğesini kopyalayamama sorunu düzeltildi.
- GAbi++ uygulamasında,
- Diğer hata düzeltmeleri:
-
- Kullanıcı,
SHELL
ortam değişkenini yeniden tanımlamış olsa bilendk-build.cmd
öğesinin düzgün şekilde çalışmasını sağlamak içinndk-build.cmd
düzeltildi. Bu değişken, Windows ortamlarına çeşitli geliştirme araçları yüklenirken değiştirilebilir.
- Kullanıcı,
Android NDK r7c (Nisan 2012)
Bu NDK sürümü, Tegra2 tabanlı cihazlar için önemli bir düzeltmenin yanı sıra birkaç ek düzeltme ve iyileştirme içerir:
- Önemli hata düzeltmeleri:
-
- GNU STL armeabi-v7a ikili programlarının NEON olmayan cihazlarda kilitlenmemesi düzeltildi. NDK r7b ile sağlanan dosyalar doğru şekilde yapılandırılmadığından Tegra2 tabanlı cihazlarda ve diğer kayan nokta işlevlerini (ör.
cosf
,sinf
,expf
) bulabilirsiniz.
- GNU STL armeabi-v7a ikili programlarının NEON olmayan cihazlarda kilitlenmemesi düzeltildi. NDK r7b ile sağlanan dosyalar doğru şekilde yapılandırılmadığından Tegra2 tabanlı cihazlarda ve diğer kayan nokta işlevlerini (ör.
- Önemli değişiklikler:
-
NDK_OUT
ortam değişkeni aracılığıyla özel çıkış dizinleri için destek eklendi. Bu değişken tanımlandığında$PROJECT_PATH/obj
yerine tüm oluşturulan ara dosyaları depolamak için kullanılır. Değişken,ndk-gdb
tarafından da tanınır.Android.mk
içindeLOCAL_SHORT_COMMANDS
eklentisini tanımlayarak yüzlerce, hatta binlerce kaynak dosyası içeren modüller oluşturma desteği eklendi.true
Bu değişiklik, NDK derleme sistemini komut satırı uzunluğu sınırlamaları için geçici bir çözüm olarak çoğu bağlayıcı veya arşivleyici seçeneğini liste dosyalarına yerleştirmeye zorlar. Ayrıntılar için
docs/ANDROID-MK.html
adresini ziyaret edin.
- Diğer hata düzeltmeleri:
-
cpufeatures
yardımcı kitaplığındaandroid_getCpuCount()
uygulaması düzeltildi. Sistem tarafından çekirdeklerin dinamik olarak etkinleştirildiği belirli cihazlarda, önceki uygulama, fiziksel olarak kullanılabilir çekirdeklerin toplam sayısı yerine işlevin ilk çağrıldığı etkin çekirdeklerin toplam sayısını bildirir.
Android NDK r7b (Şubat 2012)
NDK'nın bu sürümünde yerel Windows derlemeleri, Cygwin ve diğer birçok iyileştirme yapılmıştır:
- Önemli hata düzeltmeleri:
-
- Çok çekirdekli ARM tabanlı cihazlarda doğruluk sorunlarını önlemek için
sys/atomics.h
güncellendi. NDK'nın bu sürümüyle değiştirilmemiş kaynaklarınızı yeniden oluşturun, bu sorunun tamamen ortadan kaldırılması gerekir. Daha fazla bilgi içindocs/ANDROID-ATOMICS.html
sayfasını okuyun. - NDK r7'de görünen hata ayıklama sorunlarını düzeltmek için
binutils
2.19'a geri döndürüldü (binutils
2.20.1'e geçiş yapıldı). - 32 bit Linux'ta
ndk-build
düzeltildi. Paketleme hatası,awk
dosyasının 64 bit sürümünün NDK r7'deprebuilt/linux-x86/bin
içerisinde yürütülebilmesine neden oldu. - Yerel Windows derlemesi (
ndk-build.cmd
) düzeltildi. Diğer derleme modları etkilenmedi. Düzeltmeler şunları içerir:- Proje yolunuzun üst kısmında olmayan bir dizinden (ör. herhangi bir alt dizinden)
ndk-build.cmd
çağrılmaya çalışılırken sonsuz bir döngü / yığın taşma hatası kaldırıldı. - Otomatik olarak oluşturulan bağımlılık dosyalarının yok sayılmasına neden olan sorun düzeltildi. Bu, bir başlığın güncellenmesinin, onu içeren kaynakların yeniden derlemesini tetiklemediği anlamına gelir.
- Dosya veya yollardaki özel karakterlerin (ör. boşluk ve tırnak işaretleri) doğru şekilde işlenmemesi sorunu düzeltildi.
- Proje yolunuzun üst kısmında olmayan bir dizinden (ör. herhangi bir alt dizinden)
- Bağımsız araç zinciri,
-lstdc++
kullanırken doğru ikili programlar oluşturan (yani, GNUlibstdc++
C++ çalışma zamanına giden bağlantı) düzeltildi. Paylaşılan kitaplık sürümüne bağlantı oluşturmak istiyorsanız-lgnustl_shared
veya statik sürüm için-lstdc++
kullanmanız gerekir.Bu düzeltmeyle ilgili ayrıntılar için
docs/STANDALONE-TOOLCHAIN.html
sayfasına göz atın. - Cygwin'deki
gnustl_shared
düzeltildi. Bağlayıcı, dosya doğru konumda olsa bilelibsupc++.a
adlı dosyayı bulamadığından şikayet etti. - Belirli bir C++ çalışma zamanı kullanılmadığında Cygwin C++ bağlantısı
APP_STL
tarihine kadar düzeltildi.
- Çok çekirdekli ARM tabanlı cihazlarda doğruluk sorunlarını önlemek için
- Diğer değişiklikler:
-
- Uygulamanız GNU
libstdc++
çalışma zamanını kullandığında, derleyici artık istisnaları ve RTTI'yi zorla etkinleştirmeyecektir. Bu değişiklik daha küçük kod kullanımıyla sonuçlanır.Bu özelliklere ihtiyacınız varsa aşağıdakilerden birini yapmanız gerekir:
- Modüllerinizde veya
Application.mk
adresinde açıkça istisnaları ve/veya RTTI'yi etkinleştirin. (önerilen) Application.mk
cihazınızdaAPP_GNUSTL_FORCE_CPP_FEATURES
,'exceptions'
,'rtti'
veya her ikisini birden tanımlayın. Ayrıntılı bilgi içindocs/APPLICATION-MK.html
göz atın.
- Modüllerinizde veya
ndk-gdb
uygulaması artık bağımsız işlemlerde çalışan özel hizmetlere sahip olduğunda düzgün çalışıyor.ps
tarafından listelenen ilk süreç (genellikle bir hizmet işlemidir) yerine ana uygulama işleminde hata ayıklar.- NDK r7'nin
LOCAL_ARM_MODE
değerini yakalayamadığı ve 32 bit talimatlarda her zaman belirli kaynak dosyaları (tümünü değil) derlediği nadir bir hata düzeltildi. STLport
: Kaynakları Android platformu sürümüyle eşleşecek şekilde yenileyin. Bu güncellemeyle birkaç küçük hata düzeltildi:- Tamamlanmamış türden örnekler için sabit değer
- Küçük "==" ile "=" yazım yanlışı karşılaştırması düzeltildi
string::assign
içindememcpy
yerinememmove
kullanıldıIsNANorINF
,IsINF
,IsNegNAN
vb. öğeleri daha iyi işleme.
Tüm ayrıntılar için kaydetme günlüğüne göz atı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 için derlendi. Bu değişikliğin doğruluğu etkilememiş olsa da doğru ABI kullanılması performansı biraz artıracaktır.
cpu-features
yardımcı kitaplığı, isteğe bağlı üç x86 CPU özelliğini (SSSE3
,MOVBE
vePOPCNT
) bildirecek şekilde güncellendi. Daha fazla bilgi içindocs/CPU-FEATURES.html
adresine göz atın.docs/NDK-BUILD.html
, özel birApplication.mk
dosyası seçmek içinNDK_APP_APPLICATION_MK
yerineNDK_APPLICATION_MK
bahsini kullanacak şekilde güncellendi.- Cygwin:
ndk-build
, çağrıldığında artık geçerli dizinde boş bir "NUL" dosyası oluşturmaz. - Cygwin: Daha iyi otomatik bağımlılık algılama eklendi. Önceki sürümde
aşağıdaki durumlarda düzgün çalışmadı:
- Cygwin Drive ön eki
/cygdrive
değilken. - Sürücüsüz eklemeler kullanıldığında (örneğin, Cygwin'in
C:\Some\Dir
yerine/home
yerine\\server\subdir
ifadesini kullanacağı durumlar).
- Cygwin Drive ön eki
- Cygwin:
ndk-build
,$NDK/prebuilt/windows/bin
altındaki yerel Windows araçlarını belirli Cygwin ve/veya GNU Maket sürümleriyle kullanmaya çalışmamaktadır.
- Uygulamanız GNU
Android NDK r7 (Kasım 2011)
Bu NDK sürümü, Android 4.0 platformunu destekleyecek yeni özelliklerin yanı sıra birçok başka ekleme ve iyileştirme içerir:
- Yeni özellikler
-
- Android 4.0 (API düzeyi 14) için resmi NDK API'leri eklendi. Bu API'ler aşağıdaki
yerel özellikleri platforma ekledi:
- Khronos Group OpenMAX AL 1.0.1 standardını temel alan yerel multimedya API'si. Yeni
<OMXAL/OpenMAXAL.h>
ve<OMXAL/OpenMAXAL_Android.h>
üstbilgileri, API 14'ü hedefleyen uygulamaların Android'e özel yeni bir arabellek arayüzü arayüzü kullanarak doğrudan yerel koddan multimedya çıkışı gerçekleştirmelerine olanak tanır. Daha fazla bilgi içindocs/openmaxal/index.html
ve http://www.khronos.org/openmax/ adresine bakın. - Khronos Group OpenSL ES 1.0.1 standardına göre yerel ses API'sı güncellendi. API Seviyesi 14 ile artık sıkıştırılmış sesin (ör. MP3, AAC, Vorbis) kodunu PCM'ye dönüştürebilirsiniz. Daha fazla bilgi için
docs/opensles/index.html
ve http://www.khronos.org/opensles/ adresine bakın.
- Khronos Group OpenMAX AL 1.0.1 standardını temel alan yerel multimedya API'si. Yeni
- CCache desteği eklendi. Büyük yeniden derlemeleri hızlandırmak için
NDK_CCACHE
ortam değişkeniniccache
(veyaccache
ikili programınızın yolu) olarak tanımlayın. NDK derleme sistemi, herhangi bir kaynak dosyayı derlerken otomatik olarak CCache'i kullanır. Örneğin:export NDK_CCACHE=ccache
Not: CCache, NDK sürümüne dahil değildir. Bu nedenle, kullanmadan önce SDK'yı yüklemeniz gerekir. CCache hakkında daha fazla bilgi için http://ccache.samba.org adresine bakın.
- NDK modüllerinizi, belirtilen NDK sürümünüz tarafından desteklenen tüm ABI'ler için oluşturmak istediğinizi belirtmek amacıyla
APP_ABI
öğesiniall
olarak ayarlama desteği eklendi. Yani,Application.mk
satırınızdaki aşağıdaki iki satırdan biri bu sürümle eşdeğerdir:APP_ABI := all APP_ABI := armeabi armeabi-v7a x86
Bu yöntem, komut satırından
ndk-build
çağırırkenAPP_ABI
öğesini tanımlarsanız projenizinApplication.mk file
değerini değiştirmeden desteklenen tüm ABI'ler için derleme yapılıp yapılmadığını kontrol etmenin hızlı bir yoludur. Örneğin:ndk-build APP_ABI=all
Android.mk
modülüne, modülünüzün kullandığı C++ özelliklerini (RTTI veya İstisnalar) bildirmenizi sağlayan birLOCAL_CPP_FEATURES
değişkeni eklendi. Bu, söz konusu özelliklere bağlı, önceden oluşturulmuş modülleriniz varsa nihai bağlantının doğru şekilde çalışmasını sağlar. Daha fazla bilgi içindocs/ANDROID-MK.html
vedocs/CPLUSPLUS-SUPPORT.html
belgelerine bakın.- Derleme komutlarında kullanılan kaynak ve nesne dosyalarının yolları kısaltıldı. Proje yolunuzdan
$NDK/ndk-build
çağrılırken derleme komutlarına aktarılan kaynak, nesne ve ikili dosya yolları, geçerli dizine göre iletildikleri için artık çok daha kısadır. Bu, çok sayıda kaynak dosya içeren projeler oluştururken, ana makine işletim sisteminiz tarafından desteklenen maksimum komut satırı uzunluğu sınırlarını aşmamak için yararlıdır.ndk-build
yöntemini proje ağacınızın alt dizininden çağırırsanız veyaNDK_PROJECT_PATH
öğesini belirli bir dizine işaret edecek şekilde tanımlarsanız davranış değişmez.
- Android 4.0 (API düzeyi 14) için resmi NDK API'leri eklendi. Bu API'ler aşağıdaki
yerel özellikleri platforma ekledi:
- Deneysel özellikler
-
NDK kaynak dosyalarınızı, proje yolunuz komut satırından
ndk-build.cmd
komut dosyasını çağırarak Windows'da Cygwin olmadan oluşturabilirsiniz. Komut dosyası, orijinalndk-build
komut dosyasıyla tam olarak aynı bağımsız değişkenleri alır. Windows NDK paketi, GNU Make, Awk ve derlemenin gerektirdiği diğer araçlar için önceden oluşturulmuş ikili programlar içerir. Çalışan bir derleme sistemi edinmek için herhangi bir işlem yapmanız gerekmez.Önemli:
ndk-gdb
, Windows'da çalışmaz. Bu nedenle, hata ayıklamak için Cygwin'e ihtiyacınız vardır.Bu özellik hâlâ deneme aşamasında olduğundan bu özelliği deneyebilir ve sorunları herkese açık hata veritabanı veya herkese açık forumda bildirebilirsiniz. NDK ile gönderilen tüm örnekler ve birim testleri bu özellikle başarılı bir şekilde derlenir.
- Önemli hata düzeltmeleri
-
- İçe aktarılan paylaşılan kitaplıklar, şu anda varsayılan olarak hedef yükleme konumuna (
libs/<abi>
) yüklenirse (Application.mk
)APP_MODULES
özelliği tanımlanmadıysa. Örneğin, bir üst düzey modülfoo
bir modülübar
içe aktarırsa hemlibfoo.so
hem delibbar.so
yükleme konumuna kopyalanır. Daha önce,APP_MODULES
öğesinde debar
belirtmediğiniz sürece yalnızcalibfoo.so
kopyalandı.APP_MODULES
öğesini açıkça tanımlarsanız davranış değişmez. ndk-gdb
artık ANA intent filtrelerinde birden fazla kategoriye sahip etkinlikler için doğru bir şekilde çalışıyor.- Statik kitaplık içe aktarma işlemleri artık düzgün bir şekilde gerçekleştirilmektedir. Örneğin, üst düzey bir modül
foo
statik kitaplığını (zoo
) içe aktaranbar
statik kitaplığını içe aktarırsalibfoo.so
artık hemlibbar.a
hem delibzoo.a
ile bağlantılandırılacaktır.
- İçe aktarılan paylaşılan kitaplıklar, şu anda varsayılan olarak hedef yükleme konumuna (
- Diğer değişiklikler
-
docs/NATIVE-ACTIVITY.HTML
: Yazım hatası düzeltildi. Yerel etkinlikler için minimum API düzeyi 9 değil 8 olmalıdır.docs/STABLE-APIS.html
: API düzeyi 9'dan itibaren EGL'yi desteklenen kararlı bir API olarak listeleyen eksik dokümanlar eklendi.download-toolchain-sources.sh
: android.googlesource.com adresinden AOSP sunucularının yeni konumu olan araç zinciri kaynaklarını indirmek için güncellendi.gabi++
adlı yeni C++ destek çalışma zamanı eklendi. Bu konu hakkında daha fazla bilgiyi güncellenmişdocs/CPLUSPLUS-SUPPORT.html
adresinde bulabilirsiniz.- GNU libstdc++ v3'ün (GPLv3 lisansı) paylaşılan kitaplık sürümüne karşılık gelen,
gnustl_shared
adlı yeni bir C++ destek çalışma zamanı eklendi. Daha fazla bilgiyidocs/CPLUSPLUS-SUPPORT.html
adresinde bulabilirsiniz - STLport C++ çalışma zamanlarında RTTI desteği eklendi (istisnalar için destek yoktur).
LOCAL_CPP_EXTENSION
içindeki birden fazla dosya uzantısı için destek eklendi. Örneğin, hemfoo.cpp
hem debar.cxx
öğesini C++ kaynakları olarak derlemek için aşağıdakileri belirtin:LOCAL_CPP_EXTENSION := .cpp .cxx
- NDK tarafından sağlanan bağlantı zamanının paylaşıldığı sistem kitaplıklarından istenmeyen birçok dışa aktarılmış simge kaldırıldı. Bu sayede, bağımsız araç zinciriyle oluşturulan kodun yanlışlıkla, kararlı olmayan bir ABI simgesine (ör. platformu oluşturmak için kullanılan araç zinciri her değiştiğinde değişen bir libgcc.a simgesi) bağımlı hale gelme riski ortadan kalkar
- Daha fazla uzantıyı desteklemek için EGL ve OpenGLES Khronos başlıkları yenilendi. Her uzantının çalışma zamanında istemci uygulama tarafından kontrol edilmesi gerektiğinden, bu işlemin ilgili kitaplıklar için NDK ABI'ları değiştirmediğini unutmayın.
Kullanılabilir uzantılar, cihazın çalıştığı platform sürümüne değil, gerçek cihazınıza ve GPU sürücülerinize bağlıdır. Üstbilgi değişiklikleri,
eglGetProcAddress()
veyaglGetProcAddress()
ile devam eden uzantıları kullanmayı kolaylaştırmak için yeni sabit değerler ve türler ekler. Aşağıdaki listede, yeni desteklenen uzantılar açıklanmaktadır:- GLES 1.x
-
GL_OES_vertex_array_object
GL_OES_EGL_image_external
GL_APPLE_texture_2D_limited_npot
GL_EXT_blend_minmax
GL_EXT_discard_framebuffer
GL_EXT_multi_draw_arrays
GL_EXT_read_format_bgra
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_lod_bias
GL_IMG_read_format
GL_IMG_texture_compression_pvrtc
GL_IMG_texture_env_enhanced_fixed_function
GL_IMG_user_clip_plane
GL_IMG_multisampled_render_to_texture
GL_NV_fence
GL_QCOM_driver_control
GL_QCOM_extended_get
GL_QCOM_extended_get2
GL_QCOM_perfmon_global_mode
GL_QCOM_writeonly_rendering
GL_QCOM_tiled_rendering
- GLES 2.0
-
GL_OES_element_index_uint
GL_OES_get_program_binary
GL_OES_mapbuffer
GL_OES_packed_depth_stencil
GL_OES_texture_3D
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_texture_half_float_linear
GL_OES_texture_npot
GL_OES_vertex_array_object
GL_OES_EGL_image_external
GL_AMD_program_binary_Z400
GL_EXT_blend_minmax
GL_EXT_discard_framebuffer
GL_EXT_multi_draw_arrays
GL_EXT_read_format_bgra
GL_EXT_texture_format_BGRA8888
GL_EXT_texture_compression_dxt1
GL_IMG_program_binary
GL_IMG_read_format
GL_IMG_shader_binary
GL_IMG_texture_compression_pvrtc
GL_IMG_multisampled_render_to_texture
GL_NV_coverage_sample
GL_NV_depth_nonlinear
GL_QCOM_extended_get
GL_QCOM_extended_get2
GL_QCOM_writeonly_rendering
GL_QCOM_tiled_rendering
- EGL
-
EGL_ANDROID_recordable
EGL_NV_system_time
Android NDK r6b (Ağustos 2011)
NDK'nın bu sürümü, r6'ya kıyasla yeni özellik içermez. r6b sürümü, r6 sürümünde aşağıdaki sorunları ele alır:
- Önemli hata düzeltmeleri
-
APP_ABI="armeabi x86"
çoklu mimari derlemeleri için kullanıldığında derleme düzeltildi.- Önceden oluşturulmuş STLport ikili programlarının NDK sürüm paketindeki konumu düzeltildi. Sunum komut dosyasındaki bir hata, dosyaları yanlış konuma yerleştirdi.
- x86standalone araç zinciriyle paylaşılan kitaplıklarda
atexit()
kullanımı düzeltildi. make-standalone-toolchain.sh --arch=x86
tarihinde düzeltildi. Eskiden uygun GNU libstdc++ ikili programları doğru konuma kopyalanamıyordu.__dso_handle
sembolünün tanımının ve boyutunun olmamasıyla ilgili bağımsız araç zinciri bağlayıcı uyarıları düzeltildi (yalnızca ARM).- x86 derlemeleri için
$(SYSROOT)/usr/include
öğe siparişi düzeltildi. Daha fazla bilgi için hata bölümüne bakın. - x86 bağımsız sistemlerinde x86'ya özgü sistemlerde kullanılan
ptrdiff_t
vesize_t
tanımlarını düzeltin.
Android NDK r6 (Temmuz 2011)
Bu NDK sürümü, x86 ABI ve diğer küçük değişikliklerle ilgili destek sunar.
Bu sürümdeki değişiklikleri açıklayan ayrıntılı bilgiler için NDK paketindeki CHANGES.HTML
belgesini okuyun.
- Genel notlar:
-
- x86 ABI desteği eklendi. Bu özellik, x86 tabanlı uyumlu Android cihazlarda çalışan makine kodu oluşturmanıza olanak tanır. x86'nın başlıca özellikleri arasında x86'ya özel araç zincirleri, sistem başlıkları, kitaplıklar ve hata ayıklama desteği yer alır. x86 desteğiyle ilgili tüm ayrıntılar için NDK paketindeki
docs/CPU-X86.html
bölümüne bakın.Varsayılan olarak kod, ARM tabanlı cihazlar için oluşturulur ancak x86 platformları için derlemek amacıyla
Application.mk
dosyanızdakiAPP_ABI
tanımınıza x86'yı ekleyebilirsiniz. Örneğin, aşağıdaki satırndk-build
adlı geliştiriciye üç farklı ABI için kodunuzu oluşturmasını bildirir:APP_ABI := armeabi armeabi-v7a x86
ARM tabanlı montaj kaynaklarına güvenmediğiniz sürece x86 makine kodunu oluşturmak için
Android.mk
dosyalarınıza dokunmanız gerekmez. make-standalone-toolchain.sh
yöntemini çağırırken--toolchain=x86-4.4.3
seçeneğini kullanarak bağımsız bir x86 araç zinciri oluşturabilirsiniz. Ayrıntılı bilgi içindocs/STANDALONE-TOOLCHAIN.html
göz atın.- Yeni
ndk-stack
aracı,logcat
bölgesinde yerel kod tarafından oluşturulan yığın izlemeleri çevirmenize olanak tanır. Bu araç, talimat adreslerini her bir yığın çerçevesine karşılık gelen işlev, kaynak dosya ve satır numarası gibi öğeleri içeren okunabilir bir biçime çevirir. Daha fazla bilgi edinmek ve kullanım örneğini görmek içindocs/NDK-STACK.html
adresine göz atın.
- x86 ABI desteği eklendi. Bu özellik, x86 tabanlı uyumlu Android cihazlarda çalışan makine kodu oluşturmanıza olanak tanır. x86'nın başlıca özellikleri arasında x86'ya özel araç zincirleri, sistem başlıkları, kitaplıklar ve hata ayıklama desteği yer alır. x86 desteğiyle ilgili tüm ayrıntılar için NDK paketindeki
- Diğer değişiklikler:
- NDK r5'ten itibaren kullanımdan kaldırılan
arm-eabi-4.4.0
, NDK dağıtımından kaldırıldı.
Android NDK r5c (Haziran 2011)
Bu NDK sürümü, r5b'ye kıyasla yeni özellikler içermez. r5c sürümünde r5b sürümünde aşağıdaki sorunlar ele alınır:
- Önemli hata düzeltmeleri:
-
ndk-build
: Hata ayıklaması yapılabilecek projelerin paralel derlemelerini yapmaya çalışırken görünen nadir görülen bir hata düzeltildi.LOCAL_WHOLE_STATIC_LIBRARIES
adlı aracın yeni araç zinciriyle doğru şekilde çalışmasını engelleyen bir yazım hatası düzeltildi vedocs/ANDROID-MK.html
bölümüne bu doküman için dokümanlar eklendi.gnustl_static
ile bağlantılı kodun, API düzeyi 8'den (Android 2.2) eski platform sürümlerinde çalışırken kilitlenmesine neden olan hata düzeltildi.ndk-gdb
: Android 3.0 veya sonraki sürümlerin yüklü olduğu cihazlarda hata ayıklarken segmentasyon hatasına neden olan bir hata düzeltildi.<android/input.h>
: API düzeyi 9'da (Android 2.3) sunulan iki işlev yanlıştır ve sabittir. Bu durum kaynak API'yi kesintiye uğratırken sistemin ikili arayüzü değişmez. Yanlış işlevlerde birhistory_index
parametresi eksikti ve doğru tanımlar aşağıda gösteriliyor:float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t pointer_index, size_t history_index); float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, size_t pointer_index, size_t history_index);
- API düzeyi 9 (Android 2.3) için C kitaplığı ARM ikili programı, bağlantı sırasında ilgili API düzeyinde eklenen yeni işlevleri (ör.
pthread_rwlock_init
) doğru şekilde gösterecek şekilde güncellendi.
- Küçük iyileştirmeler ve düzeltmeler:
-
- Nesne dosyaları artık daima
LOCAL_SRC_FILES
içinde göründükleri sırayla bağlanır. Dosyalar bunun yerine kaynak uzantılarına göre gruplandırıldığından daha önce bu durum görülmedi. import-module
başarısız olduğunda, artık aranan dizinlerin listesini yazdırır. Bu işlem, derleme sistemi tarafından kullanılanNDK_MODULE_PATH
tanımının doğru olup olmadığını kontrol etmenizi sağlar.import-module
başarılı olduğunda, modülün bulunduğu dizini günlüğe yazdırır (NDK_LOG=1
ile görülebilir).- Projede çok fazla sayıda dizine ekleme dizini olması durumunda, hata ayıklaması yapılabilecek uygulamaların derleme hızı artırıldı.
ndk-gdb
:adb shell
hatalarının ve gelişmiş hata mesajlarının daha iyi tespit edilmesi.<pthread.h>
: API düzeyi 9 (Android 2.3) ve sonraki sürümler içinPTHREAD_RWLOCK_INITIALIZER
tanımı düzeltildi.- Bir modülün kendini içe aktarmasına neden olan, GNU Make'de sonsuz döngüye neden olan bir sorun düzeltildi.
LOCAL_ARM_NEON
doğru (build/core/build-binary.mk
cinsinden yazım hatası) olarak ayarlanırsa derlemenin başarısız olmasına neden olan bir hata düzeltildi..s
derleme dosyalarının derlenmesini engelleyen bir hata düzeltildi (.S
dosya kullanılabilirdi).
- Nesne dosyaları artık daima
Android NDK r5b (Ocak 2011)
Bu NDK sürümü, r5'e kıyasla yeni özellikler içermez. r5b sürümü, r5 sürümünde aşağıdaki sorunları ele alır:
- r5 ikili programları için glibc 2.11 gereklidir, ancak r5b ikili programları, glibc 2.7 veya sonrakilerini hedefleyen özel bir araç zinciriyle oluşturulur. Linux araç zinciri ikili programları artık Ubuntu 8.04 veya sonraki sürümlerde çalışıyor.
- Arm-linux-androideabi-4.4.3 araç zincirindeki bir derleyici hatasını düzeltir. Önceki ikili program, imzalı karakterlerle çalışırken geçersiz parmak izi sıraları oluşturuyordu.
- APP_STL'nin "gnustl_static" değeri için eksik dokümanları ekler. Bu belgeler, GNU libstdc++ statik kitaplık sürümüyle bağlantı kurmanıza olanak tanır.
- Aşağıdaki
ndk-build
sorun düzeltildi:- Windows'da bir derleme hatası meydana geldiğinde tutarsız bağımlılık dosyaları oluşturan bir hata. Bu sayede, kaynak koddaki hata düzeltildikten sonra düzgün bir derleme engellendi.
- Android NDK yüklemesi veya proje yolu için çok kısa yollar kullanıldığında geçersiz bağımlılık dosyaları oluşturulmasına neden olan, Cygwin'e özgü bir hata. Bu da artımlı derlemeleri imkansız hale getirdi.
- cpufeatures kitaplığının yeni NDK araç zinciriyle düzgün çalışmasını engelleyen bir yazım hatası.
- Cygwin'de derlemeler, her kaynak veya nesne dosyası için GNU Make komutundan
cygpath -m
çağrılarının yapılmasını önleyerek çok büyük kaynak ağaçlarıyla ilgili sorunlara neden olur. Bunun düzgün çalışmaması durumunda,cygpath -m
öğesini tekrar kullanmak için ortamınızdaNDK_USE_CYGPATH=1
özelliğini tanımlayın. - Cygwin yüklemesi artık kullanıcıyı, boşluk içeren geçersiz yükleme yollarıyla ilgili olarak bilgilendirmektedir. Daha önce, geçersiz bir yol, GNU Make'in yanlış bir sürümüyle ilgili şikayet gönderen bir hata oluşturuyordu (doğru sürüm yüklenmiş olsa bile).
NDK_MODULE_PATH
ortam değişkeninin iki nokta üst üste ile ayrılmış birden çok dizin içerdiğinde düzgün çalışmasını engelleyen bir yazım hatası düzeltildi.prebuilt-common.sh
komut dosyası, 32 bit araç zincirinin Snow Leopard'da düzgün bir şekilde yeniden derlemesine olanak tanıyan ana makine etiketine güvenmek yerine, derleyiciyi 64 bit tarafından oluşturulan makine kodu için kontrol eden düzeltmeler içerir. Araç zinciri yeniden oluşturma komut dosyaları artık 32 bit ana makine araç zinciri kullanmayı da destekliyor.<netinet/in.h>
kimlikliINET_ADDRSTRLEN
için eksik bir beyan eklendi.IN6_IS_ADDR_MC_NODELOCAL
veIN6_IS_ADDR_MC_GLOBAL
için eksik bildirimler<netinet/in6.h>
içine eklendi.-std=c99
ile derleme yapılmasına izin vermek için<asm/byteorder.h>
içindeki "asm", "__asm__" ile değiştirildi.
Android NDK r5 (Aralık 2010)
NDK'nın bu sürümünde, birçoğu oyunların ve yerel koddan yoğun bir şekilde yararlanan benzer uygulamaların geliştirilmesini desteklemek için sunulan birçok yeni API yer almaktadır. Geliştiriciler API'leri kullanarak etkinliklere, sese, grafiklere, pencere yönetimine, öğelere ve depolama alanına doğrudan yerel erişim elde ederler. Ayrıca geliştiriciler, yeni NativeActivity
sınıfının yardımıyla Android uygulama yaşam döngüsünü yerel kodda da uygulayabilir. Bu sürümdeki değişiklikleri açıklayan ayrıntılı bilgiler için, indirilen NDK paketinde yer alan CHANGES.HTML
belgesini okuyun.
- Genel notlar:
-
- Yerel etkinlikler için destek ekler. Bu sayede Android uygulama yaşam döngüsünü yerel kodda uygulayabilirsiniz.
- Aşağıdakiler için yerel destek ekler:
- Giriş alt sistemi (klavye ve dokunmatik ekran gibi)
- Sensör verilerine (ivme ölçer, pusula, jiroskop) erişim.
- Giriş ve sensör etkinlikleri gibi öğeleri beklemek için etkinlik döngüsü API'leri.
- Pencere ve yüzey alt sistemi
- Platformun ses efektleri üzerinde kontrolün yanı sıra oynatmayı ve kaydı destekleyen OpenSL ES standardını temel alan ses API'ları
.apk
dosyasında paketlenmiş öğelere erişim.
- Daha iyi kod oluşturan ve artık ürünlerini
./configure && make
ile derlemek isteyen kişiler için bağımsız bir çapraz derleyici olarak da kullanılabilen yeni bir araç zinciri (GCC 4.4.3 sürümü) içerir. Ayrıntılar için docs/STANDALONE-TOOLCHAIN.html sayfasına göz atın. GCC 4.4.0 için ikili programlar yine de sağlanır, ancak 4.2.1 ikili programları kaldırılır. - Önceden oluşturulmuş statik ve paylaşılan kitaplıklar (docs/PREBUILTS.html) için destek ekler ve üçüncü taraf modüllerinin paylaşımını ve kullanımını çok daha kolay hale getirmek için modülü dışa ve içe aktarma işlemlerini (docs/IMPORT-MODULE.html) açıklar.
- Yardımcı modül olarak varsayılan bir C++ STL uygulaması sağlar (STLport'a göre). Statik veya paylaşılan kitaplık olarak kullanılabilir (ayrıntılar ve kullanım örnekleri kaynaklar/android/stlport/README'dedir). STLport (statik veya paylaşılan) ve GNU libstdc+ (yalnızca statik) için önceden oluşturulmuş ikili programlar da, varsayılan C++ STL uygulaması yerine bu kitaplıklara göre derleme yapmayı seçerseniz sağlanır. Varsayılan STL uygulamasında C++ İstisnaları ve RTTI desteklenmez. Daha fazla bilgi için docs/CPLUSPLUS-SUPPORT.HTML adresini inceleyin.
- CPU türünün raporlamasını iyileştiren
cpufeatures
yardımcı kitaplığında yapılan iyileştirmeleri içerir (bazı cihazlar daha önce ARMv6 CPU olduğunda ARMv7 CPU'sunu bildirmiştir). Bu kitaplıktan yararlanan geliştiricilerin uygulamalarını yeniden derleyip Google Play'e yüklemelerini öneririz. - OpenGL ES dokuları ve hizmetleri oluşturup yönetmenize olanak tanıyan bir EGL kitaplığı ekler.
- Yerel etkinliğin nasıl yazılacağını göstermek için yeni örnek uygulamalar (
native-plasma
venative-activity
) ekler. - Çok sayıda hata düzeltmesi ve başka küçük iyileştirmeler içerir. Değişikliklerin daha ayrıntılı bir listesi için docs/CHANGES.html adresini ziyaret edin.
Android NDK r4b (Haziran 2010)
- NDK r4b notları:
-
NDK derlemesi ve hata ayıklama komut dosyalarındaki çeşitli sorunlarla ilgili düzeltmeleri içerir. NDK r4 kullanıyorsanız NDK r4b derlemesini indirmenizi öneririz. Bu sürümdeki değişiklikleri açıklayan ayrıntılı bilgiler için, indirilen NDK paketindeki CHANGES.TXT dokümanını okuyun.
- Genel notlar:
-
- Yeni
ndk-build
derleme komutuyla basitleştirilmiş bir derleme sistemi sağlar. - Yeni
ndk-gdb
komutu aracılığıyla, üretim cihazlarında oluşturulan makine kodlarında kolayca yerel hata ayıklama desteği sunar. - ARM tabanlı CPU mimarileri için Android'e özel yeni bir ABI,
armeabi-v7a
. Yeni ABI, mevcutarmeabi
ABI'yi aşağıdaki CPU talimat grubu uzantılarını içerecek şekilde genişletir:- Başparmak-2 talimatları
- VFP donanım FPU talimatları (VFPv3-D16)
- ARM Gelişmiş SIMD (NEON) GCC içgüdüleri ve VFPv3-D32 için isteğe bağlı destek. Motorola'dan Verizon Droid ve Google Nexus One gibi cihazlar tarafından desteklenir.
- Yeni bir
cpufeatures
statik kitaplık (kaynaklarla birlikte), uygulamanızın ana makine cihazının CPU özelliklerini çalışma zamanında algılamasını sağlayan bir özellik ekler. Uygulamalar özellikle ARMv7-A desteğinin yanı sıra VFPv3-D32 ve NEON desteğini kontrol edebilir ve gerektiğinde ayrı kod yolları sağlayabilir. - CPU özelliklerini kontrol etmek için
cpufeatures
kitaplığının nasıl kullanılacağını ve ardından CPU tarafından destekleniyorsa NEON içgörülerini kullanarak optimize edilmiş bir kod yolunun nasıl kullanılacağını gösteren örnek bir uygulama (hello-neon
) ekler. - NDK tarafından desteklenen talimat gruplarından biri veya her ikisi için makine kodu oluşturmanıza olanak tanır. Örneğin, aynı anda hem ARMv5 hem de ARMv7-A mimarileri için derleme oluşturabilir ve her şeyin uygulamanızın son
.apk
öğesinde depolanmasını sağlayabilirsiniz. - Google Play, uygulamalarınızın yalnızca cihazları çalıştırabilen kullanıcılar tarafından kullanılabilmesini sağlamak için uygulamaları artık uygulamanızda yer alan talimat grubu bilgilerine göre filtreler. Filtre işleminin etkinleştirilmesi için herhangi bir işlem yapmanız gerekmez. Ayrıca Android sistemi, yükleme sırasında uygulamanızı da kontrol eder ve yalnızca uygulamanın cihazın CPU mimarisi için derlenmiş bir kitaplık sunması durumunda yüklemenin devam etmesine izin verir.
- Yerel koddan
Bitmap
nesnelerinin piksel arabelleklerine erişmek için yeni bir kararlı API dahil olmak üzere Android 2.2 desteği ekler.
- Yeni
Android NDK r3 (Mart 2010)
- Genel notlar:
-
- OpenGL ES 2.0 yerel kitaplık desteği ekler.
- OpenGL ES 2.0 köşe ve parça gölgelendiricilerinin kullanımını gösteren örnek bir uygulama (
hello-gl2
) ekler. - Bu sürüm için araç zinciri ikili programları, GCC 4.4.0 sürümü ile yenilendi. Bu da öncekine (4.2.1) göre biraz daha kompakt ve etkili makine kodu üretmesi anlamına gelir. NDK, makine kodunuzu oluşturmak için isteğe bağlı olarak kullanabileceğiniz 4.2.1 ikili programlarını da sağlamaya devam eder.
Android NDK r2 (Eylül 2009)
İlk olarak "Android 1.6 NDK, Sürüm 1" olarak yayınlandı.
- Genel notlar:
-
- OpenGL ES 1.1 yerel kitaplık desteği ekler.
- Etkinlik yaşam döngüsünü bir
GLSurfaceView
nesnesiyle yönetirken yerel OpenGL ES API'leri aracılığıyla 3D grafikler oluşturan örnek bir uygulama (san-angeles
) ekler.
Android NDK r1 (Haziran 2009)
İlk olarak "Android 1.5 NDK, Sürüm 1" olarak yayınlanmıştır.
- Genel notlar:
-
- ARMv5TE talimatları (Tumb1 talimatları dahil) için derleyici desteğini (GCC) içerir.
- Kararlı yerel API'ler, belgeler ve örnek uygulamalar için sistem başlıklarını içerir.