Cronologia delle revisioni NDK

Questa pagina fornisce informazioni sulle modifiche in tutte le versioni stabili rilasciate dell'NDK. Per scaricare l'ultima versione stabile di NDK o qualsiasi versione beta attualmente disponibile, consulta la pagina dei download di NDK.

Consulta android-ndk-announce gruppo Google per informazioni più complete e iscriviti per ricevere annunci relativi alle nuove uscite.

Android NDK r27 LTS (luglio 2024)

Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui.
Annunci
  • KitKat (API 19 e 20) non è più supportato.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui.
Annunci
  • Include le API per Android 13.
  • LLVM aggiornato in clang-r450784d, basato sullo sviluppo della versione LLVM 14.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui.
Annunci
  • GNU Assembler (GAS) è stato rimosso. Se creassi con -fno-integrated-as dovrai rimuovere il flag. Consulta Note sulla migrazione di Clang per consigli su come rendere compatibile l'assemblaggio con LLVM.
  • GDB è stato rimosso. Utilizza invece LLDB. Tieni presente che ndk-gdb utilizza LLDB per impostazione predefinita. Inoltre, Android Studio supporta solo il formato LLDB.
  • Jelly Bean (API 16, 17 e 18) non è più supportato. Il minimo Il sistema operativo supportato da NDK è KitKat (livello API 19).
  • I dispositivi non Neon non sono più supportati. Un numero molto ridotto di i vecchi dispositivi non supportano Neon, quindi la maggior parte delle app non se ne accorgerà dal miglioramento delle prestazioni.
  • Il supporto per la build di RenderScript è stato rimosso. RenderScript era deprecato in Android 12. Se non hai completato la migrazione per le app lontano da RenderScript, è possibile usare NDK r23 LTS.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • I binutil GNU, escluso GNU Assembler (GAS), sono stati rimossi. GAS verrà rimossa nella prossima release. Se crei con -fno-integrated-as, segnala un bug se ci sono problemi di rimuovere il flag.
  • GDB non è più supportato. GDB verrà rimosso dalla prossima release. Utilizza invece LLDB. Tieni presente che ndk-gdb utilizza LLDB per impostazione predefinita.
  • NDK r23 è l'ultima release che supporterà le versioni non Neon. Inizia con NDK r24, le librerie armeabi-v7a nel file sysroot verranno create con Neon. Un numero molto ridotto di dispositivi molto vecchi non supporta Neon, quindi la maggior parte delle app non noterà a parte il miglioramento delle prestazioni.
  • Jelly Bean (API 16, 17 e 18) non sarà supportata nel successivo NDK . Il sistema operativo minimo supportato da NDK per r24 sarà KitKat. (livello API 19).
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • I binutils GNU sono deprecati e verranno rimossi nei prossimi NDK . Tieni presente che l'assemblatore GNU (as) fa parte di questo processo. Se crei con -fno-integrated-as, segnala un bug se ci sono problemi di rimuovere il flag. Se utilizzi as direttamente, usa clang.
  • LLD è ora il linker predefinito. anche ndk-build e il nostro file toolchain CMake sono stati migrati a llvm-ar e llvm-strip.
  • ndk-gdb ora utilizza lldb come debugger. gdb è deprecato e in una release futura. Per utilizzare gdb, utilizza --no-lldb . Ma per favore segnalare un bug spiegando perché non puoi utilizzare lldb.
  • L'assistenza per std::filesystem è ora inclusa. Esistono due metodi noti:
    • Problema 1258: std::filesystem::perm_options::nofollow maggio non verranno rispettati sui vecchi dispositivi.
    • Problema 1260: std::filesystem::canonical non riuscire correttamente quando viene passato un percorso inesistente nella vecchia dispositivi mobili.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • Windows a 32 bit non è più supportato. Ciò non influisce sul vast la maggior parte degli utenti. Se devi ancora creare app NDK da Nelle versioni a 32 bit di Windows, continua a utilizzare NDK r20.

    Per ulteriori informazioni su questa modifica all'interno degli Strumenti per sviluppatori Android, vedi il post del blog sull'argomento.

  • LLD è ora disponibile per i test. AOSP è passato all'uso della tecnologia LLD per impostazione predefinita e l'NDK seguirà (sequenza temporale sconosciuta). Testa il valore LLD nella tua app superando -fuse-ld=lld durante il collegamento. Tieni presente che Numero 843 influenzerà le build utilizzando LLD con binutils strip e objcopy come al contrario di llvm-strip e llvm-objcopy.
  • I percorsi di installazione della Toolchain legacy verranno rimossi nei prossimi mesi release. Questi percorsi sono obsoleti dalla versione NDK r19 e occupano una una notevole quantità di spazio nell'NDK. I percorsi rimossi sono:
    • piattaforme
    • fonti/stl cxx
    • sysroot
    • toolchains (con l'eccezione di toolchains/llvm)
    di Gemini Advanced. In generale, questa modifica dovrebbe interessare solo i gestori del sistema di build quelli che utilizzano sistemi di compilazione non aggiornati. ndk-build e Gli utenti della toolchain CMake non sono interessati e nessuno dei due lo sono make_standalone_toolchain.py utenti (sebbene lo script sia stato non necessario da r19). Per informazioni sulla migrazione dal layout della catena di strumenti legacy, vedi il Guida per la creazione dei manutentori di sistema per la versione NDK in uso.
  • Il Play Store richiederà il supporto del formato a 64 bit per il caricamento di un APK a partire da agosto 2019. Inizia subito il trasferimento per evitare sorprese quando è il momento. Per ulteriori informazioni, vedi questo post del blog.
  • Un app bundle macOS firmato e autenticato è ora disponibile per scaricare dal nostro wiki e dal nostro sito web. Tieni presente che, poiché solo i bundle possono utilizzare RPATH e passare la notarizzazione, il pacchetto NDK tradizionale macOS non può essere autenticato. L'SDK continuerà a utilizzare pacchetto tradizionale poiché l'app bundle richiede modifiche al layout che lo renderebbe incompatibile con Android Studio. L'NDK non è viene messa in quarantena dopo il download tramite SDK Manager, pertanto lo è al momento consentito da Gatekeeper. SDK Manager è attualmente la un modo affidabile per ottenere l'NDK per macOS.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • LLD è ora disponibile per i test. AOSP sta passando a LLD per impostazione predefinita e Seguirà NDK (sequenza temporale sconosciuta). Testa LLD nella tua app superando -fuse-ld=lld durante il collegamento.
  • Il Play Store richiederà il supporto del formato a 64 bit per il caricamento di un APK a partire da agosto 2019. Inizia subito il trasferimento per evitare sorprese quando è il momento. Per ulteriori informazioni, vedi questo post del blog.
  • Aggiunte le API Android Q.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • Gli sviluppatori dovrebbero iniziare a testare le proprie app con LLD. AOSP è passato all'uso LLD per impostazione predefinita e NDK la utilizzerà per impostazione predefinita . BFD e Oro verranno rimossi una volta che l'LLD sarà stato sottoposto a un di rilascio del prodotto senza grossi problemi non risolti (r21 stimato). Testa LLD nella tua app passando -fuse-ld=lld durante il collegamento. Nota: al momento lld non supporta i simboli compressi su Windows. Problema 888. Inoltre, Clang non può generare simboli compressi su Windows, ma questo può essere un problema quando si usano artefatti creati da Darwin Linux.
  • Il Play Store richiederà il supporto del formato a 64 bit per il caricamento di un APK a partire da agosto 2019. Inizia subito il trasferimento per evitare sorprese quando è il momento. Per ulteriori informazioni, vedi questo post del blog.
  • Problema 780: Autonomi le toolchain non sono più necessarie. Clang, binutils, sysroot, e altri pezzi della toolchain sono ora tutti installati $NDK/toolchains/llvm/prebuilt/<host-tag> e Clang li troverà automaticamente. Invece di creare un modello indipendente toolchain per API 26 ARM, richiama invece il compilatore direttamente l'NDK:
    $ $NDK/toolchains/llvm/prebuilt//bin/armv7a-linux-androideabi26-clang++ src.cpp
               
    Per r19, la toolchain è installata anche sul percorso precedente per che i sistemi hanno la possibilità di adattarsi al nuovo layout. I percorsi precedenti saranno è stata rimossa in r20. Lo script make_standalone_toolchain.py non verrà rimosso. Ora non è necessario ed emetterà un avviso con quanto indicato sopra ma lo script continuerà a conservare i valori esistenti per i flussi di lavoro. Se utilizzi ndk-build, CMake o una toolchain autonoma, non dovrebbe cambiare il tuo flusso di lavoro. Questa modifica è significativa per di sistemi di build di terze parti, che ora dovrebbero essere in grado di eliminare codice specifico di Android. Per ulteriori informazioni, consulta Crea Guida per i manutentori di sistema.
  • ndk-depends è stato rimosso. Riteniamo che ReLinker sia un soluzione migliore ai problemi di caricamento della libreria nativa sul vecchio dispositivo Android e versioni successive.
  • Problema 862: Gli script del wrapper GCC che reindirizzavano a Clang sono stati rimossi, in quanto non sono sufficientemente funzionali per poter essere sostituito.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • GCC è stato rimosso.
  • LLD è ora disponibile per i test. AOSP sta passando a LLD per impostazione predefinita e Seguirà NDK (sequenza temporale sconosciuta). Testa LLD nella tua app superando -fuse-ld=lld durante il collegamento.
  • gnustl, gabi++ e stlport sono stati rimossi.
  • Il supporto per ICS (android-14 e android-15) è stato rimosso. App l'utilizzo degli eseguibili non deve più fornire sia un PIE che un non PIE eseguibile.
  • Il Play Store richiederà il supporto del formato a 64 bit per il caricamento di un APK a partire da agosto 2019. Inizia subito il trasferimento per evitare sorprese quando è il momento. Per ulteriori informazioni, vedi questo post del blog.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • GCC non è più supportato. Verrà rimossa nella versione 18 del NDK.
  • libc++ è ora l'STL predefinito per CMake e toolchain autonome. Se selezionato manualmente un altro STL, ti consigliamo vivamente di sposta in libc++. Tieni presente che ndk-build continua a essere no per impostazione predefinita STL. Per ulteriori dettagli, vedi questo post del blog.
  • gnustl e stlport sono deprecati e verranno rimossi in NDK r18.
  • Il supporto per ARMv5 (armeabi), MIPS e MIPS64 è stato rimosso. Il tentativo di creare una di queste ABI comporterà un errore.
  • Il supporto per ICS (android-14 e android-15) verrà rimosso dalla versione r18.
  • Il Play Store richiederà il supporto del formato a 64 bit per il caricamento di un APK a partire da agosto 2019. Inizia subito il trasferimento per evitare sorprese quando è il momento. Per ulteriori informazioni, vedi questo post del blog.
Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • Le intestazioni deprecate sono state rimosse. Le intestazioni unificate ora si chiamano semplicemente "Intestazioni". Per suggerimenti sulla migrazione, vedi Note sulla migrazione delle intestazioni unificate.
  • GCC non è più supportato. Non verrà ancora rimosso dall'NDK, ma non sarà più che ricevono backport. Non può essere rimosso fino a quando libc++ non sarà diventato abbastanza stabile da essere perché alcune parti di gnustl sono ancora incompatibili con Clang. Verrà rimossa quando gli altri STL vengono rimossi dalla versione r18.
  • libc++ non è più nella fase beta ed è ora l'STL preferito nell'NDK. A partire dalla versione r17, libc++ è l'STL predefinito per CMake e toolchain autonome. Se hai selezionato manualmente un STL diverso, ti consigliamo vivamente di passare a libc++. Per ulteriori dettagli, vedi questo post del blog.
  • Il supporto per ARM5 (armeabi), MIPS e MIPS64 è deprecato. Non creeranno più per impostazione predefinita con ndk-build, ma sono comunque generabili se hanno nomi espliciti e saranno inclusi da "all", "all32" e "all64". Il supporto per ciascuna di queste opzioni è stato rimosso nella versione 17. Sia CMake che ndk-build verrà inviato un avviso se scegli come target una di queste ABI.
API

Aggiunte API native per Android 8.1 Per saperne di più su queste API, consulta Panoramica delle API native.

Per ulteriori informazioni sulle novità e sulle modifiche di questa release, consulta changelog.

Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • Le intestazioni unificate sono abilitate per impostazione predefinita. Per scoprire come utilizzarli intestazioni, consulta Intestazioni unificate.
  • Nota: le intestazioni deprecate verranno rimosse a breve . Se riscontri problemi con queste intestazioni, invia una bug.

    Per suggerimenti sulla migrazione, consulta note sulla migrazione delle intestazioni unificate.

  • GCC non è più supportato. Non è ancora stato rimosso da NDK, ma non riceve più backport. Non può essere rimosso fino a quando libc++ non si stabilizza a sufficienza per essere il predefinito, come alcune parti di gnustl sono ancora incompatibili con Clang.
  • Android 2.3 (android-9) non è più supportato. Il target del livello API minimo in L'NDK ora è Android 4.0 (android-14). Se APP_PLATFORM è impostato minore di android-14, viene utilizzato invece android-14.
  • CMake in NDK ora supporta codice Assembly di creazione scritto in YASM per l'esecuzione su x86 e x86-64. Per saperne di più, vedi Creazione di codice Assembly.
API

Sono state aggiunte API native per Android 8.0. Per scoprire di più per informazioni su queste API, consulta la panoramica sulle API native.

Per ulteriori informazioni sulle novità e sulle modifiche di questa release, consulta changelog.

Log delle modifiche
.
Download
  • I download di questa release sono disponibili qui
Annunci
  • Intestazioni unificate: questa release introduce intestazioni di piattaforma che vengono sincronizzate e costantemente aggiornati e precisi con la piattaforma Android. Correzioni di bug solo per l'intestazione interessano tutti i livelli API. L'introduzione delle intestazioni unificate corregge le incoerenze nella precedente versione NDK release, ad esempio:
    • Le intestazioni in M e N in realtà erano intestazioni per L.
    • Le dichiarazioni di funzione nelle intestazioni non corrispondevano correttamente ai livelli di piattaforma. dichiaravano funzioni inesistenti o non riuscivano a dichiarare le funzioni disponibili.
    • Molti dei vecchi livelli dell'API presentavano costanti mancanti o errate che erano nell'API più recente diversi.

    Queste nuove intestazioni unificate non sono abilitate per impostazione predefinita. Per scoprire come abilitare e utilizzare queste intestazioni, consulta Intestazioni unificate.

  • Ritiro di GCC: questa release termina il supporto attivo per GCC. GCC non viene rimosso NDK è ancora disponibile, ma non riceverà più backport. Poiché alcune parti dello gnustl sono ancora incompatibile con Clang, GCC non verrà rimosso completamente finché libc++ non sarà diventato stabile per essere predefinita.

Per ulteriori informazioni sulle novità e sulle modifiche di questa release, consulta changelog.

Download
  • I download di questa release sono stati archiviati qui
Annunci
  • GCC non è più supportato. Non verrà rimosso dall'NDK solo ma non riceve più backport. Non può essere rimosso fino a quando dopo che libc++ è diventato sufficientemente stabile da essere l'impostazione predefinita, come alcune parti di gnustl sono ancora incompatibili con Clang. Molto probabilmente verrà rimosso una volta trascorso questo punto.
  • Aggiunta simpleperf, un profiler di CPU per Android.
R13B
ND
  • Ora l'impostazione predefinita di NDK_TOOLCHAIN_VERSION è Clang.
  • libc++ è stato aggiornato a r263688.
  • Abbiamo ripristinato (quasi) una pulizia a monte. Dovrebbero essere rimossi alcuni ma dobbiamo comunque ripulire il file libandroid_support prima di lo consiglia come predefinito.
  • make-standalone-toolchain.sh ora è semplicemente un wrapper la versione Python dello strumento. Ci sono alcune differenze di comportamento. Consulta di commit per maggiori dettagli.
  • Alcune librerie per ABI non supportate sono state rimosse (mips64r2, mips32r6, mips32r2 e x32). Potrebbero esserci ancora alcuni elementi in ritardo.
  • Problemi con crtbegin_static.o che hanno comportato la mancanza di atexit al link durante lo sviluppo di un eseguibile statico per ARM per android-21 o versioni successive. risolto: Problema 132
  • È stato aggiunto il file toolchain CMake in build/cmake/android.toolchain.cmake.
Problemi noti
  • Questo non intende essere un elenco completo di tutti i bug in sospeso.
  • Le toolchain autonome che utilizzano libc++ e GCC non funzionano. Sembra essere di un bug in GCC. Consulta il commit per ulteriori dettagli.
  • Le intestazioni e le librerie Bionic per Marshmallow e N non sono ancora esposte nonostante la presenza di Android-24. Queste piattaforme rimangono Intestazioni e librerie Lollipop (non una regressione da r11).
  • Non sono presenti strumenti RenderScript (non è una regressione da r11): Problema 7.
Download
  • I download di questa release sono archiviati qui.
Annunci
  • Per impostazione predefinita, il comando ndk-build utilizza Clang in r13. Rimuoveremo GCC nella release successiva.
  • Lo script make-standalone-toolchain.sh verrà rimosso nella versione r13. Assicurati che make_standalone_toolchain.py sia adatto alle tue esigenze.
  • Segnala eventuali problemi a GitHub.
di Gemini Advanced. R12B
  • Abbiamo corretto ndk-gdb.py. (Numero 118)
  • Abbiamo aggiornato NdkCameraMetadataTags.h in modo che non contenga più un indirizzo non valido enum.
  • Un bug in ndk-build che generava avvisi spuri per le librerie statiche che utilizzano libc++ ha che è stato corretto. Per ulteriori informazioni su questa modifica, leggi i commenti qui
  • Le intestazioni OpenSLES sono state aggiornate per android-24.
ND
  • Abbiamo rimosso il supporto per l'ABI armeabi-v7a-hard. Per ulteriori informazioni, vedi questo spiegazione.
  • Sono state rimosse tutte le sysroot per i livelli della piattaforma pre-GB. Abbiamo interrotto il supporto per loro nella versione 11. ma abbiamo trascurato di rimuoverli effettivamente.
  • La gestione delle eccezioni quando si utilizza c++_shared su ARM32 ora funziona principalmente. Lo strumento di rilassamento ora Essere collegata in ogni oggetto collegato, anziché in libc++ stesso. Per ulteriori informazioni per la gestione delle eccezioni, consulta Problemi noti.
  • I flag predefiniti del compilatore sono stati eliminati. (Problema 27).
  • Aggiunta un'implementazione Python di toolchain autonome: build/tools/make_standalone_toolchain.py.
    • Gli utenti Windows non hanno più bisogno di Cygwin per utilizzare questa funzionalità.
    • Rimuoveremo il sapore bash nella versione r13, quindi prova subito quello nuovo.
  • -fno-limit-debug-info è stato abilitato per impostazione predefinita per le build di debug Clang. Questa modifica dovrebbe migliorare la possibilità di debug con LLDB.
  • Ora --build-id è abilitato per impostazione predefinita.
    • L'ID build verrà ora mostrato nei report nativi sugli arresti anomali per consentirti identificare la versione del codice in esecuzione.
  • NDK_USE_CYGPATH non dovrebbe più causare problemi con libgcc. (Android Numero 195486)
  • -Wl, --warn-shared-textrel e -Wl,--fatal-warnings sono ora abilitate per impostazione predefinita. Se hai condiviso dei trasferimenti di testo, l'app non può su Android 6.0 (livello API 23) o versioni successive. Non sono mai stati consentiti riposizionamenti di testo per App a 64 bit.
  • Le intestazioni precompilate dovrebbero funzionare meglio. (Problema 14 e Numero 16)
  • Rimosse le librerie STL ARM (non pollici) non raggiungibili.
  • Aggiunto il supporto di Vulkan ad Android-24.
  • È stata aggiunta l'API Choreographer ad Android-24.
  • Aggiunte libcamera2 API per i dispositivi con INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED o superiore. Per ulteriori informazioni, vedi Caratteristiche della fotocamera.
Clang
  • Clang è stato aggiornato alla versione 3.8svn (r256229, build 2812033).
    • Gli eseguibili clang.exe e clang++.exe nel formato a 32 bit un pacchetto Windows a 64 bit. L'eseguibile a 32 bit è denominato clang_32.exe.
  • __thread dovrebbe funzionare in tempo reale questa volta.
GCC
  • Sincronizzata con il GCC di ChromeOS @ google/gcc-4_9 r227810.
  • Patch del disinfettante per la copertura con backporting di ToT (r231296).
  • È stato corretto il problema di non utilizzare ifuncs in libatomic. (Numero 31)
Binutil
  • Messaggi informativi "Erratum 843419 trovato e risolto" silenziati.
  • È stata introdotta l'opzione --long-plt per correggere l'errore interno del linker che si verifica quando che collegano enormi binari ARM32.
  • Sono stati corretti gli stub di runtime errati per AArch64. Questo causava il calcolo degli indirizzi di salto in modo errato per DSO di grandi dimensioni.
  • Introduzione dell'opzione predefinita --no-apply-dynamic per aggirare un bug del Linker dinamico nelle release precedenti di Android.
  • NDK r11 KI per dynamic_cast non funziona con Clang. Abbiamo corretto x86, stlport_static e ottimizzazione.
GDB
  • Aggiornato a GDB 7.11. Per ulteriori informazioni, consulta Notizie GDB.
  • Alcune correzioni di bug per ndk-gdb.py.
Problemi noti
  • ASAN x86 continua a non funzionare. Per ulteriori informazioni, consulta la discussione su questo elenco delle modifiche.
  • L'eccezione di relax con c++_shared continua a non funzionare per ARM su Android 2.3 (livello API 9) o Android 4.0 (livello API 14).
  • Intestazioni e librerie Bionic per Android 6.0 (livello API 23) e Android 7.0 (livello API 24) non sono ancora esposti nonostante la presenza di Android-24. Queste piattaforme sono comunque le intestazioni e le librerie di Android 5.0 (livello API 21) (non una regressione da r11).
  • Non sono presenti strumenti RenderScript (non è una regressione da r11). (Problema 7)
  • Questo log delle modifiche non intende essere un elenco completo di tutti i bug in sospeso.
Download
  • I download di questa release sono archiviati qui.
Annunci
  • Per impostazione predefinita, il comando ndk-build utilizzerà Clang in una prossima release. GCC verrà rimosso in una release futura.
  • Lo script make-standalone-toolchain.sh verrà rimosso in una delle prossime release. Se utilizzi questo script, pianifica la migrazione al make_standalone_toolchain.py il prima possibile.
ND
  • Rimosso il supporto per l'ABI armeabi-v7a-hard. Leggi la spiegazione nel documentazione.
  • Sono state rimosse tutte le sysroot per i livelli di piattaforma precedenti ad Android 2.3 (livello API 9). Abbiamo interrotto il supporto per loro in NDK r11, ma abbiamo trascurato di rimuoverli effettivamente.
  • Aggiornamento della gestione delle eccezioni quando si utilizza c++_shared su ARM32, in modo che funziona principalmente (consulta la sezione Problemi noti). La funzionalità di relax è ora collegato in ogni oggetto collegato, anziché in libc++ stesso.
  • Sono stati eliminati i flag predefiniti del compilatore (NDK, problema 27). Puoi vedere i dettagli di questo aggiornamento in Modifica 207721.
  • È stata aggiunta un'implementazione Python di toolchain autonome in build/tools/make_standalone_toolchain.py. Su Windows, non è più non serve Cygwin per usare questa funzionalità. Tieni presente che il gusto bash verrà rimosso in una prossima release, quindi testala subito.
  • Build di debug Clang configurate in modo da avere -fno-limit-debug-info è abilitata per impostazione predefinita. Questa modifica migliora il debug con LLDB.
  • --build-id attivata come opzione predefinita. Questa opzione fa sì che nei report nativi sugli arresti anomali venga mostrato un identificatore per permetterti di identificare la versione del codice in esecuzione.
  • È stato risolto il problema relativo a NDK_USE_CYGPATH che non causa più problemi con libgcc (Problema 195486).
  • Le seguenti opzioni sono abilitate per impostazione predefinita: -Wl,--warn-shared-textrel e -Wl,--fatal-warnings. Se hai condiviso trasferimenti di testo, l'app non viene caricata su Android 6.0 (livello API 23) e superiore. Tieni presente che questa configurazione non è mai stata consentito per le app a 64 bit.
  • Sono stati risolti alcuni problemi per migliorare il funzionamento delle intestazioni precompilate (NDK numero 14, NDK numero 16).
  • Rimosse le librerie STL ARM (non pollici) non raggiungibili.
  • Aggiunto il supporto di Vulkan ad Android-24.
  • È stata aggiunta l'API Choreographer ad Android-24.
  • Sono state aggiunte le API libcamera2 per i dispositivi che supportano Livello di funzionalità INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED o superiore. Per ulteriori informazioni, consulta CameraCharacteristics.
Clang
  • Clang è stato aggiornato alla versione 3.8svn (r256229, build 2812033). Le clang.exe e Gli eseguibili clang++.exe nel pacchetto Windows a 32 bit sono in realtà a 64 bit. La L'eseguibile a 32 bit è denominato clang_32.exe.
  • È stato corretto __thread in modo che funzionasse in tempo reale.
GCC
  • Sincronizzazione del compilatore con GCC di ChromeOS @ google/gcc-4_9 r227810.
  • Patch del disinfettante per la copertura con backporting di ToT (r231296).
  • È stato corretto il problema di libatomic non utilizzare ifuncs (NDK, problema 31).
Binutil
  • Ha silenziato l'"Erratum 843419 trovato e risolto" messaggi informativi.
  • È stata introdotta l'opzione --long-plt per correggere un errore del linker interno quando colleghi enormi binari ARM32.
  • Sono stati corretti gli errori stub del tempo di esecuzione per AArch64. Il problema è stato rilevato causando il calcolo errato degli indirizzi di salto per gli indirizzi oggetti DSO (Dynamic Shared Object).
  • È stata introdotta l'opzione predefinita --no-apply-dynamic per risolvere il problema un bug del Linker dinamico per le release precedenti di Android.
  • È stato risolto un problema noto con NDK r11 in cui dynamic_cast non era lavorare con Clang, x86, stlport_static e ottimizzazione.
GDB
  • Aggiornato alla versione GDB 7.11. Per ulteriori informazioni su questa release, vedi Notizie GDB.
  • Sono stati corretti una serie di bug nello script ndk-gdb.py.
Problemi noti
  • L'indirizzo x86 Sanitizer (ASAN) al momento non funziona. Per ulteriori informazioni, vedi Numero 186276.
  • L'eccezione per il relax con c++_shared non funziona per ARM su Android 2.3 (livello API 9) o Android 4.0 (livello API 14).
  • Intestazioni e librerie Bionic per Android 6.0 (livello API 23) e versioni successive non sono ancora esposti nonostante la presenza di Android-24. Queste piattaforme contengono intestazioni e librerie Android 5.0 (livello API 21), che sono coerenti con NDK r11.
  • Gli strumenti RenderScript non sono presenti, in conformità con NDK r11. (NDK numero 7)
  • Nel file di intestazione NdkCameraMetadataTags.h, i metadati della videocamera valore enum del tag ACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAP è stato inserito per errore e verrà rimosso nella prossima release. Utilizza le funzionalità di il valore ACAMERA_STATISTICS_LENS_SHADING_MAP.
Modifiche
  • Correzioni aggiuntive applicate allo script ndk-gdb.py.
  • È stato aggiunto un argomento facoltativo per il nome del pacchetto a ndk-gdb il comando --attach. (Problema 13)
  • Sono stati corretti i percorsi della toolchain non validi per la piattaforma Windows a 32 bit. (Problema 45)
  • È stato corretto il percorso relativo per il comando ndk-which. (Numero 29)
  • È stato corretto l'uso di cygpath per il compilatore libgcc. (Numero 195486 di Android)
ND
  • Annunci importanti
    • Abbiamo spostato il nostro tracker dei bug in GitHub.
  • Modifiche
    • Il problema ndk-gdb.py è stato risolto. Aveva è regredito completamente in r11.
    • ndk-gdb per Mac è fisso.
    • Sono state aggiunte altre scorciatoie di primo livello per gli strumenti a riga di comando:
      • ndk-depends.
      • ndk-gdb.
      • ndk-stack.
      • ndk-which. Questo comando era del tutto assente dai precedenti release.
    • Sono state corrette le toolchain autonome per libc++, che mancavano __cxxabi_config.h.
    • È stata corretta la documentazione della guida per --toolchain in make-standalone-toolchain.sh.
Clang
  • Errata
    • Al contrario di quanto riportato nelle Note di rilascio di R11, __thread non funziona. Questo perché nella versione di Clang da noi fornita manca una correzione di bug per il supporto TLS emulato.
Clang
  • Annunci importanti
    • Ti consigliamo vivamente di passare a Clang.
      • Se riscontri problemi con Clang, segnala i bug qui per i problemi specifici di Clang nell'NDK. Per problemi più generici con Clang, segnala i bug seguendo le istruzioni su questa pagina.
    • Clang è stato aggiornato alla versione 3.8svn (r243773, build 2481030).
      • Questa versione è un Clang quasi puro.
      • Il pacchetto NDK scaricabile a 64 bit di Windows contiene un file NDK a 32 bit di Clang.
  • Aggiunte
    • Ora Clang supporta il protocollo TLS emulato.
      • Il compilatore ora supporta __thread emulando ELF TLS con dati specifici del thread pthread.
      • In alcuni casi C+11 thread_local funziona, ma non per i dati con distruttori non banali, perché quei casi richiede l'assistenza di libc. Questa limitazione non si applicano quando viene eseguito Android 6.0 (livello API 23) o versioni successive.
      • TLS emulato non funziona ancora con Aarch64 quando Le variabili TLS sono accessibili da una libreria condivisa.
GCC
  • Annunci importanti
    • GCC nel NDK è stato ritirato a favore di Clang.
      • L'NDK non eseguirà l'upgrade alla versione 5.x e non accetterà e non critici.
      • Manutenzione per errori di compilazione e errori interni del compilatore nella versione 4.9 sarà gestita caso per caso.
  • Rimozioni
    • GCC 4.8 rimosso. Tutti i target ora utilizzano GCC 4.9.
  • Altre modifiche
    • Sincronizzazione da google/gcc-4_9 a r224707 eseguita. In precedenza, sincronizzato con r214835.
ND
  • Annunci importanti
    • I campioni non sono più inclusi nel pacchetto NDK. Sono invece disponibili GitHub.
    • La documentazione non è più inclusa nel pacchetto NDK. Invece, è disponibile sul sito web per sviluppatori.
  • Aggiunte
    • È stata aggiunta un'API di tracciamento nativa a android-23.
    • È stata aggiunta un'API multirete nativa a android-23.
    • libc, m e dl sono stati abilitati per fornire simboli per il controllo delle versioni, a partire dal giorno dal livello API 21.
    • Sono state aggiunte intestazioni e libreria Vulkan al livello API N.
  • Rimozioni
    • Rimosso il supporto per _WCHAR_IS_8BIT.
    • Sed rimosso.
    • Mclinker rimosso.
    • Perl rimosso.
    • Sono stati rimossi da tutte le versioni di NDK libc, m e dl tutti i simboli che le versioni della piattaforma di queste librerie non supportano.
    • È stato parzialmente rimosso il supporto per mips64r2. Il resto verrà rimosso in futuro.
  • Altre modifiche
    • Il valore predefinito delle toolchain autonome ARM è stato cambiato in arm7.
      • Puoi ripristinare il vecchio comportamento specificando il parametro Opzione -target come armv5te-linux-androideabi.
    • Il sistema di compilazione è stato modificato in modo che utilizzi -isystem per la piattaforma inclusi.
      • Gli avvisi che indicano che le cause biometriche non interrompono più le build di app.
    • Corretto un errore segreto che si verificava quando un programma binario generava eccezioni. tramite gabi++. (Numero 179410)
    • Spazio dei nomi in linea di libc++ modificato in std::__ndk1 per evitare problemi ODR con la piattaforma libc++.
    • Tutte le librerie libc++ ora sono create con libc++abi.
    • APP_PLATFORM il valore predefinito è impostato su Gingerbread.
      • Il supporto per Froyo e per i modelli precedenti verrà ignorato in un nella versione futura.
  • struct gabi++ _Unwind_Exception aggiornato per 64 bit.
  • Sono state aggiunte le seguenti funzionalità a cpufeatures:
    • Rileva SSE4.1 e SSE4.2.
    • Rileva le funzionalità della CPU su x86_64.
  • libc++abi aggiornato in upstream r231075
  • Ultimo aggiornamento: byteswap.h, endian.h e sys/procfs.h, sys/ucontext.h, sys/user.h e uchar.h da ToT Bionic.
  • Sincronizzazione di sys/cdefs.h in tutti i livelli API.
  • È stato corretto fegetenv and fesetenv per il gruppo.
  • Correggi le dimensioni/l'allineamento del puntatore finale di crtend_* per mips64 e x86_64.
Binutil
  • Aggiunte
    • Aggiunta una nuova opzione: --pic-veneer.
  • Rimozioni
    • Il pacchetto Windows a 32 bit non contiene più ld.gold. Puoi invece ottenere ld.gold dal pacchetto di Windows a 64 bit.
  • Modifiche
    • Origine binutils unificata tra Android e Chromium OS. Per ulteriori informazioni su questa modifica, leggi i commenti qui.
    • Affidabilità dell'oro migliorata per aarch64. Utilizza le funzionalità di -fuse-ld=gold al momento del link per usare l'oro anziché bfd. L'impostazione predefinita verrà probabilmente modificata nella prossima release.
    • Miglioramento del tempo di collegamento per file binari di grandi dimensioni per il backend ARM Gold (fino al 50% di riduzione del tempo di collegamento per il browser Chrome di cui è possibile eseguire il debug).
GDB
  • Rimozioni
    • ndk-gdb rimosso in favore di ndk-gdb.py.
  • Modifiche
    • gdb aggiornato alla versione 7.10.
    • Rendimento migliorato.
    • Messaggi di errore migliorati.
    • Percorsi relativi del progetto fissi.
    • Interruzione dell'interruzione del server gdbserver in background tramite Ctrl-C.
    • Supporto di Windows migliorato.
YASM
  • Modifiche
    • YASM aggiornato alla versione 1.3.0.
Problemi noti
  • Al momento ASAN x86 non funziona. Per ulteriori informazioni, consulta discussione qui.
  • La combinazione di Clang, x86, stlport_static e ottimizzazione livelli superiori a -O0 causano errori dei test con dynamic_cast. Per ulteriori informazioni, leggi i commenti qui
  • La gestione delle eccezioni spesso non riesce con c++_shared su ARM32. La radice causa è l'incompatibilità tra il unwinder LLVM utilizzato da libc++abi per ARM32 e libgcc. Questo comportamento non rappresenta una regressione rispetto a r10e.
Download
  • I download di questa release sono archiviati qui.
Modifiche importanti:
  • Integrato la soluzione alternativa per Cortex-A53 Erratum 843419 nel Linker aarch64-linux-android-4.9. Per ulteriori informazioni su questa soluzione alternativa, consulta Soluzione alternativa per Cortex-a53 erratum 843419.
  • È stato aggiunto Clang 3.6; NDK_TOOLCHAIN_VERSION=clang ora sceglie questa versione di Clang per impostazione predefinita.
  • È stato rimosso Clang 3.4.
  • GCC 4.6 rimosso.
  • Supporto multi-threading implementato in ld.gold per tutte le architetture. Può ora si collegano con o senza supporto per il multithreading; l'impostazione predefinita è farne a meno.
    • Per compilare con il multi-threading, utilizza l'opzione --threads.
    • Per compilare senza multi-threading, utilizza l'opzione --no-threads.
  • Aggiornato GDB/gdbserver a 7.7 per tutte le architetture.
  • Rimosso il pacchetto NDK per Darwin a 32 bit.
Correzioni di bug importanti:
  • È stato risolto un arresto anomalo che si verificava in presenza di loop OpenMP al di fuori del thread principale.
  • È stato corretto un errore del compilatore interno (ICE) di GCC 4.9 che si verificava quando l'utente aveva dichiarato #pragma GCC optimize ("O0"), ma con un livello di ottimizzazione diverso specificato sulla riga di comando. pragma ha la precedenza.
  • È stato corretto un errore che generava un arresto anomalo con il seguente messaggio di errore:
    in add_stores, at var-tracking.c:6000
    
  • Implementazione di una soluzione alternativa per un problema di Clang 3.5 in cui l'autovettorizzazione LLVM genera llvm.cttz.v2i64(), un'istruzione senza controparte in ARM un set di istruzioni.
Altre correzioni di bug:
  • Sono state apportate le seguenti correzioni per intestazioni e librerie:
    • È stato corretto PROPERTY_* in media/NdkMediaDrm.h.
    • È stato corretto sys/ucontext.h per mips64.
    • È stato ignorato il controllo della versione Clang per __builtin_isnan e __builtin_isinf.
    • Data di aggiunta: android-21/arch-mips/usr/include/asm/reg.h e android-21/arch-mips64/usr/include/asm/reg.h.
  • È stato corretto un avviso relativo ai limiti dell'array spurie generato da GCC 4.9 per x86 e riabilitato il all'array di un avviso generato da GCC 4.9 per ARM. L'avviso per ARM ha ricevuto precedentemente disattivati incondizionatamente.
  • È stato corretto Clang 3.5 per mips e mips64 per creare un file scrivibile .gcc_except_table, quindi il comportamento in GCC corrisponde. Questa modifica ti consente per evitare il seguente avviso relativo al linker:
    .../ld: warning: creating a DT_TEXTREL in a shared object
    
  • È stato eseguito il backport di una correzione per compiler-rt problemi che causavano arresti anomali quando Clang compilato per mips64. Per ulteriori informazioni, consulta la sezione relativa al problema della LLVM 20098.
  • Sono stati corretti gli arresti anomali di Clang 3.5 che si verificavano nei commenti non ASCII. (Problema 81.440)
  • È stato corretto il problema stlport collate::compare per restituire -1 e 1. In precedenza, ha restituito numeri con segno arbitrari.
  • È stato corretto ndk-gdb per ABI a 64 bit. (Problema 118.300)
  • È stato corretto l'arresto anomalo su cui veniva prodotto l'esempio HelloComputeNDK per RenderScript Android 4.4 (livello API Android 19). Per ulteriori informazioni, vedi questa pagina.
  • È stato corretto libc++ __wrap_iter per GCC. Per ulteriori informazioni, consulta la sezione relativa al problema della LLVM 22355
  • È stato corretto il supporto di .asm per ABI x86_64.
  • È stata implementata una soluzione alternativa per il problema di GCC 4.8 stlport. (Problema 127773)
  • Il separatore di directory finale \\ è stato rimosso dal percorso del progetto in Windows. (Numero 160584)
  • È stato corretto un errore no rule to make target che si verificava durante la compilazione di un singolo .c eseguendo il comando ndk-build.cmd da gradle. (Problema 66937)
  • Sono state aggiunte le librerie libatomic.a e libgomp.a mancanti da le seguenti toolchain per l'host:
      .
    • aarch64-linux-android-4.9
    • mips64el-linux-android-4.9
    • mipsel-linux-android-4.9
    • x86_64-4.9
Altre modifiche:
  • ld.gold aggiunto per aarch64. Il linker predefinito rimane ld.bfd. Per attivare esplicitamente ld.gold, aggiungi -fuse-ld=gold al Variabile LOCAL_LDFLAGS o APP_LDFLAGS.
  • Ha creato le catene di strumenti MIPS e MIPS64 con binutils-2.25, che offre miglioramenti Supporto R6.
  • -fstandalone-debug (informazioni di debug complete) impostato come opzione predefinita per Clang.
  • -fstack-protector sostituito con -fstack-protector-strong per le toolchain ARM, AArch64, X86 e X86_64 per GCC 4.9, Clang 3.5 e Clang 3.6.
  • Opzione della riga di comando --package aggiunta a ndk-gdb per consentire la build per eseguire l'override del nome del pacchetto. (Problema 56189)
  • -mno-ldc1-stc1 deprecato per MIPS. Questa opzione potrebbe non funzionare con la nuova -fpxx e -mno-odd-spreg o con l'ABI FPXX.
  • È stato aggiunto il rilevamento MIPS MSA e R6 a cpu-features.
Modifiche importanti:
  • È stata impostata GCC 4.8 come predefinita per tutte le ABI a 32 bit. GCC obsoleto 4.6 e la rimuoverà. Per ripristinare il comportamento precedente, aggiungi NDK_TOOLCHAIN_VERSION=4.6 per ndk-build oppure aggiungi --toolchain=arm-linux-androideabi-4.6 durante l'esecuzione make-standalone-toolchain.sh nella riga di comando. GCC 4.9 rimane predefinita per le ABI a 64 bit.
  • È stata interrotta per impostazione predefinita l'aggiunta di -mstackrealign in tutte le toolchain x86[_64]. La La toolchain NDK presuppone un allineamento dello stack di 16 byte. Strumenti e opzioni utilizzati per impostazione predefinita per applicare questa regola. Un utente che scrive il codice Assembly deve assicurarsi di conservare lo stack e assicurati che anche gli altri compilatori rispettino questa regola. (bug GCC 38496)
  • È stata aggiunta la funzionalità Address Sanitizer al supporto di Clang 3.5 alle ABI ARM e x86. Per ulteriori informazioni su questa modifica, consulta Indirizzo sanitizer.
  • A partire dal livello API 21, è stato introdotto il requisito per utilizzare -fPIE -pie durante la creazione. Nei livelli API 16 e successivi, ndk-build utilizza PIE durante la creazione. Questo cambiamento ha una serie di implicazioni, di cui parleremo Problema dell'Anteprima per gli sviluppatori 888. Queste implicazioni non si applicano alle librerie condivise.
Correzioni di bug importanti:
  • Sono state apportate altre correzioni relative a A53 Errata #835769 nel linker aarch64-linux-android-4.9. Nell'ambito di questi cambiamenti, GCC passa una nuova opzione, --fix-cortex-a53-835769, quando -mfix-cortex-a53-835769 (attivato per impostazione predefinita) è specificato. Per ulteriori informazioni, leggi questo messaggio binutils e questo può portare messaggio binutils.
  • Documentato una correzione a un blocco libc++ sscanf/vsscanf che si è verificato a livello API 21. La correzione era stata implementata in r10c. (Numero 77988)
  • Risolto un arresto anomalo di AutoFDO (-fauto-profile) che si è verificato con GCC 4.9 quando È stato specificato il valore -Os. (Numero 77571)
Altre correzioni di bug:
  • Sono state apportate le seguenti correzioni per intestazioni e librerie:
    • È stato aggiunto posix_memalign al livello API 16. Inoltre, è stato aggiunto un prototipo stdlib.h ai livelli API da 16 a 19. (Numero 77861)
    • È stato corretto stdatomic.h in modo che includa <atomic> solo per C++11.
    • Sono state modificate le seguenti intestazioni per l'uso autonomo: sys/user.h e gl2ext.h, dlext.h, fts.h e sgidefs.h per il livello API 21.
    • Hai modificato sys/user.h per rinominare mxcsr_mask in mxcr_mask, e per modificare il tipo di dati per u_ar0
    • da unsigned long per struct user_regs_struct*.
    • Tipo di valore restituito sysconf() cambiato da int a long.
  • È stata corretta la gestione di ndk-build di thumb per LOCAL_ARM_MODE: in r10d, ndk-build aggiunge LOCAL_LDFLAGS+=-mthumb per impostazione predefinita, a meno che uno dei le seguenti condizioni:
    • Hai impostato un valore di LOCAL_ARM_MODE uguale a arm.
    • Stai eseguendo una build di debug (con impostazioni come APP_OPTIM=debug e AndroidManifest.xml contenente android:debuggable="true"), dove la modalità ARM è l'impostazione predefinita per mantenere la compatibilità con le toolchain precedenti. (Numero 74040)
  • È stato corretto LOCAL_SRC_FILES in ndk-build per l'utilizzo dei percorsi assoluti di Windows. (Numero 74333)
  • Rimosso il codice specifico per bash da ndk-gdb. (Numero 73338)
  • Codice specifico bash rimosso da make-standalone-toolchain.sh. (Numero 74145)
  • È stata aggiornata la documentazione relativa a una correzione per il traffico transitivo System.loadLibrary() delle dipendenze. (Numero 41790)
  • Risolto un problema che impediva l'estrazione di pacchetti a 64 bit su Ubuntu 14.04 e OS X 10.10 (Yosemite). (Numero 78148)
  • È stato risolto un problema relativo a LOCAL_PCH per migliorare il supporto di Clang. (Problema 77575)
  • È stato chiarito "Richiede stack eseguibile" avviso da ld.gold. (Problema 79115)
Modifiche importanti:
  • Sono state apportate le seguenti modifiche alla struttura dei download:
    • Ogni pacchetto contiene le intestazioni, le librerie e gli strumenti a 32 e 64 bit della rispettiva piattaforma.
    • Le librerie STL con informazioni di debug non devono più essere scaricate separatamente.
  • È stato cambiato tutto ciò che in precedenza chiamato Android-L è stato sostituito con la release ufficiale designazione: android-21.
  • GCC 4.9 aggiornato mediante ribasso nella filiale google del repository GCC. Le principali differenze rispetto alla versione upstream di GCC 4.9 includono:
    • L'opzione -O2 ora attiva la vettorializzazione, senza loop decollo, ma con più uno srotolamento aggressivo.
    • Miglioramenti a FDO e LIPO
    • Per informazioni più dettagliate, consulta Correzioni di bug importanti di seguito.

  • È stato aggiunto il supporto di Clang 3.5 a tutti gli host: NDK_TOOLCHAIN_VERSION=clang ora sceglie Clang 3.5. Tieni presente che:
    • ARM e x86 utilizzano per impostazione predefinita l'assemblatore integrato. Se ciò causa problemi, utilizza -fno-integrated-as come soluzione alternativa.
    • Clang 3.5 invia altri avvisi per le segnalazioni inutilizzate, ad esempio -finline-functions supportata da GCC.
    • Quando esegui la migrazione da progetti con GCC, puoi utilizzare -Wno-invalid-command-line-argument e -Wno-unused-command-line-argument per ignorare le segnalazioni inutilizzate finché non sarai in grado di decidere cosa fare nel lungo periodo.

  • È stato possibile attivare la modalità di debug ART durante il debug su un dispositivo Android 5.0 utilizzando ART come macchina virtuale, specificando l'opzione art-on. Per ulteriori informazioni, vedi prebuilt/common/gdb/common.setup nella directory contenente l'NDK.
  • Rimosso il supporto per Clang 3.3.
  • È obsoleto GCC 4.6 e potrebbe essere rimosso dalle release future.
  • Mclinker aggiornato alla versione 2.8 con supporto Identical Code Folding ("ICF"). Specifica ICF utilizzando il parametro Opzione --icf.
  • Supporto di arm_neon.h esteso per x86 e x86_64, raggiungendo una copertura di circa il 93% del Tecnologia intrinseca NEON. Per ulteriori informazioni sull'assistenza NEON:
    • Vai alla Guida per il programmatore NDK (docs/Programmers_Guide/html/) e consulta Architetture e CPU > Neon.
    • Esamina il campione aggiornato di hello-neon in samples/.
    • Consulta la guida di Intel sulla portabilità da ARM NEON a Intel SSE.
  • Supporto documentato per _FORTIFY_SOURCE in headers/libs/android-21, che appare in r10 (quando android-21 si chiamava ancora Android-L), ma senza documentazione.
Correzioni di bug importanti:
Altre correzioni di bug:
  • Apportate le seguenti correzioni a android-21 per intestazioni e libreria:
    • Sono stati aggiunti altri codici chiave TV: android/keycodes.h
    • Sono state aggiunte altre costanti e sei nuove funzioni dei sensori a android/sensor.h: ASensorManager_getDefaultSensorEx, ASensor_getFifoMaxEventCount ASensor_getFifoReservedEventCount, ASensor_getStringType, ASensor_getReportingMode e ASensor_isWakeUpSensor.
    • È stato corretto il problema stdatomic.h per migliorare la compatibilità con GCC 4.6 e fornire assistenza per l'intestazione <atomic>.
    • sys/ucontext.h e sys/user.h aggiunti a tutti i livelli API. La L'intestazione signal.h ora include <sys/ucontext.h>. Puoi rimuovi qualsiasi definizione esistente di struct ucontext.
    • È stato aggiunto posix_memalign ai livelli API 17, 18 e 19.
    • Sono state aggiunte le seguenti funzioni a tutte le architetture: android_set_abort_message, posix_fadvise, posix_fadvise64, pthread_gettid_np.
    • Sono state aggiunte le autorizzazioni richieste a native-media/AndroidManifest.xml campione. (Numero 106640)
    • Sono stati aggiunti clock_nanosleep e clock_settime al livello API 21. (Problema 77372)
    • Sono stati rimossi i seguenti simboli da tutte le architetture: get_malloc_leak_info, free_malloc_leak_info, __srget, __swbuf, __srefill, __swsetup, __sdidinit, __sflags, __sfp __sinit, __smakebuf, __sflush, __sread, __swrite, __sseek, __sclose, _fwalk, __sglue, __get_thread, __wait4, __futex_wake, __open, __get_tls __getdents64 e dlmalloc.
    • Sono state rimosse le seguenti funzioni dalle architetture a 64 bit: basename_r, dirname_r, __isthreaded, _flush_cache (mips64).
    • È stata rimossa la seguente funzione dalle architetture a 32 bit: __signalfd4.
    • Tipo del terzo argomento cambiato da size_t a int in le seguenti funzioni: strtoll_l, strtoull_l, wcstoll_l e wcstoull_l.
    • Sono state ripristinate le seguenti funzioni nell'architettura a 64 bit: arc4random, arc4random_buf e arc4random_uniform.
    • cxa_* e gli operatori new e delete spostati di nuovo a libstdc++.so. Questa modifica ripristina il comportamento r9d; versioni precedenti di r10 contenevano file segnaposto.
  • Ripristinato supporto MXU in GCC 4.8 e 4.9 per mips. Questo supporto era assente da r10 e r10b perché quelle versioni di GCC erano state compilate con binutils-2.24, che non supporta MXU. Ora sì.
  • È stato corretto --toolchain= in make-standalone-toolchain.sh in modo che sia ora supporta correttamente l'uso di un suffisso che specifichi una versione di Clang.
  • Sono state corrette le funzioni libc++/armeabi strtod().
  • Sono state apportate correzioni alla documentazione NDK in docs/.
Altre modifiche:
  • cpu-features migliorato per rilevare il supporto di ARMv8 per quanto segue set di istruzioni: AES, CRC32, SHA2, SHA1 e PMULL/PMULL2 a 64 bit. (Problema 106360)
  • È stato modificato ndk-build per utilizzare *-gcc-ar, disponibile in GCC 4.8, GCC 4.9 e Clang. È specificato da Clang anziché *-ar. Questa impostazione migliora l'LTO assistenza in tempo reale.
  • Sono stati rimossi include-fixed/linux/a.out.h e include-fixed/linux/compiler.h dal compilatore GCC. (Numero 73728)
  • È stato risolto un problema relativo a -flto con GCC 4.8 su Mac OS X. Il messaggio di errore lettura:
  • .../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so
    Symbol not found: _environ
    
  • È stato corretto un errore ortografico in build-binary.mk. (problema 76992)
Problemi noti importanti:
  • Specificare -Os (-fauto-profile) in GCC4.9 potrebbe causare arresti anomali. (Numero 77571)
Note importanti:
  • A causa delle restrizioni sulle dimensioni di 512 MB dei pacchetti scaricabili, i seguenti elementi a 32 bit non si trovano nei pacchetti di download NDK a 32 bit. Si trovano invece in quelli a 64 bit:
    • Intestazioni Android-L
    • GCC 4.9
  • Attualmente, l'unico supporto Renderscript fornito dall'NDK è per Renderscript a 32 bit con Android 4.4 (livello API 19). Non puoi creare HelloComputeNDK (l'unico esempio Renderscript) con qualsiasi altra combinazione di Renderscript (32 o 64 bit) e versione Android.
  • Per compilare il codec nativo, devi utilizzare un pacchetto NDK a 64 bit, che è dove si trovano tutte le intestazioni Android-L.
Correzioni di bug importanti:
  • Corretto gdb 7.6 in GCC 4.8/4.9. (Problemi 74112 e 74371.)
  • È stato corretto GCC 4.8/4.9 per x86, di modo che non abilitano più -msse4.2 e -mpopcnt per impostazione predefinita. (Problema 73843.)
Altre correzioni di bug:
  • stdio.h rimosso dalle directory include-fixed/ di tutte le versioni di GCC. (Problema 73728.)
  • Sono stati rimossi file di intestazione duplicati dai pacchetti Windows nelle directory platforms/android-L/arch-*/usr/include/linux/netfilter*/. (Problema 73704.)
  • È stato risolto un problema che impediva a Clang di creare HelloComputeNDK.
  • Correzione atexit. (Problema 66595.)
  • Apportate varie correzioni ai documenti in docs/ e sources/third_party/googletest/README.NDK. (Problema 74069.)
  • Apportate le seguenti correzioni alle intestazioni Android-L:
    1. Sono state aggiunte le seguenti funzioni a ctype.h e wchar.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() (Problema 73719) e 42 *_l().
    2. cmsg_nxthdr rinominato in __cmsg_nxthdr.
    3. __libc_malloc_dispatch rimosso.
    4. Il prototipo ptrace() è stato modificato in long ptrace(int, ...);.
    5. sha1.h rimosso.
    6. Elemento android_dlextinfo esteso in android/dlext.h.
    7. __NDK_FPABI__ annotato per le funzioni che ricevono o restituiscono valori di tipo doppio o in virgola mobile in stdlib.h, time.h, wchar.h e complex.h.
Altre modifiche:
  • Sono stati aggiornati mipsel-linux-android-4.9 e mips64el-linux-android-4.9, implementando un nuovo layout di directory multilib e fornendo supporto per gdb-7.7
  • cpu-features migliorato per rilevare più funzionalità di ARM64. (Modifica elenco 100339.)
Modifiche importanti:
  • Aggiunte 3 nuove ABI, tutte a 64 bit: arm64-v8a, x86_64, mips64.
  • Tieni presente che:
    • GCC 4.9 è il compilatore predefinito per le ABI a 64 bit. Clang è attualmente la versione 3.4. NDK_TOOLCHAIN_VERSION=clang potrebbe non funzionare per arm64-v8a e mips64.
    • Android-L è il primo livello con supporto del formato a 64 bit. Tieni presente che questa API è temporaneo e può essere usato solo per l'anteprima L. Verrà sostituito da un numero di livello API effettivo Rilascia a L.
    • Questa release include ora all32 e all64 impostazioni di APP_ABI.
      • APP_ABI=all32 equivale a APP_ABI=armeabi,armeabi-v7a,x86,mips.
      • APP_ABI=all64 equivale a APP_ABI=arm64-v8a,x86_64,mips64.
      • APP_ABI=all seleziona tutte le ABI.
    • Il nuovo GNU libstdc++ in Android-L contiene tutti e <tr1/cmath> Prima di definire una funzione matematica, controlla _GLIBCXX_USE_C99_MATH_TR1 per visualizzare un esiste già una funzione con questo nome al fine di evitare una "definizione multipla" errori del Linker.
    • La libreria cpu-features è stata aggiornata per il kernel ARMv8. L'attuale la libreria di funzionalità CPU potrebbe non rilevare la presenza di NEON sulla piattaforma ARMv8. Ricompila i tuoi con la nuova versione.
  • È stata aggiunta una nuova directory API platforms/android-L/. tra cui:
    • Intestazioni Bionic aggiornate, che non erano cambiate rispetto ai livelli API Android 3 (Cupcake) a 19 (KitKat). Questa nuova versione, per il livello L, deve essere sincronizzata con AOSP.
    • Nuove API multimediali e un esempio di codec nativo.
    • Un'intestazione Android.h aggiornata per SLES/OpenSLES, che consente il supporto di formato audio in virgola mobile a precisione singola in AudioPlayer.
    • Estensioni GLES 3.1 e AEP a libGLESv3.so.
    • Intestazioni GLES2 e GLES3 aggiornate alle ultime versioni ufficiali di Khronos.
  • Sono stati aggiunti i compilatori GCC 4.9 alle ABI a 32/64 bit. GCC 4.9 è il compilatore predefinito (solo) per le ABI a 64 bit, come detto in precedenza. Per le ABI a 32 bit, devi abilitare esplicitamente GCC 4.9, come GCC 4.6 rimane l'impostazione predefinita.
    • Per ndk-build, abilita la compilazione di GCC 4.9 a 32 bit aggiungendo NDK_TOOLCHAIN_VERSION=4.9 in Application.mk o esportarla come file la variabile di ambiente dalla riga di comando.
    • Per una toolchain autonoma, utilizza l'opzione --toolchain= nella Script make-standalone-toolchain.sh. Ad esempio: --toolchain=arm-linux-androideabi-4.9.
  • È stato aggiornato GDB alla versione 7.6 in GCC 4.8/4.9 e x86*. Poiché GDB è ancora alla versione GDB-7.3.x in GCC 4.6 (valore predefinito per ARM e MIPS), è necessario impostare NDK_TOOLCHAIN_VERSION=4.8 o 4.9 per abilitare ndk-gdb e selezionare GDB 7.6.
  • È stata aggiunta l'opzione di build -mssse3 per fornire il supporto SSSE3 ed è stata impostata come predefinita per ABI x86 (upgrade da SSE3). L'immagine rilasciata da Google non contiene istruzioni SSSE3.
  • Aggiornamento di GCC dalla versione 4.8 alla versione 4.8.3.
  • Supporto di ARM libc++ EH migliorato passando da gabi++ a libc++abi. Per maggiori dettagli, consulta "Assistenza C++" della documentazione. Tieni presente che:
    • Tutti i test, ad eccezione delle impostazioni internazionali, ora superano Clang 3.4 e GCC 4.8. Per ulteriori informazioni informazioni, consulta la sezione "Assistenza C++" della documentazione.
    • Le librerie libc++ per X86 e MIPS libc++ utilizzano ancora gabi++.
    • GCC 4.7 e versioni successive ora possono utilizzare <atomic>.
    • Devi aggiungere -fno-strict-aliasing se utilizzi <list>, perché __list_imp::_end_ interruzioni Regole TBAA. (Problema 61571.)
    • A partire da GCC 4.6, LIBCXX_FORCE_REBUILD:=true non ricrea più libc++. Ricreando richiede l'utilizzo di un compilatore diverso. Tieni presente che Clang 3.3 non è stato testato.
  • mclinker è ora in versione 2.7 e supporta aarch64 Linux.
  • Aggiunto il supporto delle intestazioni precompilate per le intestazioni specificate da LOCAL_PCH. (Numero 25412).
Correzioni di bug importanti:
  • È stato corretto libc++ in modo che ora compili std::feof e così via (problema 66668).
  • Risolto il problema di una chiamata alla libreria atomica Clang 3.3/3.4 che causava arresti anomali in alcune delle libc++ test per ABI armeabi.
  • Sono stati corretti gli arresti anomali di Clang 3.4 che si verificavano durante la lettura delle intestazioni precompilate. (numero 66657).
  • È stato corretto l'asserzione -O3 di Clang 3.3/3.4 su:
  • llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef): Assertion Weights.size() >= 2 && "Need at least two branch weights!" (numero 57381).
  • È stato risolto il seguente arresto anomalo di Clang 3.3/3.4:
  • 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. (Numero 66950).
Altre correzioni di bug:
  • Intestazioni fisse:
    • È stato corretto il valore ssize_t a 32 bit di int anziché long int.
    • Sono stati corretti WCHAR_MIN e WCHAR_MAX in modo che rendano necessari appropriata in base all'architettura su cui si trovano:
      • X86/MIPS: firmato.
      • ARM: non firmato.
      • Per forzare l'impostazione predefinita di X86/MIPS su Non firmato, utilizza -D__WCHAR_UNSIGNED__.
      • Per forzare wchar_t a essere a 16 bit, utilizza -fshort-wchar.
    • Sono stati rimossi i simboli inesistenti da libc.so a 32 bit e sono stati aggiunti pread64, pwrite64, ftruncate64 per API Android di livello 12 o superiore. (Numero 69319). Per ulteriori informazioni informazioni, consulta il messaggio di commit che accompagna l'elenco delle modifiche AOSP 94137
  • È stato corretto l'avviso di GCC relativo alla ridefinizione di putchar. Il messaggio di avviso dice:
  • include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int); (elenco delle modifiche 91185).
  • È stato corretto make-standalone-toolchain.sh --stl=libc++ in modo che:
    • Copia cxxabi.h. (codice 68001).
    • Viene eseguito in directory diverse dalla directory di installazione NDK. (Problemi 67690 e 68647).
  • È stato corretto il sistema GCC/Windows per citare gli argomenti solo quando necessario per i processi di riproduzione in o programmi esterni. Questa modifica riduce la probabilità di superare il limite di lunghezza di 32.000.
  • È stato risolto un problema che impediva la modifica di APP_PLATFORM variabile di ambiente.
  • È stato corretto l'implementazione di IsSystemLibrary() in crazy_linker in modo che usa strrchr() invece di strchr() per trovare il vero nome base del percorso della libreria.
  • È stata risolta l'impossibilità di creare l'audio nativo in modalità di debug.
  • È stata risolta l'incapacità di gdb di stampare numeri con rappresentazione in virgola mobile estreme. (Numero 69203).
  • È stata corretta l'incapacità di eseguire la compilazione di Clang 3.4 con -Wl,-shared (a differenza di -shared, che non ha avuto problemi di compilazione). Il problema era che Clang ha aggiunto -pie per Android target se non sono presenti né -shared-static. Questo comportamento, che è stato risposta errata, il linker si è lamentato del fatto che -shared e -pie non hanno potuto coesistono.
Altre modifiche:
  • È stato aggiunto arm_neon.h alla toolchain x86 in modo che ora emula circa il 47% del Neon. Al momento non è disponibile il supporto per i tipi a 64 bit. Per ulteriori informazioni, consulta la sezione su ARM Supporto degli elementi intrinseci Neon nella documentazione di x86.
  • Ottimizzazione ARM/GOT_PREL trasferita (presente in GCC 4.6 creata dal ramo Google di GCC) a ARM GCC 4.8/4.9. Questa ottimizzazione a volte riduce il numero di istruzioni quando si accede a livello globale come la codifica one-hot delle variabili categoriche. Ad esempio, vedi lo script build.sh in $NDK/tests/build/b14811006-GOT_PREL-optimization/.
  • È stata aggiunta la versione ARM per STL gabi++, stlport e libc++. Ora dispone sia di .
  • Ora è possibile chiamare lo script make-standalone-toolchain.sh con --toolchain=x86_64-linux-android-4.9, che equivale a --toolchain=x86_64-4.9.
Modifiche importanti:
  • Aggiunto il supporto per il compilatore Clang 3.4. La L'opzione NDK_TOOLCHAIN_VERSION=clang ora sceglie Clang 3.4. GCC 4.6 è è comunque il compilatore predefinito.
  • Aggiunto in data APP_ABI=armeabi-v7a-hard, con opzione Multilib aggiuntiva -mfloat-abi=hard. Queste opzioni riguardano usare con ARM GCC 4.6/4.8 e Clang 3.3/3.4 (che usano le versioni assembler, linker, e libs). Quando utilizzi queste opzioni, tieni presente le seguenti modifiche:
    • Quando esegui lo script ndk-build, aggiungi seguenti opzioni per il target armeabi-v7a:
      TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1
      TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
      La raccolta creata viene copiata in libs/armeabi-v7a. Per make to comportarsi come previsto, non puoi specificare sia armeabi-v7a armeabi-v7a-hard come target (ad es. sulla riga APP_ABI=). poiché una di queste viene ignorata. Tieni presente che APP_ABI=all è comunque equivalente a armeabi armeabi-v7a x86 mips.
    • Lo script make-standalone-toolchain.sh viene copiato librerie aggiuntive in /hard directory. Aggiungi i CFLAGS e le LFLAGS precedenti al tuo makefile per consentire il collegamento a GCC o Clang biblioteche in /hard.
  • È stato aggiunto l'assemblatore di Yasm e LOCAL_ASMFLAGS e EXPORT_ASMFLAGS flag per x86 target. Lo script ndk-build utilizza prebuilts/*/bin/yasm* per creare LOCAL_SRC_FILES che che presentano l'estensione .asm.
  • MClinker aggiornato alla versione 2.6.0, che aggiunge -gc-sections assistenza in tempo reale.
  • Aggiunto il supporto sperimentale libc++ (upstream r201101). Usa questa nuova questa funzionalità seguendo questa procedura:
    • Aggiungi APP_STL := c++_static o APP_STL := c++_shared in Application.mk. Puoi ricreare la build dal codice sorgente tramite LIBCXX_FORCE_REBUILD := true
    • Esegui make-standalone-toolchain.sh --stl=libc++ per creare una toolchain autonoma con libc++ intestazioni/lib.
    di Gemini Advanced. Per ulteriori informazioni, vedi CPLUSPLUS-SUPPORT.html. (Numero 36496)
Correzioni di bug importanti:
  • Risolto il problema di lancio non sorpreso dovuto a un errore imprevisto gestore delle eccezioni per GCC 4.6/4.8 ARM EABI. (Problema GCC 59392)
  • È stato corretto GCC 4.8 in modo da risolvere correttamente una parte nella specializzazione di un modello un argomento modello non di tipo dipendente. (Problema GCC 59052)
  • Aggiunti altri moduli a Python predefinito (problema 59902):
      .
    • Mac OS X: zlib, bz2, _curses, _curses_panel, _hashlib _ssl
    • Linux: zlib, nis, crypt, _curses e _curses_panel
  • Risoluzione del problema gdbserver per x86 e MIPS event_getmsg_helper.
  • Sono stati risolti numerosi problemi nella toolchain NDK di RenderScript, tra cui problemi di compatibilità con i dispositivi meno recenti e riflesso in C++.

Altre correzioni di bug:
  • Correzioni delle intestazioni:
    • È stato corretto un elemento #include <sys/types.h> mancante in android/asset_manager.h per il livello API Android 13 e versioni successive. (Numero 64988)
    • È stato corretto un elemento #include mancante in android/rect_manager.h per il livello API Android 14 e versioni successive.
    • Elemento JNICALL aggiunto alla raccolta JNI_OnLoad e JNI_OnUnload a jni.h. Tieni presente che JNICALL definita come __NDK_FPABI__. Per ulteriori informazioni, consulta sys/cdefs.h.
    • Sono state aggiornate le seguenti intestazioni in modo che possano essere incluse senza dover eseguire includere manualmente le rispettive dipendenze (problema 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
    • sys/cachectl.h aggiunto per tutte le architetture. MIPS gli sviluppatori possono ora includere questa intestazione anziché scrivere #ifdef __mips__.
    • È stato corretto platforms/android-18/include/android/input.h aggiungendo __NDK_FPABI__ alle funzioni che acquisiscono o restituiscono valori in virgola mobile o doppi.
    • È stato corretto il valore struct stat MIPS impostato in modo errato alla sua controparte a 64 bit per il livello API Android 12 e successivi. Sbagliato era un'impostazione di regressione lineare introdotto nella release r9c.
    • Definito __PTHREAD_MUTEX_INIT_VALUE, __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE, e __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE per l'API Android livello 9 e inferiori.
    • Hai aggiunto scalbln, scalblnf e Da scalblnl a x86 libm.so per API 18 e versioni successive.
    • È stato corretto un errore ortografico in sources/android/support/include/iconv.h. (Numero 63806)
  • Corretto gabi++ std::unexpected() per chiamare std::terminate() per fare in modo che può essere eseguito un gestore std::terminate() definito dall'utente.
  • È stato corretto il problema di gabi++ per rilevare std::nullptr.
  • Sono stati corretti i campioni di Teiera e AltreTeiere:
    • Risolto un problema con i chip Tegra 2 e 3 cambiando i chip per usare una precisione media. I valori per la potenza speculare ora possono essere inferiori rispetto a 1,0.
    • I Sample sono stati modificati in modo da ripristinare la pressione del tasto del volume modalità immersiva e invalida SYSTEM_UI_FLAG_IMMERSIVE_STICKY. La rotazione dello schermo non attiva onSystemUiVisibilityChange, pertanto non ripristina modalità immersiva.
  • È stato corretto lo script ndk-build da aggiungere -rpath-link=$SYSROOT/usr/lib e -rpath-link=$TARGET_OUT per utilizzare ld.bfd per tramite gli eseguibili dei link. (Numero 64266)
  • -Bsymbolic rimosso da tutte le build STL.
  • È stato corretto il problema ndk-gdb-py.cmd impostando SHELL come una variabile di ambiente anziché passarla al python.exe, che ignora l'impostazione. (Numero 63054)
  • Lo script make-standalone-toolchain.sh è stato corretto in modo che l'opzione --stl=stlport copia le intestazioni gabi++ anziché simbolizzarli; le shell cmd.exe e MinGW non comprendono i collegamenti simbolici creati da cygwin.
Altre modifiche:
  • Autorizzazioni di esecuzione applicate a tutti gli script *cmd in precedenza destinato all'uso solo nella shell cmd.exe, nel caso in cui gli sviluppatori preferiscono utilizzare ndk-build.cmd in cygwin anziché nella script ndk-build consigliato.
  • È stata migliorata la velocità di make-standalone-toolchain.sh spostandosi al posto di copiarlo, se la directory di destinazione specificata inesistenti.

Si tratta di una release solo per la correzione di bug.

Correzioni di bug importanti:
  • È stato risolto un problema con GCC 4.8 ARM, in cui il puntatore dello stack veniva ripristinato troppo presto. Questo problema ha impedito l'affidabilità del puntatore frame accedendo a una variabile nello stack frame. (Problema GCC 58854)
  • È stato risolto un problema relativo a GCC 4.8 libstdc++, in cui si verificava un bug std::nth_element stava causando la generazione di codice che produceva un segfault. (Numero 62910)
  • GCC 4.8 ICE fisso in cc1/cc1plus con -fuse-ld=mcld, in modo che il seguente errore non si verifichi più:
    cc1: internal compiler error: in common_handle_option, at
    opts.c:1774
  • È stato corretto il supporto di -mhard-float per __builtin funzioni matematiche. Per informazioni aggiornate sulle correzioni per -mhard-float con STL, segui il numero 61784.
Altre correzioni di bug:
  • Correzioni delle intestazioni:
    • Prototipo di poll cambiato in poll(struct pollfd *, nfds_t, int); in poll.h.
    • Elemento utimensat aggiunto alla raccolta libc.so per Android Livelli API 12 e 19. Queste librerie sono ora incluse per tutte le API Android livelli da 12 a 19.
    • futimens introdotto in libc.so, per l'API Android livello 19.
    • Sono stati aggiunti clock_settime() e Da clock_nanosleep() a time.h per il livello API Android 8 e superiori.
    • Hai aggiunto CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, e CLOCK_BOOTTIME_ALARM a time.h.
    • Sono stati rimossi i file CLOCK_REALTIME_HR obsoleti e CLOCK_MONOTONIC_HR.
  • Nei campioni Teapot, MoreTeapots e source/android/ndk_helper:
    • Sono stati cambiati in modo da utilizzare un abi fluttuante per armeabi-v7a.
    • Sono state aggiornate in modo che utilizzino la modalità immersiva con il livello API Android 19 e in alto.
    • È stato risolto un problema relativo a Check_ReleaseStringUTFChars in /system/lib/libdvm.so che causava arresti anomali su dispositivi x86.
  • Correzione di errori ndk-build che si verificano in cygwin quando NDK pacchetto è a cui viene fatto riferimento tramite un link simbolico.
  • È stato corretto il problema di ndk-build.cmd che si verificava nelle finestre cmd.exe quando LOCAL_SRC_FILES contiene percorsi assoluti. (Numero 69992)
  • È stato corretto lo script ndk-stack in modo che procedesse anche quando non era in grado di analizzare un frame perché non è possibile trovare una routine, un nome file o un numero di riga. In uno qualsiasi di in questi casi, viene stampato ??.
  • È stato corretto lo stack ndk-stack per i target Windows-x64_64, in modo che non corrisponde più erroneamente a una linea di frame con una linea Sezione stack: che non contiene pc, eip o ip. Ad esempio:
    I/DEBUG   ( 1151):     #00  5f09db68  401f01c4
    /system/lib/libc.so
  • È stato corretto il file gabi++ in modo che:
    • Non utilizza Malloc() per allocare il thread C++ locale di oggetti strutturati.
    • Evita i deadlock in gabi++ nei casi in cui libc.debug.malloc viene diverso da zero nelle build della piattaforma Android userdebug/eng.
Altre modifiche:
  • LOCAL_EXPORT_LDFLAGS aggiunto.
  • È stata introdotta l'impostazione NDK_PROJECT_PATH=null per l'utilizzo in una un sistema di compilazione integrato in cui le opzioni vengono passate esplicitamente ndk-build. Con questa impostazione, ndk-build non fornisce di cercare NDK_PROJECT_PATH.. Questa impostazione impedisce inoltre ricavarne le impostazioni predefinite da NDK_PROJECT_PATH. Di conseguenza, le seguenti variabili devono essere specificate esplicitamente (con le loro se presenti): NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG (facoltativo, valore predefinito 0) e altri valori di APP_* contenuto in Application.mk.
  • Ora APP_ABI può essere enumerato in un elenco delimitato da virgole. Per esempio:
    APP_ABI := "armeabi,armeabi-v7a"
  • È stata fornita la possibilità di ricreare tutto il codice STL con informazioni di debug in un un pacchetto separato facoltativo android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip, utilizzando Opzione -g. Questa opzione consente allo script ndk-stack di fornire un migliore dump dello stack in STL. Questa modifica non dovrebbe influire sul codice e/o sulle dimensioni del file finale eliminato.
  • hello-jni esempi migliorati per segnalare APP_ABI alle compilation.
  • Hai utilizzato lo strumento ar in modalità deterministica (opzione -D) per creare librerie statiche. (Numero 60705)
Modifiche importanti:
  • include/android/*h e math.h aggiornati per tutti i livelli API Android fino al 18, inclusa l'aggiunta dei livelli 13, 15, 16 e 17. Per informazioni sulle API aggiunte, consulta i messaggi di commit per le modifiche 68012 e 68014. (Problemi 47150, 58528 e 38423)
  • Aggiunto il supporto del livello API Android 19, inclusa l'associazione Renderscript.
  • Aggiunto il supporto per -mhard-float nell'ABI armeabi-v7a esistente. Per ulteriori informazioni informazioni e le attuali restrizioni su Clang, consulta tests/device/hard-float/jni/Android.mk.
  • Migrazione da GNU Compiler Collection (GCC) alla versione 4.8.2 e colore diagnostico aggiunto assistenza in tempo reale. Per attivare i colori diagnostici, imposta -fdiagnostics-color=auto, -fdiagnostics-color=always, o esporta GCC_COLORS come mostrato di seguito:
    GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
    
    Per ulteriori informazioni, vedi GCC Opzioni indipendenti dalla lingua.
  • Sono stati aggiunti due nuovi esempi per dimostrare le funzionalità di OpenGL ES 3.0: Teapot e MoreTeapots. Questi esempi vengono eseguiti su dispositivi con Android 4.1 (livello API 16) e versioni successive.
  • Deprecato il supporto di GCC 4.7 e Clang 3.2, che verrà rimosso in .
Correzioni di bug importanti:
  • È stato risolto il problema per cui ARM GCC 4.6 thumb2 non riusciva a generare il salto relativo a 16 bit tabelle. (Problema di GCC)
  • È stato corretto l'errore interno del compilatore GCC 4.8 (ICE) attivo g++.dg/cpp0x/lambda/lambda-defarg3.C. (Modifica 62770, Problema di GCC)
  • È stato risolto un problema relativo all'avvio non riuscito degli eseguibili *-gdb.exe a 32 bit di Windows. (Problema 58975)
  • È stato corretto GCC 4.8 ICE durante la creazione di una libreria di punti elenco. Il messaggio di errore è il seguente:
    internal compiler error: verify_flow_info failed
    (Numero 58916, Problema di GCC)
  • Build GDB/ARM modificata per saltare i dati di ARM.exidx per il relax nel codice del prologo e è stato aggiunto un comando (set arm exidx-unwinding) per controllare lo sviluppo dello stack basato su exidx. (Problema 55826)
  • Risolto il problema del compilatore Clang 3.3 MIPS in cui i registri HI e LO non sono corretti riutilizzate.
  • È stato risolto il problema relativo a MIPS 4.7 ICE in dbx_reg_number. Il messaggio di errore è il seguente: che segue:
    external/icu4c/i18n/decimfmt.cpp:1322:1:
    internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
    
    (Patch di GCC)
Altre correzioni di bug:
  • Correzioni delle intestazioni
    • È stato risolto il problema di annullamento della firma di ARM WCHAR_MIN e WCHAR_MAX in base a (le versioni X86/MIPS sono firmate). Definisci _WCHAR_IS_ALWAYS_SIGNED in ripristinare il vecchio comportamento. (Problema 57749)
    • È stato corretto il problema di include/netinet/tcp.h che conteneva l'enumerazione dello stato TCP_INFO. (Problema 38881)
    • È stata corretta la generazione della macro cdefs_elh.h _C_LABEL_STRING nella toolchain di GCC 4.8 quando si utilizza la modalità c++11. (Numero 58135, Numero 58652)
    • Rimosse dall'intestazione le funzioni inesistenti imaxabs e imaxdiv inttypes.h.
    • È stato risolto il problema relativo ai valori restituiti di pthread_exit() e a pthread_self(). (Problema 60686)
    • È stata aggiunta la funzione mkdtemp() mancante, già esistente in bionic l'intestazione stdlib.h.
  • È stato risolto il problema di creazione di samples/gles3jni con Clang sul livello API Android 11.
  • È stato corretto l'MCLinker per consentire più occorrenze delle seguenti opzioni: -gc-sections e --eh-frame-hdr.
  • È stato corretto l'accettazione dell'opzione --no-warn-mismatch da parte di MCLinker.
  • Opzione cpu-features modificata per non presumere che tutti i dispositivi VFPv4 supportino IDIV. Ora con questa opzione viene aggiunto soltanto l'IDIV ai dispositivi autorizzati, incluso Nexus 4. (Problema 57637)
  • È stato risolto il problema a causa del quale android_native_app_glue.c registrava erroneamente gli errori nell'evento le operazioni di pre-invio.
  • È stato corretto il problema di tutte le operazioni su gabi++ terminate e imprevista_handler sicura per i thread.
  • Sono stati risolti diversi problemi relativi all'opzione Clang -integrated-as che ne consente il superamento test per ssax-instructions e fenv.
  • È stato corretto il compilatore GCC 4.6/4.7/4.8 per passare l'opzione linker --eh-frame-hdr anche per gli eseguibili statici. Per ulteriori informazioni, consulta Patch GCC.
  • È stato corretto l'apostrofo aggiuntivo in CPU-ARCH-ABIS.html. Per ulteriori informazioni, vedi NDK-DEPENDS.html. (Problema 60142)
  • Sono stati corretti i valori di virgolette extra nell'output ndk-build su Windows. (Problema 60649)
  • È stato corretto Clang 3.3 per compilare le operazioni atomiche integrate di ARM, come __atomic_fetch_add, __atomic_fetch_sub e __atomic_fetch_or.
  • È stato corretto Clang 3.3 ICE con vfprintf personalizzato. (Problema di clang)
Altre modifiche:
  • OpenMP abilitato per tutte le build di GCC. Per utilizzare questa funzione, aggiungi i seguenti flag al tuo impostazioni build:
    LOCAL_CFLAGS += -fopenmp
    LOCAL_LDFLAGS += -fopenmp
    
    Per esempi di codice, vedi tests/device/test-openmp
  • Ha ridotto in modo significativo le dimensioni di ld.mcld (1,5 MB rispetto a ld.bfd 3,5 MB e ld.gold 7,5 MB), con un miglioramento della velocità di circa il 20%.
  • LOCAL_CONLYFLAGS e APP_CONLYFLAGS aggiunti da specificare applicabili solo a C ma non a C++. LOCAL_CFLAGS esistente e APP_CFLAGS vengono utilizzati anche per la compilazione C++ (per evitare problemi dei specificando la maggior parte delle opzioni due volte), quindi le opzioni come -std=gnu99 potrebbero non riuscire g++ esegue le build con un avviso e clang++ con un errore.
  • Sono state aggiunte gabi++ funzioni helper di array.
  • Hai modificato le build di GCC in modo che tutti i file libgcc.a siano creati con -funwind-tables per consentire lo svolgimento della pila dopo il blocco precedente come __aeabi_idiv0.
  • Aggiunto il supporto Ingenic MXU in MIPS GCC4.6/4.7/4.8 con il nuovo -mmxu .
  • MIPS GCC4.6/4.7/4.8 -mldc1-sdc1 esteso per controllare anche ldxc1/sdxc1
  • È stato aggiunto un linker folle. Per ulteriori informazioni, vedi sources/android/crazy_linker/README.TXT.
  • È stato corretto il problema di bitmap-plasma, che consentiva di disegnare a schermo intero anziché su una dimensione di 200 x 200 pixel geografica specifica.
  • Ha ridotto le dimensioni della toolchain Linux e Darwin del 25% grazie alla creazione di collegamenti simbolici a file identici.
Modifiche importanti:
  • Aggiunto il supporto per Android 4.3 (livello API 18). Per ulteriori informazioni, vedi STABLE-APIS.html e nuovi esempi di codice in samples/gles3jni/README.
  • Sono state aggiunte intestazioni e librerie per OpenGL ES 3.0, supportato da Android 4.3 (livello API 18) e superiore.
  • Aggiunto il compilatore GNU Compiler Collection (GCC) 4.8 all'NDK. Poiché GCC 4.6 è ancora per impostazione predefinita, devi abilitare esplicitamente questa opzione:
    • Per ndk-build build, esporta NDK_TOOLCHAIN_VERSION=4.8 oppure aggiungilo in Application.mk.
    • Per le build autonome, usa l'opzione --toolchain= in make-standalone-toolchain.sh, ad esempio:
      --toolchain=arm-linux-androideabi-4.8

    Nota: L'opzione -Wunused-local-typedefs è attivata da -Wall. Essere assicurati di aggiungere __attribute__((unused)) se utilizzi asserzioni al momento della compilazione come sources/cxx-stl/stlport/stlport/stl/config/features.h, riga 311. Per ulteriori informazioni le informazioni, vedi Modifica 55460

    Nota: Nella versione GCC 4.7 e successive, i compilatori ARM generano un codice di accesso non allineato predefinita per ARMv6 e target di build superiori. Potresti dover aggiungere Opzione di build -mno-unaligned-access durante la creazione per kernel che non supportano questa funzionalità.

  • Aggiunto il supporto per Clang 3.3. Opzione di creazione NDK_TOOLCHAIN_VERSION=clang ora sceglie Clang 3.3 per impostazione predefinita.

    Nota: Sia GCC 4.4.3 che Clang 3.1 sono deprecati e verranno rimossi dal prossimo NDK .

  • Aggiornato GNU Project Debugger (GDB) per supportare Python 2.7.5.
  • È stato aggiunto MCLinker per supportare gli host Windows. Dal giorno ld.gold è l'impostazione predefinita, se disponibile, devi aggiungere -fuse-ld=mcld in LOCAL_LDFLAGS o APP_LDFLAGS per attivare MCLinker.
  • È stato aggiunto lo strumento ndk-depends che stampa le dipendenze della libreria ELF. Per ulteriori informazioni, vedi NDK-DEPENDS.html. (Problema 53486)
Correzioni di bug importanti:
  • È stato risolto il potenziale problema di gestione degli eventi in android_native_app_glue. (Problema 41755)
  • È stata corretta la build ARM/GCC-4.7 per generare un allineamento sufficiente per il carico NEON e l'archiviazione VST e VLD. (Numero 57271 di GCC)
  • È stato corretto un errore del compilatore interno (ICE) in GCC 4.4.3/4.6/4.7 per un indice negativo costante su un valore letterale stringa. (Problema 54623)
  • È stato corretto l'errore di segmentazione di GCC 4.7 per l'inizializzazione costante con un indirizzo oggetto. (Problema 56508)
  • È stato corretto l'errore di segmentazione ARM di GCC 4.6 per i valori -O quando si utilizza la funzionalità Boost 1.52.0. (Problema 42891)
  • Sono stati corretti libc.so e libc.a per supportare la funzione wait4(). (Numero 19854)
  • Sono stati aggiornati i file x86 libc.so e libc.a per includere clone() personalizzata.
  • È stato corretto il bug LOCAL_SHORT_COMMANDS in cui si trovava il file linker.list vuoto o non utilizzato.
  • Correzione della build GCC MIPS su Mac OS per l'utilizzo di direttive CFI, senza le quali ld.mcld --eh-frame-hdr con errori frequenti.
  • È stato corretto l'errore interno del compilatore Clang 3.2 X86/MIPS in llvm/lib/VMCore/Value.cpp. (Modifica 59021)
  • È stato corretto l'arresto anomalo dell'assemblatore Windows a 64 bit di GCC 4.7. (Errore: out of memory allocating 4294967280 bytes).
  • Script ndk-gdb aggiornato in modo che le azioni --start o --launch ora attendono il server di debug GNU, in modo che possa raggiungere in modo più affidabile i punti di interruzione impostati all'inizio del percorso di esecuzione (come i punti di interruzione nel codice JNI). (Problema 41278)

    Nota: Questa funzionalità richiede jdb e genera un avviso relativo ai punti di interruzione in sospeso. Specifica l'opzione --nowait per ripristinare il comportamento precedente.

  • È stato corretto l'arresto anomalo di GDB quando l'elenco delle librerie era vuoto.
  • Risolto l'arresto anomalo di GDB durante l'utilizzo di un comando stepi dopo un bx pc o blx pc Istruzioni per eseguire il pollice. (Numero 56962, Numero 36149)
  • È stato corretto il problema gdbserver MIPS per cercare DT_MIPS_RLD_MAP anziché DT_DEBUG. (Problema 56586)
  • È stata corretta una dipendenza circolare nello script ndk-build, ad esempio: se A->B e B->B, quindi B è stato eliminato dalla build. (Problema 56690)
Altre correzioni di bug:
  • È stato corretto lo script ndk-build per consentirti di specificare una versione di Clang come dell'opzione a riga di comando (ad es. NDK_TOOLCHAIN_VERSION=clang3.2). In precedenza, solo che specifica la versione come variabile di ambiente.
  • È stata corretta la dimensione gabi++ di _Unwind_Exception a 24 per i target di build MIPS quando usando il compilatore Clang. (Modifica 54141)
  • È stato corretto lo script ndk-build per garantire che le librerie create vengano effettivamente rimossa dai progetti che includono librerie statiche predefinite quando si utilizza Comando ndk-build clean. (Cambia 54461, Modifica 54480)
  • È stata modificata l'opzione NDK_ANALYZE=1 per renderla meno dettagliata.
  • È stato corretto il problema gnu-libstdc++/Android.mk per includere un percorso backward/ per le build che utilizzano la compatibilità con le versioni precedenti. (Problema 53404)
  • È stato risolto un problema per cui a volte stlport new restituiva valori casuali.
  • È stato corretto ndk-gdb in modo che corrisponda all'ordine di CPU_ABIS, non di APP_ABIS. (Problema 54033)
  • Risolto un problema per cui la build NDK a 64 bit su MacOSX sceglie il percorso sbagliato come compilatore. (Problema 53769)
  • Sono stati corretti gli script di build per rilevare Windows Vista a 64 bit. (Problema 54485)
  • È stato corretto l'errore x86 ntonl/swap32: invalid 'asm': operand number out of range. (Numero 54465, Modifica 57242)
  • È stato corretto ld.gold per unire i valori letterali stringa.
  • È stato corretto ld.gold per gestire l'allineamento dei simboli grandi.
  • ld.gold aggiornato per abilitare l'opzione --sort-section=name.
  • È stato corretto GCC 4.4.3/4.6/4.7 per sopprimere l'opzione -export-dynamic per dei programmi collegati in modo statico. GCC non aggiunge più una sezione .interp per i programmi collegati.
  • È stato corretto l'errore di compilazione stlport di GCC 4.4.3 relativo all'incoerenza typedef di _Unwind_Control_Block. (Problema 54426)
  • Sono stati corretti awk script per gestire AndroidManifest.xml file creati in data Windows che possono contenere \r caratteri finali e causare errori di generazione. (Problema 42548)
  • È stato risolto il problema di make-standalone-toolchain.sh che causava il probe di prebuilts/ per rilevare se l'host è a 32 o 64 bit.
  • È stata corretta l'opzione Clang 3.2 -integrated-as.
  • Sono stati risolti i dati dei gestori del modello compatto pr1 e pr2 di Clang 3.2 ARM EHABI.
  • È stata aggiunta l'opzione Clang -mllvm -arm-enable-ehabi per correggere il seguente errore Clang:
    clang: for the -arm-enable-ehabi option: may only occur zero or one times!
  • È stato corretto l'errore della build quando non era presente alcun elemento uses-sdk nell'applicazione del file manifest. (Problema 57015)
Altre modifiche:
  • Correzioni intestazioni
    • Intestazioni modificate per rendere __set_errno una funzione in linea, dal momento che __set_errno in errno.h è deprecato e libc.so non è più lo esporta.
    • Hai modificato elf.h per includere stdint.h. (Problema 55443)
    • È stato corretto l'inclusione di sys/un.h indipendentemente dalle altre intestazioni. (Problema 53646)
    • È stato risolto il problema che per tutta la famiglia di API MotionEvent_getHistorical prendeva il const AInputEvent* motion_event. (Problema 55873)
    • Corretto malloc_usable_size per prendere const void*. (Problema 55725)
    • È stato corretto il file stdint.h per una maggiore compatibilità con C99. (Modifica 46821)
    • Hai modificato wchar.h per non ridefinire WCHAR_MAX e WCHAR_MIN
    • È stata corretta la dichiarazione <inttypes.h> per PRI e SCN macro. (Problema 57218)
    • L'intestazione sys/cdefs.h è stata modificata in modo che __WCHAR_TYPE__ sia a 32 bit per livelli API inferiori a 9, il che significa che wchat_t è a 32 bit per tutti Livelli API. Per ripristinare il comportamento precedente, definisci _WCHAR_IS_8BIT booleana. (Problema 57267)
  • È stata aggiunta ulteriore formattazione in NDK docs/ e sono state aggiunte correzioni a vari documenti.
  • Aggiunto il supporto per una tecnica di archiviazione thin durante la creazione di librerie statiche. (Problema 40303)
  • Script make-standalone-toolchain.sh aggiornato per supportare stlport libreria oltre a gnustl, quando specifichi l'opzione --stl=stlport. Per ulteriori informazioni, vedi STANDALONE-TOOLCHAIN.html.
  • Lo script make-standalone-toolchain.sh è stato aggiornato in modo che L'opzione --llvm-version= crea i valori $TOOLCHAIN_PREFIX-clang e $TOOLCHAIN_PREFIX-clang++ oltre a clang e clang++, per evitare di utilizzare per errore le definizioni clang e clang++ dell'host.
  • Aggiunti due flag per riattivare due ottimizzazioni in Clang upstream, ma disattivati in NDK per una migliore compatibilità con il codice compilato da GCC:
    • È stato aggiunto un flag -fcxx-missing-return-semantics per riabilitare mancanti invio semantica in Clang 3.2 o versioni successive. Di solito, tutti i percorsi devono terminare con un ritorno per una funzione che restituisce valore. In caso contrario, il clang inserisce un'istruzione non definita (o trap in modalità di debug) in corrispondenza del percorso senza un ritorno l'Informativa. Se sei sicuro che il codice sia corretto, utilizza questo flag per consentire ottimizzatore per sfruttare il comportamento indefinito. In caso di dubbi, non usa questo flag. Il chiamante potrebbe comunque ricevere un valore casuale errato, ma non lo sfrutterà e non renderà più difficile il debug del tuo codice.
    • È stato aggiunto un flag -fglobal-ctor-const-promotion da riattivare promuovere variabili globali con costruttore statico in modo che siano costanti. Con questo flag, il pass di ottimizzazione delle variabili globali di una LLVM cerca di valutare variabili con costruttori statici e promuoverle a costanti globali. Sebbene questa ottimizzazione è corretta, potrebbe causare alcune incompatibilità con il codice compilato di GCC. Ad esempio, il codice potrebbe usare const_cast per trasmettere la costante a modificabile e modificarlo. In GCC, la variabile è in lettura/scrittura e il codice viene eseguito incidente. In Clang, la variabile const si trova nella memoria di sola lettura e potrebbe causare l'arresto anomalo dell'applicazione.
  • È stato aggiunto -mldc1-sdc1 ai compilatori MIPS GCC e Clang. Per impostazione predefinita, i compilatori allinea correttamente gli oggetti a 8 byte ed emetti le istruzioni ldc1 e sdc1 per spostarli. Se la tua app utilizza un allocatore personalizzato che non sempre allinea con il limite di 8 byte di un nuovo oggetto come l'allocatore predefinito, potrebbe arrestarsi in modo anomalo a causa delle operazioni ldc1 e sdc1 sulla memoria non allineata. In questo utilizza il flag -mno-ldc1-sdc1 per risolvere il problema.
  • La gravità dell'evento è stata ridotta da avviso a informazione se APP_PLATFORM_LEVEL è superiore a APP_MIN_PLATFORM_LEVEL. Il valore APP_PLATFORM_LEVEL potrebbe essere inferiore rispetto a APP_PLATFORM in jni/Application.mk perché l'NDK non ha intestazioni per tutti i livelli. In questo caso, il livello effettivo viene spostato verso il basso. La APP_MIN_PLATFORM_LEVEL è specificato dal android:minSdkVersion in il file manifest dell'applicazione. (Problema 39752)
  • Sono stati aggiunti i metodi android_getCpuIdArm() e android_setCpuArm() a cpu-features.c. Questa aggiunta consente di recuperare più facilmente il CPUID ARM informazioni. (Problema 53689)
  • È stato modificato ndk-build per utilizzare as/ld di GCC 4.7 per la compilazione di Clang.

    Nota: In GCC 4.7, monotonic_clock e is_monotonic sono stati rinominati in rispettivamente steady_clock e is_steady.

  • Sono stati aggiunti i nuovi avvisi seguenti allo script ndk-build:
    • Sono stati aggiunti avvisi se vengono utilizzati LOCAL_LDLIBS/LDFLAGS nella libreria statica moduli.
    • È stato aggiunto un avviso se una configurazione non ha modulo da creare.
    • È stato aggiunto un avviso per le librerie non di sistema in uso in LOCAL_LDLIBS/LDFLAGS di una libreria condivisa o moduli eseguibili.
  • Script di build aggiornati in modo che se APP_MODULES non è definito e sia solo statico le librerie sono elencate in Android.mk, lo script ne forza la creazione tutte. (Problema 53502)
  • ndk-build aggiornato per supportare i percorsi assoluti in LOCAL_SRC_FILES.
  • Sono stati rimossi gli eseguibili *-gdbtui, che sono duplicati di *-gdb eseguibili con l'opzione -tui abilitata.
  • Sono stati aggiornati gli script di build per ricevere un avviso quando il compilatore Edison Design Group (EDG) il front-end riattiverà _STLP_HAS_INCLUDE_NEXT. (Problema 53646)
  • È stata aggiunta la variabile di ambiente NDK_LIBS_OUT per consentire l'override di percorso di libraries/gdbserver dal valore predefinito $PROJECT/libs. Per ulteriori informazioni, vedi OVERVIEW.html.
  • Lo script ndk-build modificato utilizza per impostazione predefinita il codice per compilare il codice con la protezione delle stringhe del formato -Wformat -Werror=format-security. Puoi impostare LOCAL_DISABLE_FORMAT_STRING_CHECKS=true per disattivarla. Per ulteriori informazioni, consulta ANDROID-MK.html
  • Aggiunto il supporto per la stampa STL in formato STL in ndk-gdb-py. Per ulteriori informazioni, vedi NDK-GDB.html.
  • Sono stati aggiunti test basati sui framework googletest.
  • È stata aggiunta una notifica allo script di build della toolchain che ti avvisa se la shell attuale non è bash.
Modifiche importanti:
  • È stato aggiunto un set di toolchain host a 64 bit (suffisso nome pacchetto *-x86_64.*). Per ulteriori informazioni informazioni, vedi CHANGES.HTML e NDK-BUILD.html.
  • È stato aggiunto il compilatore Clang 3.2. GCC 4.6 rimane l'impostazione predefinita. Per informazioni sull'utilizzo del Per il compilatore clang, consulta CHANGES.HTML.
  • È stato aggiunto uno strumento di analisi statico di codice per host Linux/MacOSX. Per informazioni sull'utilizzo del analizzatore, consulta CHANGES.HTML.
  • È stato aggiunto MCLinker per host Linux/MacOSX come funzionalità sperimentale. ld.gold linker è l'impostazione predefinita se disponibile, quindi devi abilitarlo esplicitamente. Per ulteriori informazioni informazioni, vedi CHANGES.HTML.
  • È stata aggiornata la build ndk-build per usare l'ordinamento topologico per le dipendenze dei moduli, il che significa che build ordina automaticamente le librerie secondo l'ordine specificato LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES e LOCAL_SHARED_LIBRARIES. Per ulteriori informazioni, vedi CHANGES.HTML. (Problema 39378)
Correzioni di bug importanti:
  • È stato corretto lo script di compilazione per creare tutte le toolchain in -O2. Toolchain nella versione precedente sono state create in modo errato senza ottimizzazione.
  • È stato corretto lo script di compilazione che crea incondizionatamente Clang/llvm per MacOSX a 64 bit.
  • È stato corretto l'errore interno del compilatore GCC 4.6/4.7: gen_thumb_movhi_clobber at config/arm/arm.md:5832. (Problema 52732)
  • È stato risolto il problema di compilazione in cui GCC/ARM 4.6/4.7 non riusciva a collegare il codice utilizzando un'architettura atomica a 64 bit funzioni integrate. (Problema 41297)
  • Sono stati corretti gli errori di mancata corrispondenza dell'utilizzo del linker DIV di GCC 4.7. (Problema Sourceware)
  • È stato corretto l'errore interno del compilatore GCC 4.7 build_data_member_initialization, at cp/semantics.c:5790.
  • È stato corretto l'errore interno del compilatore GCC 4.7 redirect_eh_edge_1, at tree-eh.c:2214. (Problema 52909)
  • È stato corretto un segfault di GCC 4.7. (Problema di GCC)
  • Risoluzione dell'orologio <chrono> corretta e steady_clock attivato. (Problema 39680)
  • È stata corretta la toolchain per abilitare _GLIBCXX_HAS_GTHREADS per GCC 4.7 libstdc++. (Numero 41770, Numero 41859)
  • È stato risolto il problema di mancato collegamento del codice X86 MXX/SSE a causa della mancanza posix_memalign. (Modifica 51872)
  • È stato corretto l'errore di segmentazione GCC4.7/X86 in i386.c, funzione distance_non_agu_define_in_bb(). (Cambia 50383)
  • È stato corretto il problema di GCC4.7/X86 per ripristinare il comportamento precedente di cmov. (Problema di GCC)
  • È stato corretto il valore restituito NULL con gestione di setlocale() in libstdc++/GCC4.7. (Problema 46718)
  • È stato corretto il riferimento non definito del runtime ld.gold a __exidx_start e __exidx_start_end. (Modifica 52134)
  • È stato corretto l'errore interno del compilatore Clang 3.1 durante l'utilizzo della libreria Eigen. (Problema 41246)
  • È stato corretto l'errore interno del compilatore Clang 3.1 che includeva <chrono> in C++11 . (Problema 39600)
  • È stato corretto l'errore interno del compilatore Clang 3.1 durante la generazione del codice oggetto per un metodo a un rvalue uniformemente inizializzato. (Numero 41387)
  • Riallineamento stack Clang 3.1/X86 fisso. (Modifica 52154)
  • Risolto il problema con GNU Debugger (GDB) SIGILL durante il debug su Android 4.1.2. (Problema 40941)
  • È stato risolto il problema per cui GDB non poteva impostare source:line punti di interruzione quando i simboli contengono percorsi di file lunghi e indiretti. (Problema 42448)
  • È stato corretto il criterio GDB read_program_header per gli eseguibili PIE MIPS. (Cambia 49592)
  • È stato corretto l'errore di segmentazione STLport in uncaught_exception(). (Modifica 50236)
  • È stato corretto l'errore di bus STLport nella gestione delle eccezioni a causa di un accesso non allineato di DW_EH_PE_udata2, DW_EH_PE_udata4 e DW_EH_PE_udata8.
  • È stato risolto il problema di ricorsione infinita di Gabi++ con l'operatore nothrow new[]. (Problema 52833)
  • È stato corretto l'offset Gabi++ errato nel puntatore del gestore delle eccezioni. (Cambia 53446)
  • Rimossa ridondanza Gabi++ sull'oggetto eccezione (Cambia 53447)
Altre correzioni di bug:
  • Intestazioni NDK corrette:
    • Rimosse le definizioni ridondanti di size_t, ssize_t e ptrdiff_t.
    • Corretto l'intestazione MIPS e fenv.h ARM.
    • È stato corretto il problema di stddef.h non ridefinire offsetof perché esiste già nella toolchain.
    • È stato corretto il problema di elf.h che conteneva Elf32_auxv_t e Elf64_auxv_t. (Problema 38441)
    • Sono state corrette le definizioni C++ di #ifdef nel File di intestazione OpenSLES_AndroidConfiguration.h. (Problema 53163)
  • È stato corretto l'interruzione di STLport in seguito a un errore di memoria insufficiente anziché uscire automaticamente.
  • Sistema fisso e intestazioni Gabi++ per poter eseguire la compilazione con livello API 8 o inferiore.
  • È stato corretto il problema di cpufeatures non analizzare /proc/self/auxv. (Problema 43055)
  • È stato corretto il problema di ld.gold che non dipendeva dall'host libstdc++ e dalle piattaforme Windows. per non dipendere dalla libreria libgcc_sjlj_1.dll.
  • È stato corretto Clang 3.1 che emetteva un elenco di registri incoerenti in .vsave e non funzionava Assemblatore. (Cambia 49930)
  • È stato risolto il problema di Clang 3.1 che consentiva di compilare libgabi++ e passare l'test-stlport per le destinazioni della build MIPS. (Modifica 51961)
  • È stato corretto l'uso predefinito di Clang 3.1 per abilitare l'eccezione solo per C++, non per C.
  • Sono stati risolti diversi problemi in Clang 3.1 per superare la maggior parte dei test delle eccezioni GNU.
  • Sono stati corretti gli script clang e clang++ nel compilatore NDK autonomo per rilevare -cc1 e non specificare -target quando viene trovato.
  • È stato risolto il problema di ndk-build per osservare l'impostazione di NDK_APP_OUT in Application.mk.
  • È stato corretto il problema di X86 libc.so e lib.a a cui mancava sigsetjmp e le funzioni siglongjmp già dichiarate in setjmp.h. (Numero 19851)
  • libstdc++ in GCC 4.4.3/4.6/4.7 con patch applicata per lavorare con Clang in C++ 11. (Problema di clan)
  • Percorso Cygwin corretto nell'argomento passato a HOST_AWK.
  • È stato corretto l'avviso di script ndk-build nelle finestre durante l'esecuzione dal file JNI del progetto . (Problema 40192)
  • È stato risolto il problema per cui lo script ndk-build non si creava se il file makefile ha spazio vuoto finale nella definizione di LOCAL_PATH. (Problema 42841)
Altre modifiche:
  • Supporto del thread abilitato nella toolchain GCC/MIPS.
  • Aggiornamento degli aiutanti per la gestione delle eccezioni in GCC __cxa_begin_cleanup e __cxa_type_match per avere la visibilità predefinita rispetto alla precedente Visibilità nascosta in GNU libstdc++. Per ulteriori informazioni, vedi CHANGES.HTML.
  • Gli script di build sono stati aggiornati in modo che le librerie statiche Gabi++ e STLport ora vengano create con visibilità nascosta, tranne che per gli assistenti per la gestione delle eccezioni.
  • Build aggiornata in modo che STLport sia stato creato per ARM in modalità Thumb.
  • Aggiunto il supporto per std::set_new_handler in Gabi++. (Problema 52805)
  • Chiamata di sistema FUTEX attivata in GNU libstdc++.
  • È stato aggiornato ndk-build in modo che non sia più possibile copiare la libreria statica preimpostata in la directory obj/local/<abi>/ di un progetto. (Problema 40302)
  • __ARM_ARCH_5*__ rimosso dallo script toolchains/*/setup.mk ARM. (Numero 21132)
  • Librerie GNU libstdc++ aggiuntive integrate per ARM.
  • rappresentazione in virgola mobile MIPS madd/msub/nmadd/nmsub/recip/rsqrt abilitata di addestramento con FPU a 32 bit.
  • Abilitato l'ottimizzatore del loop di grafite in GCC 4.6 e 4.7 per consentire più ottimizzazioni: -fgraphite, -fgraphite-identity, -floop-block e -floop-flatten -floop-interchange, -floop-strip-mine, -floop-parallelize-all, e -ftree-loop-linear. (informazioni)
  • Abilitato polly per Clang 3.1 su host Linux e Max OS X a 32 bit che analizza e ottimizza l'accesso alla memoria. (informazioni)
  • Abilitazione di -flto in GCC 4.7, 4.6, Clang 3.2 e Clang 3.1 su Linux (Clang LTO) tramite LLVMgold.so). Le destinazioni del compilatore MIPS non sono supportate perché ld.gold non è disponibile.
  • --plugin e --plugin-opt per ld.gold abilitati in GCC 4.6/4.7.
  • --text-reorder per ld.gold attivato in GCC 4.7.
  • Configurazione di libstdc++ GNU con _GLIBCXX_USE_C99_MATH che non definisce la Script isinf nell'intestazione bionica. Per ulteriori informazioni, vedi CHANGES.html.
  • È stato aggiunto APP_LDFLAGS agli script di build. Per ulteriori informazioni, vedi ANDROID-MK.html.
  • Script di build aggiornati per consentire a NDK_LOG=0 di disattivare NDK_LOG.
  • Script di build aggiornati per consentire a NDK_HOST_32BIT=0 di disattivare lo sviluppatore host la toolchain a 32 bit per l'ambiente.
  • I flag predefiniti di GCC/X86 -march= e -mtune= sono stati modificati da Da pentiumpro e generic a i686 e atom.
  • Script di build della toolchain avanzati:
    • È stata corretta una condizione di gara in build-gcc.sh per il tipo di build mingw il che impedisce l'elaborazione parallela delle build.
    • build-gabi++.sh e build-stlport.sh sono stati aggiornati per poter essere pubblicati del pacchetto NDK. (Problema 52835)
    • È stato corretto run-tests.sh nella raccolta di utilità MSys.
    • Miglioramento della catena di strumenti host a 64 bit e supporto alla build Canadian Cross.
    • Script build-mingw64-toolchain.sh aggiornato alla versione più recente.
    • Aggiunta un'opzione per creare libgnustl_static.a e stlport_static.a senza visibilità nascosta.
Modifiche importanti:
  • È stato aggiunto il compilatore GNU Compiler Collection (GCC) 4.7 all'NDK. Compilatore di GCC 4.6 è ancora quella predefinita, quindi devi abilitare esplicitamente la nuova versione come segue:
    • Per ndk-build, esporta la variabile NDK_TOOLCHAIN_VERSION=4.7 oppure aggiungilo a Application.mk.
    • Per le build autonome, aggiungi l'opzione --toolchain= a make-standalone-toolchain.sh, ad esempio:
      --toolchain=arm-linux-androideabi-4.7

    Nota: questa funzionalità è sperimentale. Provalo e segnalare eventuali problemi.

  • È stato aggiunto il supporto per l'eccezione stlport tramite gabi++. Nota che il nuovo gabi++ dipende da dlopen e dal codice correlato, il che significa che:
      .
    • Non puoi più creare un eseguibile statico utilizzando l'istruzione -static o includi libstlport_static.a utilizzando APP_STL := stlport_static. Puoi comunque usare l'opzione -static. con una toolchain autonoma). Compila un eseguibile dinamico utilizzando include $(BUILD_EXECUTABLE) continua a funzionare perché il compilatore aggiunge automaticamente l'opzione -ldl.
    • Se il tuo progetto si collega utilizzando -nostdlib e {-Wl,--no-undefined}, deve includere manualmente l'opzione -ldl.
    di Gemini Advanced. Per ulteriori informazioni, vedi CPLUSPLUS-SUPPORT.html.

    Nota: questa funzionalità è sperimentale e funziona meglio con GCC 4.6/4.7 rispetto a GCC 4.4.3 o Clang 3.1. Provalo e segnalare eventuali problemi.

  • È stata aggiunta un'opzione -mstack-protector-guard= per x86 per scegliere tra una percorso predefinito globale, compatibile con la libreria C di Android precedente (bionic) e un nuovo percorso tls (%gs:20) per -fstack-protector, -fstack-protector-all e -fstack-protector-strong utilizzano GCC 4.6 e superiori.

    Nota. L'impostazione -mstack-protector-guard di per sé non attiva qualsiasi opzione di -fstack-protector*.

  • Funzione android_setCpu() aggiunta a sources/android/cpufeatures/cpu-features.c da utilizzare durante il rilevamento automatico tramite /proc non è possibile in Android 4.1 e versioni successive. (Problema con Chromium 164154
Correzioni di bug importanti:
  • È stata corretta la ricostruzione non necessaria dei file degli oggetti durante l'utilizzo dello script ndk-build. (Problema 39810)
  • È stato corretto un errore del linker con la release NDK 8c per Mac OS X 10.6.x che produceva il seguente errore:
    dyld: lazy symbol binding failed: Symbol not found: _memmem
    Referenced from: ...../arm-linux-androideabi/bin/ld
    Expected in: /usr/lib/libSystem.B.dylib
    Questo problema è stato causato dalla creazione su Mac OS X 10.7, che produceva file binari che venivano non compatibile con Mac OS 10.6.x e NDK.
  • Sono state rimosse le opzioni -x c++ dallo script di build autonomo Clang++. (Problema 39089)
  • Sono stati risolti i problemi utilizzando l'opzione NDK_TOOLCHAIN_VERSION=clang3.1 in Cygwin. (Problema 39585)
  • È stato corretto lo script make-standalone-toolchain.sh per consentire la generazione di un la toolchain indipendente usando gli ambienti Cygwin o MinGW. La toolchain risultante può essere utilizzato negli ambienti Cygwin, MingGW o CMD.exe. (Numero 39915, Numero 39585)
  • È stata aggiunta l'opzione SL_IID_ANDROIDBUFFERQUEUESOURCE mancante nelle build di Android-14 per ARM e X86. (Problema 40625)
  • È stato corretto il rilevamento della CPU x86 per la funzionalità ANDROID_CPU_X86_FEATURE_MOVBE. (Problema 39317)
  • Risolto un problema che impediva alla libreria di modelli standard (STL) di utilizzare C++ origini senza estensione del file .cpp.
  • È stato corretto l'errore del compilatore interno ARM di GCC 4.6 at replace1.c:1061. (Numero 20862)
  • È stato corretto l'errore interno del compilatore ARM di GCC 4.4.3 at emit-rtl.c:1954. (Numero 22336)
  • È stato corretto l'errore interno del compilatore ARM di GCC 4.4.3 at postreload.c:396. (Problema 22345)
  • È stato risolto il problema con GCC 4.6/4.7 che saltava le funzioni lambda. (Problema 35933)
Altre correzioni di bug:
  • Correzioni dei file di intestazione NDK:
    • È stato corretto il tipo di __WINT_TYPE__ e wint_t.
    • Errore ortografico corretto in android/bitmap.h. (Numero 15134)
    • Errore ortografico corretto in errno.h.
    • È stato aggiunto il controllo della presenza di __STDC_VERSION__ in sys/cdefs.h. (Numero 14627)
    • Intestazioni riorganizzate in byteswap.h e dirent.h.
    • È stato corretto limits.h per includere page.h che fornisce PAGE_SIZE impostazioni. (Problema 39983)
    • Tipo restituito fisso di glGetAttribLocation() e glGetUniformLocation() dalle ore int alle ore GLint.
    • È stata corretta la costante __BYTE_ORDER per le build x86. (Problema 39824)
  • È stato corretto lo script ndk-build per non sovrascrivere -Os con -O2 per ARM le build.
  • Sono stati corretti gli script di build per consentire la sovrascrittura di HOST_AWK, HOST_SED e Impostazioni di HOST_MAKE.
  • È stato risolto il problema per ld.gold su fsck_msdos build che collegavano oggetti creati da il compilatore Intel C/C++ (ICC).
  • È stato corretto il supporto di ARM EHABI in Clang per rispettare le specifiche.
  • Correzione GNU Debugger (GDB) per ridurre il tempo impiegato per percorrere la mappa dei link del target durante solib eventi. (Problema 38402)
  • È stato corretto il problema che mancava al file libgcc.a durante il collegamento delle librerie condivise.
Altre modifiche:
  • Funzioni atomiche integrate a 64 bit con backporting per ARM in GCC 4.6.
  • È stata aggiunta la documentazione relativa alla latenza dell'output audio, oltre ad altra documentazione e correzioni.
  • Correzione delle build di debug con Clang in modo che le funzioni non nulle ora generino un SIGILL per i percorsi senza un'istruzione di ritorno.
  • Aggiornamento di make-standalone-toolchain.sh completato per accettare il suffisso -clang3.1 che equivale ad aggiungere --llvm-version=3.1 alla toolchain di GCC 4.6.
  • URL della segnalazione di bug di GCC e Clang aggiornato in: https://source.android.com/source/report-bug S.html
  • Aggiunto il supporto di ARM ELF a llvm-objdump.
  • Avviso soppresso per trattare l'input c come c++ per le build clang.
  • Build aggiornata in modo che venga creata solo la versione a 32 bit di libiberty.a inserito in lib32/.
Modifiche importanti:
  • È stato aggiunto il compilatore Clang 3.1 all'NDK. GNU Compiler Collection (GCC) 4.6 è è comunque quella predefinita, quindi devi abilitare esplicitamente l'opzione del compilatore Clang nel modo seguente:
    • Per ndk-build, esporta NDK_TOOLCHAIN_VERSION=clang3.1 oppure aggiungi questa impostazione per le variabili di ambiente a Application.mk.
    • Per le build autonome, aggiungi --llvm-version=3.1 a make-standalone-toolchain.sh e sostituisci CC e CXX in crea file con <tool-path>/bin/clang e <tool-path>/bin/clang++, Vedi STANDALONE-TOOLCHAIN.html per i dettagli.

    Nota: questa funzionalità è sperimentale. Provalo e segnalare eventuali problemi.

  • È stato aggiunto il Linker oro ld.gold per la toolchain di Windows. Il linker oro è anche per ARM e X86 su tutti gli host. Puoi sostituirlo per utilizzare ld.bfd linker aggiungendo LOCAL_LDFLAGS += -fuse-ld=bfd a Android.mk o superato -fuse-ld=bfd alla riga di comando g++/clang++ che esegue il collegamento.
  • Sono stati aggiunti i controlli per gli spazi nel percorso NDK in ndk-build[.cmd] e ndk-gdb script, per evitare errori di build difficili da diagnosticare.
  • Sono state apportate le seguenti modifiche alla gestione del livello API:
    • È stata modificata la logica di build in modo che i progetti che specificano android-10 tramite android-13 a APP_PLATFORM, project.properties oppure Link di default.properties rispetto a android-9 anziché android-14.
    • Build aggiornata in modo che gli eseguibili che usano Android 16 (Jelly Bean) o versioni successive vengano viene compilato con l'opzione -fPIE per gli eseguibili indipendenti dalla posizione (PIE). Una nuova opzione di APP_PIE ti consente di controllare questo comportamento. Per informazioni dettagliate, visita la pagina APPLICATION-MK.html.

      Nota: tutti i livelli API superiori alla 14 continuano a collegarsi a platforms/android-14 e non sono stati aggiunti nuovi platforms/android-N.

    • Hai modificato ndk-build per fornire avvisi se il livello API modificato è superiore rispetto a android:minSdkVersion nel valore AndroidManifest.xml del progetto.
  • La libreria helper cpu-features è stata aggiornata per includere più funzionalità specifiche per ARM. Per informazioni dettagliate, visita la pagina sources/android/cpufeatures/cpu-features.h.
  • Modificato il doppio lungo sulla piattaforma X86 in 8 byte. Questo tipo di dati è ora ha le stesse dimensioni di un doppio, ma viene comunque considerato un tipo distinto.
  • Build aggiornata per APP_ABI=armeabi-v7a:
    • È stato modificato questo tipo di build per passare il parametro -march=armv7-a al linker. Questa modifica garantisce che le librerie specifiche della versione v7 e crt*.o vengano collegati correttamente.
    • La risorsa -mfpu=vfpv3-d16 è stata aggiunta a ndk-build al posto della Opzione -mfpu=vfp utilizzata nelle release precedenti.
Correzioni di bug importanti:
  • Risolto un problema per cui eseguire make-standalone-toolchain.sh con privilegi root ha reso la catena di strumenti standalone inaccessibile per alcuni utenti. (Problema 35279)
      .
    • Tutti i file e gli eseguibili nel pacchetto di release NDK sono impostati per avere lettura e autorizzazioni di esecuzione per tutti.
    • Ora la proprietà o il gruppo di libstdc++.a viene mantenuto quando viene copiato.
  • L'elemento \r ridondante è stato rimosso dalla versione predefinita di Windows echo.exe. Il comando ridondante \r ha causato un errore di gdb.setup in GNU Debugger (GDB) perché è entrato erroneamente a far parte del percorso. (Problema 36054)
  • Corrette le build parallele di Windows che a volte non riuscivano a causa di problemi di tempo nel Implementazione di host-mkdir. (Problema 25875)
  • È stato corretto il problema di GCC 4.4.3 GNU libstdc++ di non unire i nomi di typeinfo per predefinito. Per ulteriori dettagli, vedi toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo. (Numero 22165)
  • È stato risolto il problema del contesto null in GCC 4.6 cp/mangle.c::write_unscoped_name, dove GCC potrebbe arrestarsi in modo anomalo quando il contesto è null e deselezionato in TREE_CODE.
  • Sono stati corretti gli arresti anomali di GCC 4.4.3 su definizioni di tipo specifiche ARM NEON per i numeri in virgola mobile. (Problema 34613)
  • È stata corretta l'implementazione _IteWrapper::operator*() interna di STLport dove è stata restituita una posizione dello stack inattivo contenente il valore dereferenziato gli arresti anomali di runtime. (Problema 38630)
  • Correzioni specifiche per ARM:
    • È stato corretto il problema di GCC 4.4.3/4.6 g++ di ARM per non avvisare che il mangling di <va_list> è stato modificato in GCC 4.4. La soluzione alternativa che utilizza L'opzione -Wno-psabi per evitare questo avviso non è più necessaria.
    • Risolto un problema relativo a un progetto con suffissi .arm o .neon in LOCAL_SRC_FILES ha usato anche APP_STL. Con APP_STL, Lo script ndk-build cerca i file C++ in LOCAL_SRC_FILES prima aggiungendo percorsi STL header/lib alla compilazione. Modificato da ndk-build a filtra i suffissi .arm e .neon prima della ricerca, altrimenti gli elementi in LOCAL_SRC_FILES, ad esempio myfile.cpp.arm.neon, non verranno compilati come C++ le API nel tuo codice.
    • È stato corretto binutils-2.21/ld.bfd in modo che sia in grado di collegare l'oggetto da una versione precedente binutil senza tag_FP_arch, che generava un errore di asserzione in GNU Binutils. (Problema 35209)
    • È stato rimosso l'avviso Attributo 44 dell'oggetto EABI sconosciuto quando binutils-2.19/ld collega l'oggetto predefinito del nuovo binutils-2.21
    • Risolto un problema nella compilazione GNU stdc++ con -mthumb e -march=armv7-a, modificando make-standalone-toolchain.sh per compilare headers/libs nella sottodirectory armv7-a/thumb. (Problema 35616)
    • È stato corretto l'errore di riassegnazione R_ARM_THM_CALL non risolvibile. (Problema 35342)
    • È stato corretto l'errore interno del compilatore in reload1.c:3633, causato da ARM back-end che prevede il tipo di operando sbagliato quando il segno si estende da char. (Numero 50099 di GCC)
    • È stato corretto l'errore interno del compilatore con importo di spostamento negativo. (Problema di GCC)
  • È stato corretto -fstack-protector per X86, che è anche l'impostazione predefinita per ndk-build ABI target x86.
  • Correzioni specifiche per MIPS:
    • È stata corretta l'endianità di STLport impostando _STLP_LITTLE_ENDIAN su 1 quando durante la compilazione di MIPS libstlport_*.
    • È stato risolto il problema __builtin_unreachable di GCC durante la compilazione della LLVM. (Numero 54369 di GCC)
    • Correzione con backporting del processo di compilazione cc1 che utilizza il 100% di CPU. (Numero 50380 di GCC)
  • Correzioni specifiche di GNU Debugger:
    • Supporto Python disabilitato in gdb-7.x alla build, altrimenti viene configurato può scegliere qualsiasi versione Python disponibile sull'host e creare gdb con una dipendenza cablata da una versione specifica di Python. (Problema 36120)
    • Corretto ndk-gdb quando APP_ABI contiene all e non corrisponde a nessuno delle architetture note. (Problema 35392)
    • È stato corretto il supporto dei percorsi di Windows, mantenendo il carattere : se sembrava come parte di un percorso Windows che inizia con una lettera di unità. (Numero 12843 di GDB)
    • È stato corretto l'aggiunta del supporto dei punti di interruzione hardware per ARM in gdbserver. (Problema di GDB)
    • È stata aggiunta una correzione che consente di leggere l'elemento solibs corrente solo quando il linker è coerente. Questa modifica velocizza la gestione degli eventi di solib. (Problema 37677)
    • È stata aggiunta la correzione per effettuare tentativi ripetuti di trovare solib punti di interruzione. GDB ora riprova a enable_break() durante ogni chiamata al numero svr4_current_sos() fino al l'operazione riesce. (Cambia 43563)
    • È stato risolto un problema per cui gdb non si interrompeva sui punti di interruzione inseriti dlopen-ed librerie. (Problema 34856)
    • È stato corretto il problema SIGILL nel Linker dinamico durante la chiamata a dlopen() sul sistema dove /system/bin/linker è privo di simboli e rtld_db_dlactivity() implementato come Thumb, a causa della mancata conservazione LSB di sym_addr. (Problema 37147)
Altre correzioni di bug:
  • Intestazioni NDK corrette:
    • È stato corretto il codice arch-mips/include/asm/* rimosso erroneamente da con il kernel originale. (Modifica 43.335)
    • Dati dei membri dello struct sostituiti __unused con __linux_unused in linux/sysctl.h e linux/icmp.h per evitare conflitti con #define __unused a sys/cdefs.h.
    • È stato corretto fenv.h per le funzioni C incluse con __BEGIN_DECLS e __END_DECLS.
    • Sono state rimosse le funzioni non implementate in malloc.h.
    • È stata corretta la definizione di stdint.h di uint64_t per i compilatori ANSI. (Numero 1952)
    • Sono state corrette le macro del preprocessore in <arch>/include/machine/*.
    • È stato sostituito link.h per MIPS con una nuova versione che supporta tutte le piattaforme.
    • Opzione linux-unistd.h rimossa
    • Sposta le macro specifiche di GLibc LONG_LONG_MIN, LONG_LONG_MAX e ULONG_LONG_MAX dalle ore <pthread.h> alle ore <limits.h>.
  • È stato corretto un overflow del buffer in ndk-stack-parser.
  • È stato corretto il problema _STLP_USE_EXCEPTIONS, se non definito, in modo da omettere tutte le dichiarazioni e utilizzi di __Named_exception. Compilazione e utilizzo di __Named_exception si verifica solo quando STLport può utilizzare le eccezioni.
  • È stato risolto il problema di creazione di pacchetti NDK solo per Linux senza creare anche codice Windows. Utilizza la le seguenti impostazioni per eseguire questo tipo di build:
    ./build/tools/make-release.sh --force --systems=linux-x86
  • È stato corretto libc.so in modo che non venisse esportato atexit() e __do_handler. Questi simboli vengono esportati per le build ARM dalla versione di sistema della libreria C in supportare le librerie native legacy. I video generati da NDK non devono mai fare riferimento direttamente a questi dati. Ogni libreria condivisa o eseguibile deve invece incorporare la propria versione di questi simboli. fornita da crtbegin_*.o.

    Se il tuo progetto è collegato con le opzioni -nostdlib -Wl,--no-undefined, devi fornire il tuo __dso_handle perché crtbegin_so.o non è collegato in in questo caso. I contenuti di __dso_handle non sono importanti, come mostrato di seguito esempio di codice:

    extern "C" {
     
    extern void *__dso_handle __attribute__((__visibility__ ("hidden")));
     
    void *__dso_handle;
    }
  • Decodificatore di simboli fisso per ARM utilizzato in objdump per le voci plt in per generare un modulo più leggibile function@plt.
  • Sono stati rimossi i seguenti simboli, introdotti in GCC 4.6 libgcc.a, da la libreria libc.so della piattaforma X86: __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1 e __aeabi_unwind_cpp_pr2.
  • .ctors, .dtors e .eh_frame inutilizzati rimossi in MIPS crt*_so.S.
  • È stato aggiornato ndk-gdb in modo che richieda solo l'ultima riga di output per ndk-build DUMP_XXXX. Questa modifica garantisce che, se Application.mk o Android.mk stampa qualcosa con la sintassi $(info ...), ma non viene ottenuto inserito nel risultato di DUMP_XXXX. (Scopri di più)
Altre modifiche:
  • Intestazioni arch-x86 e arch-mips rimosse da platforms/android-[3,4,5,8]. Queste intestazioni erano incomplete, poiché sia X86 che Le ABI MIPS sono supportate solo dall'API 9 o versioni successive.
  • La versione c++ semplificata include il percorso dei pacchetti autonomi, come mostrato di seguito. (Problema 35279)
    <path>/arm-linux-androideabi/include/c++/4.6.x-google
      to:
    <path>/include/c++/4.6/
    
  • È stato corretto ndk-build per riconoscere altre estensioni dei file C++ per impostazione predefinita: .cc .cp .cxx .cpp .CPP .c++ .C. Puoi comunque usare LOCAL_CPP_EXTENSION per sovrascriveranno queste impostazioni.
  • Risolto un problema in samples/san-angeles che causava una schermata nera o il blocco frame al riavvio.
  • API deprecate negli esempi NDK sostituite. (Numero 20017)
      .
    • hello-gl2 da Android-5 ad Android-7
    • native-activity da Android-9 ad Android-10
    • native-audio da Android-9 ad Android-10
    • native-plasma da Android-9 ad Android-10
  • Aggiunto un nuovo branding per gli eseguibili Android con uno schema più semplice in una sezione .note.android.ident (definito in crtbegin_static/dynamic.o) in modo che strumenti di debug possono agire di conseguenza. Il membro e i valori della struttura sono definiti come che segue:
    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 */
    }

    Le precedenti opzioni di branding nella sezione .note.ABI-tag sono state ritirate.

  • È stato aggiunto un nuovo script run-tests-all.sh che chiama run-tests.sh e standalone/run.sh con varie condizioni. Lo script run-tests.sh viene eseguito senza l'opzione --abi ed è ottimizzato per compilare la maggior parte dei test per tutti ABI supportate ed eseguite su tutti i dispositivi collegati

Le caratteristiche principali di questa release sono una nuova toolchain GNU Compiler Collection (GCC) 4.6. GNU Debugger (GDB) 7.3.x che aggiunge il supporto del debug per il sistema Android 4.1 (API Level 16) dell'immagine.

Correzioni di bug importanti:
  • Sono stati risolti i problemi di LOCAL_SHORT_COMMANDS su ambienti Mac OS e Windows Cygwin per librerie statiche. La generazione dei file di elenco è più veloce e non viene rigenerata per evitare ripetizioni la creazione di nuovi progetti.
  • Sono stati risolti diversi problemi in ndk-gdb:
    • Strumento aggiornato per trasmettere le segnalazioni -e, -d e -s ad altri annunci adb costantemente.
    • Strumento aggiornato per accettare nomi seriali dei dispositivi contenenti spazi.
    • Strumento aggiornato per recuperare le informazioni su /system/bin/link, quindi gdb attivo l'host può impostare un punto di interruzione in __dl_rtld_db_dlactivity e l'attività del linker (ad esempio, esegui una nuova scansione dei simboli solib quando viene chiamato dlopen()).
  • Risolto il problema di rimozione di ndk-build clean su Windows non riuscita ./libs/*/lib*.so.
  • È stato corretto ndk-build.cmd per restituire un valore ERRORLEVEL diverso da zero quando make non riesce.
  • È stato corretto il problema libc.so per interrompere l'esportazione errata di __exidx_start e Simboli di __exidx_end.
  • È stato risolto il problema di SEGV durante lo svolgimento della pila dopo __libc_init per ARM e MIPS
Modifiche importanti:
  • È stata aggiunta la toolchain GCC 4.6 (binutils 2.21 con gold e GDB 7.3.x) alla coesistono con la toolchain originale di GCC 4.4.3 (binutils 2.19 e GDB 6.6).
    • GCC 4.6 è ora la toolchain predefinita. Puoi impostare NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk per selezionare l'originale.
    • Il supporto per il linker gold è disponibile solo per ARM e x86 su host Linux e Mac OS. Questo supporto è disattivato per impostazione predefinita. Aggiungi LOCAL_LDLIBS += -fuse-ld=gold in Android.mk per abilitarlo.
    • I programmi compilati con -fPIE richiedono il nuovo GDB per il debug. inclusi file binari nelle immagini di sistema Android 4.1 (livello API 16).
    • Lo strumento binutils 2.21 ld contiene correzioni di cui è stato eseguito il backporting da Versione 2.22:
        .
      • È stato corretto ld --gc-sections, che conserva erroneamente riferimenti a zombie a librerie esterne. (altro informazioni).
      • È stato corretto il comando ARM strip per conservare i valori p_align e p_flags nella sezione GNU_RELRO se sono valide. Senza questa correzione, i programmi Impossibile eseguire il debug creato con -fPIE. (m informazioni)
    • Ottimizzazione di sincos() disattivata per compatibilità con le versioni precedenti piattaforme di terze parti.
  • Opzioni di build aggiornate per abilitare le protezioni relative a Mai eXecute (NX) e relro/bind_now per impostazione predefinita:
      .
    • --noexecstack aggiunti all'assemblatore e -z noexecstack al linker che fornisce protezione NX contro gli attacchi di buffer overflow abilitando NX bit on stack e cumulativo.
    • -z relro e -z now aggiunti al linker per la protezione dei dati interni sezioni di dati dopo il collegamento per evitare vulnerabilità di sicurezza causate dal danneggiamento della memoria. (ulteriori informazioni: 1, 2)
    • Queste funzionalità possono essere disattivate utilizzando le seguenti opzioni:
      1. Disattiva la protezione NX impostando l'opzione --execstack per il Assembler e -z execstack per il linker.
      2. Disabilita la protezione dei dati interni impostando -z norelro e -z lazy opzioni per il linker.
      3. Disattiva queste protezioni nell'NDK jni/Android.mk impostando il parametro le seguenti opzioni:
        LOCAL_DISABLE_NO_EXECUTE=true  # disable "--noexecstack" and "-z noexecstack"
        DISABLE_RELRO=true             # disable "-z relro" and "-z now"
        

      Per maggiori dettagli, visita la pagina docs/ANDROID-MK.html.

  • Aggiunto il branding per gli eseguibili Android con la sezione .note.ABI-tag (in crtbegin_static/dynamic.o) in modo che gli strumenti di debug possano agire di conseguenza. La struttura membro e valori sono definiti come segue:
    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 */
    }
Altre correzioni di bug:
  • È stato corretto il trasferimento di mips-linux-gnu troncato per soddisfare il problema R_MIPS_TLS_LDM. (ulteriori informazioni)
  • Sono stati corretti gli errori segreti dello strumento ld durante l'utilizzo di --gc-sections. (ulteriori informazioni)
  • È stato risolto il problema di conteggio di GOT_PAGE in MIPS. (ulteriori informazioni)
  • È stato corretto il link del simbolo di avviso Segui per mips_elf_count_got_symbols.
  • È stato corretto il link del simbolo di avviso Segui per mips_elf_allocate_lazy_stub.
  • MIPS .dynamic spostato nel segmento di dati, in modo che sia scrivibile.
  • Sostituiti i valori hardcoded dei simboli con le dimensioni dei segmenti corrette per MIPS.
  • È stata rimossa l'opzione -mno-shared dai valori predefiniti nella toolchain MIPS. Il valore predefinito per la toolchain di Android è -fPIC (o -fpic se supportato). In caso contrario specificare esplicitamente -mshared, -fpic, -fPIC, -fpie o -fPIE, il compilatore MIPS aggiunge -mno-shared che disattiva PIC. È stato corretto il problema di aggiunta del compilatore -mno-shared in questo caso.
  • Sono stati corretti nomi di pacchetti errati negli esempi hello-jni e two-libs, in modo che il progetto tests sottostante può compilare.
Altre modifiche:
  • Sono state modificate le posizioni dei file binari:
    • Elemento gdbserver spostato da toolchain/<arch-os-ver>/prebuilt/gdbserver per prebuilt/android-<arch>/gdbserver/gdbserver.
    • Prefisso della toolchain x86 rinominato da i686-android-linux- a i686-linux-android-.
    • sources/cxx-stl/gnu-libstdc++/include e lib spostati in sources/cxx-stl/gnu-libstdc++/4.6 se compilato con GCC 4.6 oppure sources/cxx-stl/gnu-libstdc++/4.4.3 se compilato con GCC 4.4.3.
    • libbfd.a e libintl.a spostati da lib/ a lib32/.
  • Sono stati aggiunti e migliorati vari script nella toolchain di ricreare e testare l'NDK:
    • È stato aggiunto build-mingw64-toolchain.sh per generare una nuova toolchain ospitata su Linux che genera gli eseguibili Win32 e Win64.
    • Velocità di download-toolchain-sources.sh migliorata grazie al comando clone e all'utilizzo di checkout solo per le directory necessarie per creare l'NDK tramite i file binari della toolchain.
    • build-host-gcc.sh e build-host-gdb.sh script aggiunti.
    • È stato aggiunto tests/check-release.sh per controllare i contenuti di un determinato NDK directory di installazione o un pacchetto NDK esistente.
    • Sono stati riscritti tests/standalone/run.sh test autonomi .
  • Rimossa l'intestazione if_dl.h da tutte le piattaforme e architetture. Gli elementi AF_LINK e sockaddr_dl che descrivono sono specifici di BSD (ovvero, non esistono su Linux).

Questa release dell'NDK include il supporto per MIPS ABI e alcune correzioni aggiuntive.

Nuove funzionalità:
  • Aggiunto il supporto per l'ABI MIPS, che consente di generare un codice macchina in esecuzione con dispositivi Android compatibili basati su MIPS. Le principali funzionalità MIPS includono specifiche supporto per toolchain, intestazioni di sistema, librerie e debug. Per ulteriori dettagli su Supporto MIPS; consulta la sezione docs/CPU-MIPS.html nel pacchetto NDK.

    Per impostazione predefinita, il codice viene generato per i dispositivi basati su ARM. Puoi aggiungere mips a la definizione di APP_ABI nel file Application.mk per creare per le piattaforme MIPS. Ad esempio, la seguente riga indica ndk-build per creare il tuo codice per tre ABI distinte:

    APP_ABI := armeabi armeabi-v7a mips

    A meno che non ti affidi a origini di assembly specifiche per l'architettura, come l'assemblaggio ARM non è necessario modificare i file Android.mk per creare un file MIPS il codice macchina.

  • Puoi creare una catena di strumenti MIPS autonoma utilizzando --arch=mips quando chiami make-standalone-toolchain.sh. Consulta docs/STANDALONE-TOOLCHAIN.html per avere ulteriori informazioni.

Nota:per assicurarti che le tue applicazioni siano disponibili. agli utenti solo se i loro dispositivi sono in grado di eseguirle, Google Play filtra le applicazioni in base sulle informazioni del set di istruzioni incluse nella tua domanda? non è necessario alcun intervento da parte tua per abilitare il filtro. Inoltre, il sistema Android controlla anche la tua applicazione all'indirizzo e consente di continuare l'installazione solo se l'applicazione fornisce una libreria viene compilato per l'architettura della CPU del dispositivo.

Correzioni di bug importanti:
  • Corretto un errore di ortografia nell'implementazione GAbi++ per cui il risultato di dynamic_cast<D>(b) dell'oggetto della classe base b nella classe derivata D è regolata in modo errato nella direzione opposta rispetto alla classe base. (Problema 28721)
  • Risolto un problema per cui make-standalone-toolchain.sh non veniva copiato libsupc++.*.
Altre correzioni di bug:
  • È stato corretto il problema ndk-build.cmd per garantire che ndk-build.cmd funzioni correttamente anche Se l'utente ha ridefinito la variabile di ambiente SHELL, che può essere modificata durante l'installazione di vari strumenti di sviluppo in ambienti Windows.

Questa release dell'NDK include una correzione importante per i dispositivi basati su Tegra2 e alcune Ulteriori correzioni e miglioramenti:

Correzioni di bug importanti:
  • Risolto il problema dei file binari armeabi-v7a in GNU STL che non si arrestavano in modo anomalo su dispositivi non NEON dispositivi mobili. I file forniti con NDK r7b non erano configurati correttamente, causando arresti anomali su dispositivi basati su Tegra2 e altri quando si cerca di utilizzare alcune funzioni con rappresentazione in virgola mobile (ad es. cosf, sinf e expf).
Modifiche importanti:
  • Aggiunto il supporto per le directory di output personalizzate tramite NDK_OUT variabile di ambiente. Se definita, questa variabile viene utilizzata per archiviare tutte generati automaticamente, invece di $PROJECT_PATH/obj. La variabile è riconosciuti anche da ndk-gdb.
  • Aggiunto il supporto per la creazione di moduli con centinaia o perfino migliaia di origini definendo LOCAL_SHORT_COMMANDS come true in Android.mk.

    Questa modifica obbliga il sistema di compilazione NDK a inserire la maggior parte delle opzioni di linker o archiviazione in file di elenco, come soluzione per i limiti di lunghezza delle righe di comando. Per informazioni dettagliate, visita la pagina docs/ANDROID-MK.html.

Altre correzioni di bug:
  • È stata corretta l'implementazione di android_getCpuCount() in cpufeatures libreria di supporto. Su alcuni dispositivi, dove i core vengono attivati in modo dinamico dal sistema, la versione precedente l'implementazione segnalerebbe il numero totale di core attivi la prima volta che la funzione anziché il numero totale di core fisicamente disponibili.

Questa versione dell'NDK include correzioni per le build native di Windows, Cygwin e molte altre miglioramenti:

Correzioni di bug importanti:
  • Aggiornamento di sys/atomics.h completato per evitare problemi di correttezza su alcuni dispositivi multi-core basati su ARM. Ricrea le origini non modificate con questa dell'NDK e questo problema dovrebbe essere completamente eliminato. Per maggiori dettagli, leggi docs/ANDROID-ATOMICS.html.
  • È stata ripristinata la versione binutils 2.19 per risolvere i problemi di debug che è apparso in NDK r7 (che è passato a binutils 2.20.1).
  • È stato corretto il problema ndk-build su Linux a 32 bit. Un errore di pacchetto ha inserito una versione a 64 bit dell'eseguibile awk in prebuilt/linux-x86/bin in NDK r7.
  • È stata corretta la build nativa di Windows (ndk-build.cmd). Le altre modalità di compilazione non erano interessati. Le correzioni includono:
    • Rimosso un bug di loop infinito / overflow dello stack che si è verificato durante il tentativo per chiamare ndk-build.cmd da una directory che non era la parte superiore di il percorso del tuo progetto (ad es. in una qualsiasi sottodirectory).
    • È stato risolto un problema per cui i file delle dipendenze generati automaticamente venivano ignorati. Questo significava che l'aggiornamento di un'intestazione non attivava la ricompilazione delle origini che includevano li annotino.
    • Risolto il problema per cui i caratteri speciali nei file o nei percorsi, diversi da spazi e le virgolette non sono state gestite correttamente.
  • Correzione della toolchain autonoma per generare binari corretti durante l'utilizzo -lstdc++ (ovvero collegamento al runtime C++ di GNU libstdc++). Tu devi usare -lgnustl_shared se vuoi collegarti alla libreria condivisa e -lstdc++ per la versione statica.

    Consulta docs/STANDALONE-TOOLCHAIN.html per ulteriori dettagli su questa correzione.

  • È stato corretto gnustl_shared su Cygwin. Il linker si è lamentato del fatto di non trovare libsupc++.a anche se il file si trovava nella posizione corretta.
  • È stato corretto il collegamento a C++ di Cygwin quando non si utilizzava un runtime C++ specifico tramite APP_STL.
Altre modifiche:
  • Quando la tua applicazione utilizza il runtime GNU libstdc++, il compilatore non forzatamente più l'attivazione forzata di eccezioni e RTTI. Questa modifica comporta una riduzione delle dimensioni del codice.

    Se hai bisogno di queste funzionalità, devi eseguire una delle seguenti operazioni:

    • Abilitare eccezioni e/o RTTI esplicitamente nei moduli o Application.mk. (consigliato)
    • Definisci da APP_GNUSTL_FORCE_CPP_FEATURES a 'exceptions', 'rtti' o entrambi in Application.mk. Consulta docs/APPLICATION-MK.html per avere ulteriori informazioni.
  • ndk-gdb ora funziona correttamente quando la tua applicazione include servizi privati in esecuzione in processi indipendenti. Esegue il debug del processo principale dell'applicazione, anziché primo processo elencato da ps, che di solito è un processo di servizio.
  • È stato corretto un bug raro per cui NDK r7 non rispettava il valore LOCAL_ARM_MODE. e compilare sempre alcuni file sorgente (ma non tutti) con istruzioni a 32 bit.
  • STLport: aggiorna le origini in modo che corrispondano alla versione della piattaforma Android. Questo l'aggiornamento corregge alcuni bug minori:
    • Correzione dell'istanza di un tipo incompleto
    • Minore corretto "==" rispetto a "=" errore di battitura
    • Hai utilizzato memmove anziché memcpy in string::assign
    • Aggiunta una migliore gestione di IsNANorINF, IsINF, IsNegNAN ecc.

    Per informazioni dettagliate, consulta il log di commit.

  • STLport: sono stati rimossi dalla libreria 5 inizializzatori statici non necessari.
  • Le librerie GNU libstdc++ per armeabi-v7a sono state compilate erroneamente per armeabi. Questa modifica non ha avuto alcun impatto sulla correttezza, ma utilizzando il giusto ABI dovrebbe fornire un rendimento leggermente migliore.
  • La libreria helper cpu-features è stata aggiornata per segnalare tre facoltativi Funzionalità della CPU x86 (SSSE3, MOVBE e POPCNT). Consulta docs/CPU-FEATURES.html per ulteriori dettagli.
  • docs/NDK-BUILD.html è stato aggiornato per menzionare NDK_APPLICATION_MK di NDK_APP_APPLICATION_MK per selezionare un file Application.mk personalizzato.
  • Cygwin: ndk-build non crea più un campo "NUL" vuoto nel file YAML quando viene richiamata.
  • Cygwin: è stato aggiunto un rilevamento automatico delle dipendenze migliorato. Nella versione precedente, non hanno funzionato correttamente nei seguenti casi:
    • Quando il prefisso di unità Cygwin non era /cygdrive.
    • Quando si utilizzano supporti senza auto, ad esempio, quando Cygwin traduceva Da /home a \\server\subdir anziché a C:\Some\Dir.
  • Cygwin: ndk-build non tenta di utilizzare gli strumenti nativi di Windows in $NDK/prebuilt/windows/bin con determinate versioni di Cygwin e/o GNU Make.

Questa versione dell'NDK include nuove funzioni per supportare anche la piattaforma Android 4.0. molte altre aggiunte e miglioramenti:

Nuove funzionalità
  • Sono state aggiunte le API NDK ufficiali per Android 4.0 (livello API 14), che includono quanto segue: funzionalità native sulla piattaforma:
    • Aggiunta un'API multimediale nativa basata su Khronos Group OpenMAX AL 1.0.1 standard. I nuovi <OMXAL/OpenMAXAL.h> e Le intestazioni <OMXAL/OpenMAXAL_Android.h> consentono il targeting per applicazioni API di livello 14 per eseguire output multimediali direttamente dal codice nativo utilizzando un nuovo Interfaccia della coda del buffer specifica per Android. Per ulteriori dettagli, vedi docs/openmaxal/index.html e http://www.khronos.org/openmax/.
    • Aggiornamento dell'API audio nativa basata su Khronos Group OpenSL ES 1.0.1 standard. Con l'API Level 14, ora puoi decodificare audio compresso (ad es. MP3, AAC, Vorbis) a PCM. Per maggiori dettagli, vedi docs/opensles/index.html e http://www.khronos.org/opensles/
  • Aggiunto il supporto di CCache. Per velocizzare le ricompilazioni di grandi dimensioni, definisci NDK_CCACHE variabile di ambiente in ccache (o il percorso a il tuo file binario ccache). Una volta dichiarato, il sistema di build NDK utilizza CCache durante la compilazione dei file di origine. Ad esempio:
    export NDK_CCACHE=ccache
    

    Nota:CCache non è inclusa nella release NDK quindi è necessario installarlo prima di utilizzarlo. Per ulteriori informazioni su CCache, consulta http://ccache.samba.org

  • Aggiunto il supporto per impostare APP_ABI su all per indicare che vuoi creare i tuoi moduli NDK per tutte le ABI supportate dalla tua specifica NDK . Ciò significa che una delle due righe seguenti nella Application.mk sono equivalenti in questa release:
    APP_ABI := all
    APP_ABI := armeabi armeabi-v7a x86
    

    Funziona anche se definisci APP_ABI durante la chiamata ndk-build dalla riga di comando, un modo rapido per verificare build del progetto per tutte le ABI supportate senza modificare Application.mk file. Ad esempio:

    ndk-build APP_ABI=all
    
  • È stata aggiunta una variabile LOCAL_CPP_FEATURES in Android.mk che ti consente di dichiarare quali funzionalità C++ (RTTI o eccezioni) vengono utilizzate dal tuo modulo. Questo assicura che il collegamento finale funzioni correttamente se sono presenti moduli predefiniti che dipendono su queste funzionalità. Vedi docs/ANDROID-MK.html e docs/CPLUSPLUS-SUPPORT.html per ulteriori dettagli.
  • Percorsi abbreviati ai file di origine e di oggetto utilizzati nei comandi di build. Quando richiamando $NDK/ndk-build dal percorso del progetto, dai percorsi all'origine, e i file binari, passati ai comandi di compilazione, sono significativamente ora sono più brevi, perché vengono passati rispetto alla directory corrente. È utile quando si creano progetti con molti file di origine, per evitare i limiti dalla lunghezza della riga di comando supportata dal sistema operativo host. Il comportamento è rimasto invariato se richiami ndk-build da una sottodirectory della struttura ad albero del tuo progetto o se definisci NDK_PROJECT_PATH affinché punti a una directory specifica.
Funzionalità sperimentali
Ora puoi creare i tuoi file di origine NDK su Windows senza Cygwin chiamando il metodo ndk-build.cmd dalla riga di comando dal percorso del progetto. La accetta esattamente gli stessi argomenti dello script ndk-build originale. Il pacchetto Windows NDK viene fornito con i suoi file binari predefiniti per GNU Make, AWk e altri gli strumenti richiesti dalla build. Non dovresti installare altro per ottenere un sistema di compilazione funzionante.

Importante: ndk-gdb non funziona su Windows, quindi devi ancora utilizzare Cygwin per il debug.

Questa funzione è ancora in fase sperimentale, quindi non esitare a provarla e a segnalare eventuali problemi nella database pubblico dei bug o forum pubblico. Tutti i campioni e i test delle unità fornito con NDK correttamente compilato con questa funzionalità.

Correzioni di bug importanti
  • Per impostazione predefinita, le librerie condivise importate sono installate nell'installazione di destinazione località (libs/<abi>) se APP_MODULES non è definita in il tuo Application.mk. Ad esempio, se un modulo di primo livello foo importa un modulo bar, quindi sia libfoo.so che libbar.so copiati nel percorso di installazione. In precedenza, solo Il campo libfoo.so è stato copiato, a meno che tu non abbia elencato bar nei APP_MODULES. Se definisci APP_MODULES in modo esplicito, il parametro non subiranno modifiche.
  • ndk-gdb ora funziona correttamente per le attività con più categorie in con i PRINCIPALI filtri per intent.
  • Le importazioni dalla libreria statica ora sono transitive correttamente. Ad esempio, se un annuncio di primo livello Il modulo foo importa la libreria statica bar che importa immagini statiche libreria zoo, il libfoo.so sarà ora collegato a entrambi libbar.a e libzoo.a.
Altre modifiche
  • docs/NATIVE-ACTIVITY.HTML: errore di ortografia corretto. Il livello API minimo deve essere 9, non 8 per le attività native.
  • docs/STABLE-APIS.html: è stata aggiunta la documentazione mancante che elenca EGL come un'API stabile supportata, a partire dal livello API 9.
  • download-toolchain-sources.sh: aggiornamento eseguito per scaricare la toolchain da android.googlesource.com, che è la nuova posizione per i server AOSP.
  • È stato aggiunto un nuovo runtime di supporto C++ denominato gabi++. Ulteriori dettagli sono disponibili nell'docs/CPLUSPLUS-SUPPORT.html aggiornato.
  • È stato aggiunto un nuovo runtime di supporto C++ denominato gnustl_shared che corrisponde alla versione della libreria condivisa di GNU libstdc++ v3 (licenza GPLv3). Leggi ulteriori informazioni su docs/CPLUSPLUS-SUPPORT.html
  • Aggiunto il supporto per RTTI nei runtime STLport C++ (nessun supporto per ).
  • Aggiunto il supporto di più estensioni dei file in LOCAL_CPP_EXTENSION. Per esempio, per compilare foo.cpp e bar.cxx come origini C++, dichiara quanto segue:
    LOCAL_CPP_EXTENSION := .cpp .cxx
    
  • Sono stati rimossi molti simboli esportati indesiderati dalle librerie di sistema condivise in fase di collegamento forniti dall'NDK. Ciò garantisce che il codice generato con la toolchain autonoma non rischi di dipendere accidentalmente da un simbolo ABI non stabile (ad es. qualsiasi libgcc.a simbolo che cambia ogni volta che viene modificata la toolchain utilizzata per creare la piattaforma)
  • Sono state aggiornate le intestazioni EGL e OpenGLES Khronos per supportare altre estensioni. Nota che le ABI NDK per le librerie corrispondenti non vengano modificate. poiché ogni estensione deve essere verificata in fase di runtime dall'applicazione client.

    Le estensioni disponibili dipendono dai driver effettivi del dispositivo e della GPU, non la versione della piattaforma su cui viene eseguito il dispositivo. Per modificare l'intestazione basta aggiungere nuovi costanti e tipi per semplificare l'utilizzo delle estensioni una volta rilevato con eglGetProcAddress() o glGetProcAddress(). La nell'elenco seguente sono descritte le nuove estensioni supportate:

    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

Questa release dell'NDK non include nuove funzionalità rispetto alla r6. La release R6B risolve i seguenti problemi nella release r6:

Correzioni di bug importanti
  • Correzione della build quando si utilizzava APP_ABI="armeabi x86" di più architetture create con più architetture.
  • È stata corretta la posizione dei file binari STLport predefiniti nel pacchetto di release NDK. Un bug nello script del pacchetto li ha inseriti nella posizione sbagliata.
  • È stato corretto l'utilizzo di atexit() nelle librerie condivise con x86standalone la toolchain.
  • make-standalone-toolchain.sh --arch=x86 corretto. In passato non riusciva per copiare i binari GNU libstdc++ corretti nella posizione corretta.
  • Sono stati corretti gli avvisi del linker della catena di strumenti autonomo relativi alla mancanza della definizione e dimensioni per il simbolo __dso_handle (solo ARM).
  • È stato corretto l'ordine di inclusione di $(SYSROOT)/usr/include per le build x86. Consulta il bug per ulteriori informazioni.
  • Sono state corrette le definizioni di ptrdiff_t e size_t in specifici di x86 quando vengono utilizzati con la toolchain autonoma x86.

Questa release di NDK include il supporto per l'ABI x86 e altre modifiche minori. Per informazioni dettagliate che descrivono le modifiche in questa release, leggi CHANGES.HTML documento incluso nel pacchetto NDK.

Note generali:
  • Aggiunge il supporto per l'ABI x86, che consente di generare il codice macchina su dispositivi Android compatibili basati su x86. Funzionalità principali di x86 includono toolchain, intestazioni di sistema, librerie e strumenti specifici per x86 il supporto al debug. Per tutti i dettagli relativi all'assistenza x86, vedi docs/CPU-X86.html nel pacchetto NDK.

    Per impostazione predefinita, il codice viene generato per i dispositivi basati su ARM, ma puoi aggiungere x86 al tuo Definizione di APP_ABI nel file Application.mk da creare per le piattaforme x86. Ad esempio, la seguente riga indica ndk-build per creare il tuo codice per tre ABI distinte:

    APP_ABI := armeabi armeabi-v7a x86

    A meno che non ti affidi a fonti di assemblaggio basate su ARM, non devi toccare i tuoi file Android.mk per creare il codice macchina x86.

  • Puoi creare una toolchain x86 autonoma utilizzando --toolchain=x86-4.4.3 quando chiami make-standalone-toolchain.sh. Consulta docs/STANDALONE-TOOLCHAIN.html per avere ulteriori informazioni.
  • Il nuovo strumento ndk-stack ti consente di tradurre le analisi dello stack in logcat generati da codice nativo. Lo strumento traduce di istruzioni in un formato leggibile che contenga elementi come come funzione, file di origine e numero di riga corrispondenti a ogni stack frame. Per ulteriori informazioni e un esempio di utilizzo, vedi docs/NDK-STACK.html.
Altre modifiche:
La proprietà arm-eabi-4.4.0, che era stata ritirata dalla versione NDK r5, è stata rimosso dalla distribuzione NDK.

Questa release dell'NDK non include nuove funzionalità rispetto alla release r5b. La release R5C risolve i seguenti problemi nella release r5b:

Correzioni di bug importanti:
  • ndk-build: corretto un bug raro che si verificava durante il tentativo di eseguire in parallelo di progetti di cui è possibile eseguire il debug.
  • È stato corretto un errore ortografico che impediva il funzionamento di LOCAL_WHOLE_STATIC_LIBRARIES correttamente con la nuova toolchain e aggiunta la relativa documentazione nel docs/ANDROID-MK.html.
  • È stato corretto un bug per cui il codice collegato a gnustl_static si arrestava in modo anomalo durante l'esecuzione su delle versioni della piattaforma precedenti al livello API 8 (Android 2.2).
  • ndk-gdb: corretto un bug che causava un errore di segmentazione durante il debug Android 3.0 su dispositivi più recenti.
  • <android/input.h>: due funzioni che sono state introdotte a livello API 9 (Android 2.3) erano errate e sono state corrette. Anche se questo interrompe l'API di origine, l'interfaccia binaria al sistema non viene modificata. Alle funzioni errate mancava un history_index e le definizioni corrette sono mostrate di seguito:
    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
    );
  • È stato aggiornato il binario ARM della libreria C per il livello API 9 (Android 2.3) per esporre correttamente in all'ora del collegamento, le nuove funzioni aggiunte a quel livello API (ad esempio, pthread_rwlock_init).
Miglioramenti e correzioni di minore entità:
  • Ora i file degli oggetti sono sempre collegati nell'ordine in cui appaiono LOCAL_SRC_FILES. Questo non avviene in precedenza perché i file erano raggruppate per estensioni di origine.
  • Quando si verifica un errore in import-module, ora stampa l'elenco delle directory che le ricerche. È utile per verificare che la definizione di NDK_MODULE_PATH utilizzata dal sistema di compilazione sia corretta.
  • Quando import-module ha esito positivo, ora stampa la directory in cui è stato trovato nel log (visibile con NDK_LOG=1).
  • Aumentata la velocità di creazione delle applicazioni di cui è possibile eseguire il debug in presenza di un numero molto elevato di inclusione nel progetto.
  • ndk-gdb: miglioramento del rilevamento degli errori di adb shell e miglioramento messaggi di errore.
  • <pthread.h>: è stata corretta la definizione di PTHREAD_RWLOCK_INITIALIZER per il livello API 9 (Android 2.3) e versioni successive.
  • È stato risolto un problema per cui un modulo poteva importarsi automaticamente, con la conseguente generazione di un ciclo infinito GNU Make.
  • È stato corretto un bug che causava la mancata riuscita della build se LOCAL_ARM_NEON era impostato su true (errore di ortografia in build/core/build-binary.mk).
  • È stato corretto un bug che impediva la compilazione di .s file assembly (.S file sono andati a buon fine).

Questa release dell'NDK non include nuove funzionalità rispetto alla r5. La release R5B gestisce il i seguenti problemi nella release r5:

  • I binari r5 richiedevano la glibc 2.11, ma i binari r5b sono generati con uno speciale che ha come target glibc 2.7 o versioni successive. I file binari della toolchain di Linux ora vengono eseguiti Ubuntu 8.04 o superiore.
  • Corregge un bug del compilatore nella toolchain di arm-linux-androideabi-4.4.3. Il file binario precedente ha generato sequenze di istruzioni Pollice non valide quando che hanno a che fare con i caratteri firmati.
  • Aggiunge la documentazione mancante per il parametro "gnustl_statico" per APP_STL, che ti consente di collegarti a una versione di libreria statica di GNU libstdc++.
  • la
  • Sono stati risolti i seguenti problemi relativi a ndk-build:
    • Un bug che ha creato file di dipendenze incoerenti quando si è verificato un errore di compilazione su Windows. Questo ha impedito la corretta compilazione l'errore è stato corretto nel codice sorgente.
    • Un bug specifico di Cygwin per cui l'uso di percorsi molto brevi per l'installazione di Android NDK o il percorso del progetto ha portato di file di dipendenze non validi. In questo modo le build incrementali sono state impossibile.
    • Un errore di battitura che impediva il corretto funzionamento della libreria cpufeatures con la nuova toolchain NDK.
    • Le build in Cygwin sono più veloci perché evitano le chiamate a cygpath -m da GNU Make per ogni file di origine o oggetto, causando così problemi con alberi di origine molto grandi. Se non funziona correttamente, definisci NDK_USE_CYGPATH=1 in per utilizzare nuovamente cygpath -m.
    • L'installazione di Cygwin ora avvisa l'utente della presenza di percorsi di installazione non validi che contengono spazi. In precedenza, un percorso non valido restituisce un errore relativo a una versione errata di GNU Make, anche se quella corretta.
  • È stato corretto un errore di battitura che impediva alla variabile di ambiente NDK_MODULE_PATH di funziona correttamente quando conteneva più directory separate da due punti.
  • Lo script prebuilt-common.sh contiene correzioni per verificare la velocità a 64 bit nel compilatore generato il codice della macchina, invece di affidarsi al tag host, consente di ricostruire correttamente la toolchain a 32 bit su Snow Leopard. Gli script per la rigenerazione della toolchain ora supporta anche utilizzando una toolchain host a 32 bit.
  • Una dichiarazione mancante per INET_ADDRSTRLEN è stata aggiunta a <netinet/in.h>.
  • Dichiarazioni mancanti per IN6_IS_ADDR_MC_NODELOCAL e IN6_IS_ADDR_MC_GLOBAL sono stati aggiunti a <netinet/in6.h>.
  • "asm" è stato sostituito con '__asm__' in <asm/byteorder.h> per consentire compilation con -std=c99.

Questa release di NDK include molte nuove API, la maggior parte delle quali viene introdotta supportare lo sviluppo di giochi e applicazioni simili che fanno un uso estensivo di codice nativo. Con le API, gli sviluppatori hanno accesso nativo diretto a eventi, audio gestione di grafica e finestre, asset e archiviazione. Gli sviluppatori possono inoltre implementare Ciclo di vita delle app Android in codice nativo con l'aiuto del nuovo NativeActivity corso. Per informazioni dettagliate che descrivono le modifiche in questo di release, leggi il documento CHANGES.HTML incluso nella release NDK scaricata pacchetto.

Note generali:
  • Aggiunge il supporto per le attività native, che ti consente di implementare il Ciclo di vita delle applicazioni Android nel codice nativo.
  • Aggiunge il supporto nativo per quanto segue:
    • Sottosistema di input (come tastiera e touchscreen)
    • Accesso ai dati dei sensori (accelerometro, bussola, giroscopio e così via).
    • Le API del ciclo di eventi attendono, ad esempio, eventi come gli input e gli eventi dei sensori.
    • Sottosistema finestre e superfici
    • API audio basate sullo standard OpenSL ES che supportano la riproduzione e la registrazione nonché il controllo sugli effetti audio della piattaforma,
    • Accesso agli asset pacchettizzati in un file .apk.
  • Include una nuova toolchain (basata su GCC 4.4.3), che genera codice migliore e può anche ora da usare come compilatore indipendente, per chi desidera creare i propri contenuti con ./configure && make. Consulta docs/STANDALONE-TOOLCHAIN.html per informazioni dettagliate. I file binari di GCC 4.4.0 sono forniti, ma i file binari 4.2.1 sono stati rimossi.
  • Aggiunge il supporto per le librerie statiche e condivise predefinite (docs/PREBUILTS.html) e modulo esportazioni e importazioni per semplificare la condivisione e il riutilizzo di moduli di terze parti (docs/IMPORT-MODULE.html spiega perché).
  • Fornisce un'implementazione STL C++ predefinita (basata su STLport) come modulo helper. it può essere utilizzato come libreria statica o condivisa (i dettagli e gli esempi di utilizzo sono source/android/stlport/README). Predefinito anche i file binari per STLport (statico o condiviso) e GNU libstdc++ (solo statico) sono fornite se scegli di vengono compilate in base a queste librerie anziché all'implementazione predefinita STL C++. Le eccezioni C++ e il protocollo RTTI non sono supportati nell'implementazione STL predefinita. Per ulteriori informazioni le informazioni, vedi docs/CPLUSPLUS-SUPPORT.HTML.
  • Include miglioramenti alla libreria di supporto cpufeatures che migliorano generazione di report tipo di CPU (alcuni dispositivi riportavano in precedenza CPU ARMv7 quando il dispositivo un ARMv6). Me Consiglia agli sviluppatori che usano questa libreria per ricreare le loro applicazioni, caricare su Google Play per usufruire dei miglioramenti.
  • Aggiunge una libreria EGL che consente di creare e gestire texture OpenGL ES e i servizi di machine learning.
  • Aggiunge nuove applicazioni di esempio, native-plasma e native-activity, per dimostrare come scrivere un'attività nativa.
  • Include molte correzioni di bug e altri piccoli miglioramenti; vedi docs/CHANGES.html per un altro ancora un elenco dettagliato delle modifiche.
Note NDK r4b:

Include correzioni di diversi problemi negli script di build e debug NDK, se stai usando NDK r4, ti consigliamo di scaricare la build NDK r4b. Per dettagli informazioni che descrivono le modifiche in questa release, leggi il documento CHANGES.TXT incluso nel pacchetto NDK scaricato.

Note generali:
  • Fornisce un sistema di compilazione semplificato tramite la nuova build ndk-build .
  • Aggiunge il supporto per il debug nativo semplice del codice macchina generato in produzione sui dispositivi con il nuovo comando ndk-gdb.
  • Aggiunge una nuova ABI specifica per Android per le architetture CPU basate su ARM, armeabi-v7a. La nuova ABI estende l'ABI armeabi esistente a includi queste estensioni del set di istruzioni CPU:
    • Istruzioni per pollice 2
    • Istruzioni FPU hardware VFP (VFPv3-D16)
    • Supporto facoltativo per gli elementi intrinseci GCC ARM Advanced SIMD (NEON) e VFPv3-D32. Supportato da dispositivi quali Verizon Droid by Motorola, Google Nexus One e altri.
  • Aggiunge una nuova libreria statica cpufeatures (con origini) che consente alle tue rilevare le funzionalità della CPU del dispositivo host in fase di runtime. In particolare, le applicazioni possono verificare il supporto ARMv7-A, VFPv3-D32 e NEON, quindi fornire dati i percorsi del codice in base alle esigenze.
  • Aggiunge un'applicazione di esempio, hello-neon, che illustra come utilizzare il metodo libreria cpufeatures per controllare le funzionalità della CPU e fornire un modello di analisi utilizzando istruzioni NEON, se supportate dalla CPU.
  • Consente di generare il codice macchina per uno o entrambi i set di istruzioni supportati dell'NDK. Ad esempio, puoi creare per architetture ARMv5 e ARMv7-A nello stesso momento e avere tutti i file archiviati nella .apk.
  • Per assicurarti che le tue applicazioni siano disponibili per gli utenti solo se i loro dispositivi sono in grado di eseguirle, Google Play ora filtra le applicazioni in base al informazioni sul set di istruzioni incluse nella tua applicazione: non è necessaria alcuna azione da parte tua per attivare il filtro. Inoltre, il sistema Android stesso controlla l'applicazione al momento dell'installazione e consente di continuare l'installazione solo se fornisce una libreria compilata per l'architettura della CPU del dispositivo.
  • Aggiunge il supporto per Android 2.2, inclusa una nuova API stabile per l'accesso al pixel buffer di Bitmap oggetti dal codice nativo.
Note generali:
  • Aggiunge il supporto della libreria nativa OpenGL ES 2.0.
  • Aggiunge un'applicazione di esempio,hello-gl2, che illustra l'utilizzo di OpenGL ES 2.0 - Shader di frammenti e vertex.
  • I file binari della toolchain sono stati aggiornati per questa release con GCC 4.4.0, dovrebbe generare un codice macchina leggermente più compatto ed efficiente rispetto alla precedente (4.2.1). L'NDK fornisce anche i file binari 4.2.1, che puoi utilizzare facoltativamente per creare il codice della tua macchina.

Rilasciato inizialmente come "Android 1.6 NDK, Release 1".

Note generali:
  • Aggiunge il supporto della libreria nativa OpenGL ES 1.1.
  • Aggiunge un'applicazione di esempio, san-angeles, che esegue il rendering delle grafiche 3D attraverso le API native OpenGL ES, mentre si gestisce il ciclo di vita dell'attività con un oggetto GLSurfaceView.

Rilasciato inizialmente come "Android 1.5 NDK, Release 1".

Note generali:
  • Include il supporto del compilatore (GCC) per le istruzioni di ARMv5TE, incluso Thumb-1 istruzioni.
  • Include intestazioni di sistema per le API native stabili, documentazione ed esempi diverse applicazioni.