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.
Android NDK r26 LTS (settembre 2023)
Log delle modifiche- .
- Download
-
- I download di questa release sono disponibili qui.
- Annunci
-
- KitKat (API 19 e 20) non è più supportato.
Android NDK r25 LTS (luglio 2022)
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.
Android NDK r24 (marzo 2022)
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.
-
GNU Assembler (GAS) è stato rimosso. Se creassi con
Android NDK r23 LTS (agosto 2021)
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).
-
I binutil GNU, escluso GNU Assembler (GAS), sono stati rimossi. GAS
verrà rimossa nella prossima release. Se crei con
Android NDK r22b (marzo 2021)
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 utilizzias
direttamente, usaclang
. - 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.
-
Problema
1258:
-
I binutils GNU sono deprecati e verranno rimossi nei prossimi NDK
. Tieni presente che l'assemblatore GNU (
Android NDK r21e LTS (gennaio 2021)
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)
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.
-
Android NDK r20b (giugno 2019)
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.
-
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
Android NDK r19c (gennaio 2019)
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/
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/bin/armv7a-linux-androideabi26-clang++ src.cpp 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.
-
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
Android NDK r18b (settembre 2018)
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.
Android NDK r17c (giugno 2018)
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.
Android NDK r16b (dicembre 2017)
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 alibc++
. 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.
Android NDK r15c (luglio 2017)
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.
- 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
). SeAPP_PLATFORM
è impostato minore diandroid-14
, viene utilizzato inveceandroid-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.
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.
- 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.
Android NDK r14b (marzo 2017)
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.
- 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:
Per ulteriori informazioni sulle novità e sulle modifiche di questa release, consulta changelog.
Android NDK r13b (ottobre 2016)
- 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
-
-
Ulteriori correzioni per
__cxa_bad_cast
mancante.
-
Ulteriori correzioni per
- 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.
- Ora l'impostazione predefinita di
- 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.
Android NDK r12b (giugno 2016)
- 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 chemake_standalone_toolchain.py
sia adatto alle tue esigenze. - Segnala eventuali problemi a GitHub.
- 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).
- Per informazioni complete su queste modifiche, vedi questo elenco delle modifiche.
- 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 conINFO_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
eclang++.exe
nel formato a 32 bit un pacchetto Windows a 64 bit. L'eseguibile a 32 bit è denominatoclang_32.exe
.
- Gli eseguibili
- 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.
__thread
dovrebbe funzionare in tempo reale questa volta.
Android NDK r12 (giugno 2016)
- 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 almake_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, consultaCameraCharacteristics
. - Clang
- Clang è stato aggiornato alla versione 3.8svn (r256229, build 2812033). Le
clang.exe
e Gli eseguibiliclang++.exe
nel pacchetto Windows a 32 bit sono in realtà a 64 bit. La L'eseguibile a 32 bit è denominatoclang_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 tagACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAP
è stato inserito per errore e verrà rimosso nella prossima release. Utilizza le funzionalità di il valoreACAMERA_STATISTICS_LENS_SHADING_MAP
.
Android NDK r11c (marzo 2016)
- 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)
Android NDK r11b (marzo 2016)
- 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
inmake-standalone-toolchain.sh
.
- Il problema
- Annunci importanti
- 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.
Android NDK r11 (marzo 2016)
- 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.
- Ti consigliamo vivamente di passare a 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.
- Il compilatore ora supporta
- Ora Clang supporta il protocollo TLS emulato.
- Annunci importanti
- 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.
- È stata aggiunta un'API di tracciamento nativa a
- 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.
- Rimosso il supporto per
- Altre modifiche
- Il valore predefinito delle toolchain autonome ARM è stato cambiato in arm7.
- Puoi ripristinare il vecchio comportamento specificando il parametro
Opzione
-target
comearmv5te-linux-androideabi
.
- Puoi ripristinare il vecchio comportamento specificando il parametro
Opzione
- 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.
- Il valore predefinito delle toolchain autonome ARM è stato cambiato in arm7.
- 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
esys/procfs.h
,sys/ucontext.h
,sys/user.h
euchar.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.
- Annunci importanti
- Binutil
-
- Aggiunte
- Aggiunta una nuova opzione:
--pic-veneer
.
- Aggiunta una nuova opzione:
- 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).
- Aggiunte
- 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.
- Rimozioni
- YASM
-
- Modifiche
- YASM aggiornato alla versione 1.3.0.
- Modifiche
- 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 condynamic_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.
Android NDK r10e (maggio 2015)
- 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
.
- Per compilare con il multi-threading, utilizza l'opzione
- Aggiornato GDB/gdbserver a 7.7 per tutte le architetture.
- Rimosso il pacchetto NDK per Darwin a 32 bit.
- Integrato la soluzione alternativa per Cortex-A53 Erratum 843419 nel
Linker
- 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_*
inmedia/NdkMediaDrm.h
. - È stato corretto
sys/ucontext.h
permips64
. - È 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
eandroid-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
emips64
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 permips64
. 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
e1
. 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 ABIx86_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 comandondk-build.cmd
dagradle
. (Problema 66937) - Sono state aggiunte le librerie
libatomic.a
elibgomp.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 peraarch64
. Il linker predefinito rimaneld.bfd
. Per attivare esplicitamenteld.gold
, aggiungi-fuse-ld=gold
al VariabileLOCAL_LDFLAGS
oAPP_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 andk-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
.
Android NDK r10d (dicembre 2014)
- 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'esecuzionemake-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 utilizzaPIE
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.
- È 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
- 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)
- 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,
- 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 prototipostdlib.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
egl2ext.h
,dlext.h
,fts.h
esgidefs.h
per il livello API 21. - Hai modificato
sys/user.h
per rinominaremxcsr_mask
inmxcr_mask
, e per modificare il tipo di dati peru_ar0
da - Tipo di valore restituito
sysconf()
cambiato daint
along
. - È stata corretta la gestione di ndk-build di
thumb
perLOCAL_ARM_MODE
: in r10d, ndk-build aggiungeLOCAL_LDFLAGS+=-mthumb
per impostazione predefinita, a meno che uno dei le seguenti condizioni: - Hai impostato un valore di
LOCAL_ARM_MODE
uguale aarm
. - Stai eseguendo una build di debug (con impostazioni come
APP_OPTIM=debug
eAndroidManifest.xml
contenenteandroid: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)
unsigned long
per struct user_regs_struct*.
Android NDK r10c (ottobre 2014)
- 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
- È 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. - È 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, vediprebuilt/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
insamples/
. - Consulta la guida di Intel sulla portabilità da ARM NEON a Intel SSE.
- Vai alla Guida per il programmatore NDK (
- Supporto documentato per
_FORTIFY_SOURCE
inheaders/libs/android-21
, che appare in r10 (quandoandroid-21
si chiamava ancoraAndroid-L
), ma senza documentazione.
Per informazioni più dettagliate, consulta Correzioni di bug importanti di seguito.
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. - Correzioni di bug importanti:
-
- È stato corretto un errore del compilatore interno con GCC4.9/aarch64 che causava quanto segue (Problema 77564):
internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
- È stato corretto il problema di generazione del codice da GCC4.9/arm. (Problema 77567)
- È stato corretto un errore del compilatore interno con GCC4.9/mips che riguardava l'assemblaggio in linea. (Problema 77568).
- È stato corretto il codice errato generato da GCC4.9/arm per
x = (cond) ? y : x
. (Numero 77569)- È stato corretto il problema di GCC4.9/aarch64 e Clang3.5/aarch64 per aggirare Cortex-A53 erratum (835769) per impostazione predefinita. Disattiva la soluzione alternativa specificando
-mno-fix-cortex-a53-835769
. - 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
eASensor_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
esys/user.h
aggiunti a tutti i livelli API. La L'intestazionesignal.h
ora include<sys/ucontext.h>
. Puoi rimuovi qualsiasi definizione esistente distruct 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
eclock_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
edlmalloc
. - 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
aint
in le seguenti funzioni:strtoll_l
,strtoull_l
,wcstoll_l
ewcstoull_l
. - Sono state ripristinate le seguenti funzioni nell'architettura a 64 bit:
arc4random
,arc4random_buf
earc4random_uniform
. cxa_*
e gli operatorinew
edelete
spostati di nuovo alibstdc++.so
. Questa modifica ripristina il comportamento r9d; versioni precedenti di r10 contenevano file segnaposto.
- Sono stati aggiunti altri codici chiave TV:
- 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=
inmake-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/
.
- Apportate le seguenti correzioni a
- 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
einclude-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)
- Specificare -Os (
Android NDK r10b (settembre 2014)
- 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:
- Altre correzioni di bug:
-
stdio.h
rimosso dalle directoryinclude-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/
esources/third_party/googletest/README.NDK
. (Problema 74069.) - Apportate le seguenti correzioni alle intestazioni Android-L:
- Sono state aggiunte le seguenti funzioni a
ctype.h
ewchar.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()
. cmsg_nxthdr
rinominato in__cmsg_nxthdr
.__libc_malloc_dispatch
rimosso.- Il prototipo
ptrace()
è stato modificato inlong ptrace(int, ...);
. sha1.h
rimosso.- Elemento
android_dlextinfo
esteso inandroid/dlext.h
. __NDK_FPABI__
annotato per le funzioni che ricevono o restituiscono valori di tipo doppio o in virgola mobile instdlib.h
,time.h
,wchar.h
ecomplex.h
.
- Altre modifiche:
-
- Sono stati aggiornati
mipsel-linux-android-4.9
emips64el-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.)
- Sono stati aggiornati
Android NDK r10 (luglio 2014)
- 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
eall64
impostazioni diAPP_ABI
.APP_ABI=all32
equivale aAPP_ABI=armeabi,armeabi-v7a,x86,mips
.APP_ABI=all64
equivale aAPP_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
inApplication.mk
o esportarla come file la variabile di ambiente dalla riga di comando. - Per una toolchain autonoma, utilizza l'opzione
--toolchain=
nella Scriptmake-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
o4.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: - È stato risolto il seguente arresto anomalo di Clang 3.3/3.4:
llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef
(numero 57381).): Assertion Weights.size() >= 2 && "Need at least two branch weights!" Assertion failed: (!Fn && "cast failed but able to resolve overload expression!!"), function CheckCXXCStyleCast, file Volumes/data/ndk-toolchain/src/llvm-3.3/llvm/tools/clang/lib/Sema/SemaCast.cpp, line 2018
. (Numero 66950). - È stato corretto libc++ in modo che ora compili
- Altre correzioni di bug:
-
- Intestazioni fisse:
- È stato corretto il valore
ssize_t
a 32 bit diint
anzichélong int
. - Sono stati corretti
WCHAR_MIN
eWCHAR_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 aggiuntipread64
,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: - È 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 usastrrchr()
invece distrchr()
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
né-static
. Questo comportamento, che è stato risposta errata, il linker si è lamentato del fatto che-shared
e-pie
non hanno potuto coesistono.
include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int);
(elenco delle modifiche 91185). - 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
.
- È stato aggiunto
Android NDK r9d (marzo 2014)
- 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 inlibs/armeabi-v7a
. Per make to comportarsi come previsto, non puoi specificare siaarmeabi-v7a
armeabi-v7a-hard
come target (ad es. sulla riga APP_ABI=). poiché una di queste viene ignorata. Tieni presente cheAPP_ABI=all
è comunque equivalente aarmeabi armeabi-v7a x86 mips
. - Lo script
make-standalone-toolchain.sh
viene copiato librerie aggiuntive in/hard
directory. Aggiungi iCFLAGS
e leLFLAGS
precedenti al tuo makefile per consentire il collegamento a GCC o Clang biblioteche in/hard
. - È stato aggiunto l'assemblatore di Yasm e
LOCAL_ASMFLAGS
eEXPORT_ASMFLAGS
flag per x86 target. Lo scriptndk-build
utilizzaprebuilts/*/bin/yasm*
per creareLOCAL_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
oAPP_STL := c++_shared
inApplication.mk
. Puoi ricreare la build dal codice sorgente tramiteLIBCXX_FORCE_REBUILD := true
- Esegui
make-standalone-toolchain.sh --stl=libc++
per creare una toolchain autonoma con libc++ intestazioni/lib.
CPLUSPLUS-SUPPORT.html
. (Numero 36496) - Aggiungi
- Aggiunto il supporto per il compilatore Clang 3.4. La
L'opzione
- 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
- Mac OS X:
- 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 inandroid/asset_manager.h
per il livello API Android 13 e versioni successive. (Numero 64988) - È stato corretto un elemento
#include
mancante inandroid/rect_manager.h
per il livello API Android 14 e versioni successive. - Elemento
JNICALL
aggiunto alla raccoltaJNI_OnLoad
eJNI_OnUnload
ajni.h
. Tieni presente cheJNICALL
definita come__NDK_FPABI__
. Per ulteriori informazioni, consultasys/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
- È stato corretto un elemento
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 Dascalblnl
a x86libm.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 chiamarestd::terminate()
per fare in modo che può essere eseguito un gestorestd::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 attivaonSystemUiVisibilityChange
, pertanto non ripristina modalità immersiva.
- È stato corretto lo script
ndk-build
da aggiungere-rpath-link=$SYSROOT/usr/lib
e-rpath-link=$TARGET_OUT
per utilizzareld.bfd
per tramite gli eseguibili dei link. (Numero 64266)-Bsymbolic
rimosso da tutte le build STL.- È stato corretto il problema
ndk-gdb-py.cmd
impostandoSHELL
come una variabile di ambiente anziché passarla alpython.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 shellcmd.exe
e MinGW non comprendono i collegamenti simbolici creati da cygwin. - Correzioni delle intestazioni:
- Altre modifiche:
-
- Autorizzazioni di esecuzione applicate a tutti gli script
*cmd
in precedenza destinato all'uso solo nella shellcmd.exe
, nel caso in cui gli sviluppatori preferiscono utilizzarendk-build.cmd
in cygwin anziché nella scriptndk-build
consigliato. - È stata migliorata la velocità di
make-standalone-toolchain.sh
spostandosi al posto di copiarlo, se la directory di destinazione specificata inesistenti.
- Autorizzazioni di esecuzione applicate a tutti gli script
Android NDK r9c (dicembre 2013)
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 inpoll(struct pollfd *, nfds_t, int);
inpoll.h
. - Elemento
utimensat
aggiunto alla raccoltalibc.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 inlibc.so
, per l'API Android livello 19.- Sono stati aggiunti
clock_settime()
e Daclock_nanosleep()
atime.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,
eCLOCK_BOOTTIME_ALARM
atime.h.
- Sono stati rimossi i file
CLOCK_REALTIME_HR
obsoleti eCLOCK_MONOTONIC_HR.
- Prototipo di
- 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 finestrecmd.exe
quandoLOCAL_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 Sezionestack:
che non contienepc
,eip
oip
. 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.
- Correzioni delle intestazioni:
- 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 esplicitamentendk-build
. Con questa impostazione,ndk-build
non fornisce di cercareNDK_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 diAPP_*
contenuto inApplication.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 scriptndk-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 segnalareAPP_ABI
alle compilation.- Hai utilizzato lo strumento
ar
in modalità deterministica (opzione-D
) per creare librerie statiche. (Numero 60705)
Android NDK r9b (ottobre 2013)
- Modifiche importanti:
-
include/android/*h
emath.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, consultatests/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 esportaGCC_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)
- È stato risolto il problema per cui ARM GCC 4.6
- Altre correzioni di bug:
-
- Correzioni delle intestazioni
- È stato risolto il problema di annullamento della firma di ARM
WCHAR_MIN
eWCHAR_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 statoTCP_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
eimaxdiv
inttypes.h
. - È stato risolto il problema relativo ai valori restituiti di
pthread_exit()
e apthread_self()
. (Problema 60686) - È stata aggiunta la funzione
mkdtemp()
mancante, già esistente inbionic
l'intestazionestdlib.h
.
- È stato risolto il problema di annullamento della firma di ARM
- È 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 perssax-instructions
efenv
. - È 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, vediNDK-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)
- Correzioni delle intestazioni
- 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, veditests/device/test-openmp
- Ha ridotto in modo significativo le dimensioni di
ld.mcld
(1,5 MB rispetto ald.bfd
3,5 MB eld.gold
7,5 MB), con un miglioramento della velocità di circa il 20%. LOCAL_CONLYFLAGS
eAPP_CONLYFLAGS
aggiunti da specificare applicabili solo a C ma non a C++.LOCAL_CFLAGS
esistente eAPP_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.
- OpenMP abilitato per tutte le build di GCC. Per utilizzare questa funzione, aggiungi i seguenti flag al tuo
impostazioni build:
Android NDK r9 (luglio 2013)
- Modifiche importanti:
-
- Aggiunto il supporto per Android 4.3 (livello API 18). Per ulteriori informazioni, vedi
STABLE-APIS.html
e nuovi esempi di codice insamples/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, esportaNDK_TOOLCHAIN_VERSION=4.8
oppure aggiungilo inApplication.mk
. - Per le build autonome, usa l'opzione
--toolchain=
inmake-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 comesources/cxx-stl/stlport/stlport/stl/config/features.h
, riga 311. Per ulteriori informazioni le informazioni, vedi Modifica 55460Nota: 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à. - Per
- 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
inLOCAL_LDFLAGS
oAPP_LDFLAGS
per attivare MCLinker. - È stato aggiunto lo strumento
ndk-depends
che stampa le dipendenze della libreria ELF. Per ulteriori informazioni, vediNDK-DEPENDS.html
. (Problema 53486)
- Aggiunto il supporto per Android 4.3 (livello API 18). Per ulteriori informazioni, vedi
- 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
elibc.a
per supportare la funzionewait4()
. (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 filelinker.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 unbx pc
oblx pc
Istruzioni per eseguire il pollice. (Numero 56962, Numero 36149) - È stato corretto il problema
gdbserver
MIPS per cercareDT_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)
- È stato risolto il potenziale problema di gestione degli eventi in
- 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 Comandondk-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 percorsobackward/
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 diCPU_ABIS
, non diAPP_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'incoerenzatypedef
di_Unwind_Control_Block
. (Problema 54426) - Sono stati corretti
awk
script per gestireAndroidManifest.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 diprebuilts/
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
epr2
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)
- È stato corretto lo script
- Altre modifiche:
-
- Correzioni intestazioni
- Intestazioni modificate per rendere
__set_errno
una funzione in linea, dal momento che__set_errno
inerrno.h
è deprecato elibc.so
non è più lo esporta. - Hai modificato
elf.h
per includerestdint.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 ilconst AInputEvent* motion_event
. (Problema 55873) - Corretto
malloc_usable_size
per prendereconst void*
. (Problema 55725) - È stato corretto il file stdint.h per una maggiore compatibilità con C99. (Modifica 46821)
- Hai modificato
wchar.h
per non ridefinireWCHAR_MAX
eWCHAR_MIN
- È stata corretta la dichiarazione
<inttypes.h>
perPRI
eSCN
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 chewchat_t
è a 32 bit per tutti Livelli API. Per ripristinare il comportamento precedente, definisci_WCHAR_IS_8BIT
booleana. (Problema 57267)
- Intestazioni modificate per rendere
- È 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 supportarestlport
libreria oltre agnustl
, quando specifichi l'opzione--stl=stlport
. Per ulteriori informazioni, vediSTANDALONE-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 aclang
eclang++
, 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 usareconst_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 un flag
- È 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 istruzionildc1
esdc1
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 operazionildc1
esdc1
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 aAPP_MIN_PLATFORM_LEVEL
. Il valoreAPP_PLATFORM_LEVEL
potrebbe essere inferiore rispetto aAPP_PLATFORM
injni/Application.mk
perché l'NDK non ha intestazioni per tutti i livelli. In questo caso, il livello effettivo viene spostato verso il basso. LaAPP_MIN_PLATFORM_LEVEL
è specificato dalandroid:minSdkVersion
in il file manifest dell'applicazione. (Problema 39752) - Sono stati aggiunti i metodi
android_getCpuIdArm()
eandroid_setCpuArm()
acpu-features.c
. Questa aggiunta consente di recuperare più facilmente il CPUID ARM informazioni. (Problema 53689) - È stato modificato
ndk-build
per utilizzareas/ld
di GCC 4.7 per la compilazione di Clang.Nota: In GCC 4.7,
monotonic_clock
eis_monotonic
sono stati rinominati in rispettivamentesteady_clock
eis_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.
- Sono stati aggiunti avvisi se vengono utilizzati
- Script di build aggiornati in modo che se
APP_MODULES
non è definito e sia solo statico le librerie sono elencate inAndroid.mk
, lo script ne forza la creazione tutte. (Problema 53502) ndk-build
aggiornato per supportare i percorsi assoluti inLOCAL_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 dilibraries/gdbserver
dal valore predefinito$PROJECT/libs
. Per ulteriori informazioni, vediOVERVIEW.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 impostareLOCAL_DISABLE_FORMAT_STRING_CHECKS=true
per disattivarla. Per ulteriori informazioni, consultaANDROID-MK.html
- Aggiunto il supporto per la stampa STL in formato STL in
ndk-gdb-py
. Per ulteriori informazioni, vediNDK-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
.
- Correzioni intestazioni
Android NDK r8e (marzo 2013)
- Modifiche importanti:
-
- È stato aggiunto un set di toolchain host a 64 bit (suffisso nome pacchetto
*-x86_64.*
). Per ulteriori informazioni informazioni, vediCHANGES.HTML
eNDK-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, vediCHANGES.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
eLOCAL_SHARED_LIBRARIES
. Per ulteriori informazioni, vediCHANGES.HTML
. (Problema 39378)
- È stato aggiunto un set di toolchain host a 64 bit (suffisso nome pacchetto
- 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 esteady_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
, funzionedistance_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
inuncaught_exception()
. (Modifica 50236) - È stato corretto l'errore di bus
STLport
nella gestione delle eccezioni a causa di un accesso non allineato diDW_EH_PE_udata2
,DW_EH_PE_udata4
eDW_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)
- È stato corretto lo script di compilazione per creare tutte le toolchain in
- Altre correzioni di bug:
-
- Intestazioni NDK corrette:
- Rimosse le definizioni ridondanti di
size_t
,ssize_t
eptrdiff_t
. - Corretto l'intestazione MIPS e
fenv.h
ARM. - È stato corretto il problema di
stddef.h
non ridefinireoffsetof
perché esiste già nella toolchain. - È stato corretto il problema di
elf.h
che contenevaElf32_auxv_t
eElf64_auxv_t
. (Problema 38441) - Sono state corrette le definizioni C++ di
#ifdef
nel File di intestazioneOpenSLES_AndroidConfiguration.h
. (Problema 53163)
- Rimosse le definizioni ridondanti di
- È 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 librerialibgcc_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
eclang++
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 diNDK_APP_OUT
inApplication.mk
. - È stato corretto il problema di X86
libc.so
elib.a
a cui mancavasigsetjmp
e le funzionisiglongjmp
già dichiarate insetjmp.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 diLOCAL_PATH
. (Problema 42841)
- Intestazioni NDK corrette:
- 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, vediCHANGES.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 directoryobj/local/<abi>/
di un progetto. (Problema 40302) __ARM_ARCH_5*__
rimosso dallo scripttoolchains/*/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
perld.gold
abilitati in GCC 4.6/4.7.--text-reorder
perld.gold
attivato in GCC 4.7.- Configurazione di libstdc++ GNU con
_GLIBCXX_USE_C99_MATH
che non definisce la Scriptisinf
nell'intestazione bionica. Per ulteriori informazioni, vediCHANGES.html
. - È stato aggiunto
APP_LDFLAGS
agli script di build. Per ulteriori informazioni, vediANDROID-MK.html
. - Script di build aggiornati per consentire a
NDK_LOG=0
di disattivareNDK_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 Dapentiumpro
egeneric
ai686
eatom
. - Script di build della toolchain avanzati:
- È stata corretta una condizione di gara in
build-gcc.sh
per il tipo di buildmingw
il che impedisce l'elaborazione parallela delle build. build-gabi++.sh
ebuild-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
estlport_static.a
senza visibilità nascosta.
- È stata corretta una condizione di gara in
Android NDK r8d (dicembre 2012)
- 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 variabileNDK_TOOLCHAIN_VERSION=4.7
oppure aggiungilo aApplication.mk
. - Per le build autonome, aggiungi l'opzione
--toolchain=
amake-standalone-toolchain.sh
, ad esempio:--toolchain=arm-linux-androideabi-4.7
Nota: questa funzionalità è sperimentale. Provalo e segnalare eventuali problemi.
- Per
- È stato aggiunto il supporto per l'eccezione
stlport
tramite gabi++. Nota che il nuovo gabi++ dipende dadlopen
e dal codice correlato, il che significa che:- .
- Non puoi più creare un eseguibile statico utilizzando l'istruzione
-static
o includilibstlport_static.a
utilizzandoAPP_STL := stlport_static
. Puoi comunque usare l'opzione-static
. con una toolchain autonoma). Compila un eseguibile dinamico utilizzandoinclude $(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
.
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.
- Non puoi più creare un eseguibile statico utilizzando l'istruzione
- È 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 asources/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
- È 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:
- 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)
- È stata corretta la ricostruzione non necessaria dei file degli oggetti durante l'utilizzo dello script
- Altre correzioni di bug:
-
- Correzioni dei file di intestazione NDK:
- È stato corretto il tipo di
__WINT_TYPE__
ewint_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__
insys/cdefs.h
. (Numero 14627) - Intestazioni riorganizzate in
byteswap.h
edirent.h
. - È stato corretto
limits.h
per includerepage.h
che forniscePAGE_SIZE
impostazioni. (Problema 39983) - Tipo restituito fisso di
glGetAttribLocation()
eglGetUniformLocation()
dalle oreint
alle oreGLint
. - È stata corretta la costante
__BYTE_ORDER
per le build x86. (Problema 39824)
- È stato corretto il tipo di
- È 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 diHOST_MAKE
. - È stato risolto il problema per
ld.gold
sufsck_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.
- Correzioni dei file di intestazione NDK:
- 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 inlib32/
.
Android NDK r8c (novembre 2012)
- 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
, esportaNDK_TOOLCHAIN_VERSION=clang3.1
oppure aggiungi questa impostazione per le variabili di ambiente aApplication.mk
. - Per le build autonome, aggiungi
--llvm-version=3.1
amake-standalone-toolchain.sh
e sostituisciCC
eCXX
in crea file con<tool-path>/bin/clang
e<tool-path>/bin/clang++
, VediSTANDALONE-TOOLCHAIN.html
per i dettagli.
Nota: questa funzionalità è sperimentale. Provalo e segnalare eventuali problemi.
- Per
- È 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 utilizzareld.bfd
linker aggiungendoLOCAL_LDFLAGS += -fuse-ld=bfd
aAndroid.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]
endk-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
tramiteandroid-13
aAPP_PLATFORM
,project.properties
oppure Link didefault.properties
rispetto aandroid-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 diAPP_PIE
ti consente di controllare questo comportamento. Per informazioni dettagliate, visita la paginaAPPLICATION-MK.html
.Nota: tutti i livelli API superiori alla 14 continuano a collegarsi a
platforms/android-14
e non sono stati aggiunti nuoviplatforms/android-N
. - Hai modificato
ndk-build
per fornire avvisi se il livello API modificato è superiore rispetto aandroid:minSdkVersion
nel valoreAndroidManifest.xml
del progetto.
- È stata modificata la logica di build in modo che i progetti che specificano
- La libreria helper
cpu-features
è stata aggiornata per includere più funzionalità specifiche per ARM. Per informazioni dettagliate, visita la paginasources/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 ecrt*.o
vengano collegati correttamente. - La risorsa
-mfpu=vfpv3-d16
è stata aggiunta andk-build
al posto della Opzione-mfpu=vfp
utilizzata nelle release precedenti.
- È stato modificato questo tipo di build per passare il parametro
- È 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:
- 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 Windowsecho.exe
. Il comando ridondante\r
ha causato un errore digdb.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 ditypeinfo
per predefinito. Per ulteriori dettagli, veditoolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo
. (Numero 22165) - È stato risolto il problema del contesto
null
in GCC 4.6cp/mangle.c::write_unscoped_name
, dove GCC potrebbe arrestarsi in modo anomalo quando il contesto ènull
e deselezionato inTREE_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 diSTLport
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
inLOCAL_SRC_FILES
ha usato ancheAPP_STL
. ConAPP_STL
, Lo scriptndk-build
cerca i file C++ inLOCAL_SRC_FILES
prima aggiungendo percorsi STLheader/lib
alla compilazione. Modificato dandk-build
a filtra i suffissi.arm
e.neon
prima della ricerca, altrimenti gli elementi inLOCAL_SRC_FILES
, ad esempiomyfile.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 senzatag_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 nuovobinutils-2.21
- Risolto un problema nella compilazione GNU
stdc++
con-mthumb
e-march=armv7-a
, modificandomake-standalone-toolchain.sh
per compilareheaders/libs
nella sottodirectoryarmv7-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 dachar
. (Numero 50099 di GCC) - È stato corretto l'errore interno del compilatore con importo di spostamento negativo. (Problema di GCC)
- È stato corretto il problema di GCC 4.4.3/4.6
- È stato corretto
-fstack-protector
per X86, che è anche l'impostazione predefinita perndk-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 MIPSlibstlport_*
. - È 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)
- È stata corretta l'endianità di
- 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
quandoAPP_ABI
contieneall
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 disolib
. (Problema 37677) - È stata aggiunta la correzione per effettuare tentativi ripetuti di trovare
solib
punti di interruzione. GDB ora riprova aenable_break()
durante ogni chiamata al numerosvr4_current_sos()
fino al l'operazione riesce. (Cambia 43563) - È stato risolto un problema per cui
gdb
non si interrompeva sui punti di interruzione inseritidlopen-ed
librerie. (Problema 34856) - È stato corretto il problema
SIGILL
nel Linker dinamico durante la chiamata adlopen()
sul sistema dove/system/bin/linker
è privo di simboli ertld_db_dlactivity()
implementato comeThumb
, a causa della mancata conservazioneLSB
disym_addr
. (Problema 37147)
- Supporto Python disabilitato in gdb-7.x alla build, altrimenti viene configurato
può scegliere qualsiasi versione Python disponibile sull'host e creare
- Risolto un problema per cui eseguire
- 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
inlinux/sysctl.h
elinux/icmp.h
per evitare conflitti con#define __unused
asys/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
diuint64_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
eULONG_LONG_MAX
dalle ore<pthread.h>
alle ore<limits.h>
.
- È stato corretto il codice
- È 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 quandoSTLport
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 esportatoatexit()
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 dacrtbegin_*.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 vociplt
in per generare un modulo più leggibilefunction@plt
. - Sono stati rimossi i seguenti simboli, introdotti in GCC 4.6
libgcc.a
, da la librerialibc.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 MIPScrt*_so.S
.- È stato aggiornato
ndk-gdb
in modo che richieda solo l'ultima riga di output perndk-build
DUMP_XXXX
. Questa modifica garantisce che, seApplication.mk
oAndroid.mk
stampa qualcosa con la sintassi$(info ...)
, ma non viene ottenuto inserito nel risultato diDUMP_XXXX
. (Scopri di più)
- Intestazioni NDK corrette:
- Altre modifiche:
-
- Intestazioni
arch-x86
earch-mips
rimosse daplatforms/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 usareLOCAL_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-7native-activity
da Android-9 ad Android-10native-audio
da Android-9 ad Android-10native-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 incrtbegin_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 chiamarun-tests.sh
estandalone/run.sh
con varie condizioni. Lo scriptrun-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
- Intestazioni
Android NDK r8b (luglio 2012)
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
, quindigdb
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 simbolisolib
quando viene chiamatodlopen()
).
- Strumento aggiornato per trasmettere le segnalazioni
- Risolto il problema di rimozione di
ndk-build clean
su Windows non riuscita./libs/*/lib*.so
. - È stato corretto
ndk-build.cmd
per restituire un valoreERRORLEVEL
diverso da zero quandomake
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
- Sono stati risolti i problemi di
- Modifiche importanti:
-
- È stata aggiunta la toolchain GCC 4.6 (
binutils
2.21 congold
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
inApplication.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. AggiungiLOCAL_LDLIBS += -fuse-ld=gold
inAndroid.mk
per abilitarlo. - I programmi compilati con
-fPIE
richiedono il nuovoGDB
per il debug. inclusi file binari nelle immagini di sistema Android 4.1 (livello API 16). - Lo strumento
binutils
2.21ld
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 valorip_align
ep_flags
nella sezioneGNU_RELRO
se sono valide. Senza questa correzione, i programmi Impossibile eseguire il debug creato con-fPIE
. (m informazioni)
- È stato corretto
- Ottimizzazione di
sincos()
disattivata per compatibilità con le versioni precedenti piattaforme di terze parti.
- GCC 4.6 è ora la toolchain predefinita. Puoi impostare
- 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:
- Disattiva la protezione NX impostando l'opzione
--execstack
per il Assembler e-z execstack
per il linker. - Disabilita la protezione dei dati interni impostando
-z norelro
e-z lazy
opzioni per il linker. - 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
. - Disattiva la protezione NX impostando l'opzione
- Aggiunto il branding per gli eseguibili Android con la sezione
.note.ABI-tag
(incrtbegin_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 */ }
- È stata aggiunta la toolchain GCC 4.6 (
- Altre correzioni di bug:
-
- È stato corretto il trasferimento di
mips-linux-gnu
troncato per soddisfare il problemaR_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
etwo-libs
, in modo che il progettotests
sottostante può compilare.
- È stato corretto il trasferimento di
- Altre modifiche:
-
- Sono state modificate le posizioni dei file binari:
- Elemento
gdbserver
spostato datoolchain/<arch-os-ver>/prebuilt/gdbserver
perprebuilt/android-<arch>/gdbserver/gdbserver
. - Prefisso della toolchain x86 rinominato da
i686-android-linux-
ai686-linux-android-
. sources/cxx-stl/gnu-libstdc++/include
elib
spostati insources/cxx-stl/gnu-libstdc++/4.6
se compilato con GCC 4.6 oppuresources/cxx-stl/gnu-libstdc++/4.4.3
se compilato con GCC 4.4.3.libbfd.a
elibintl.a
spostati dalib/
alib32/
.
- Elemento
- 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 comandoclone
e all'utilizzo dicheckout
solo per le directory necessarie per creare l'NDK tramite i file binari della toolchain. build-host-gcc.sh
ebuild-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 .
- È stato aggiunto
- Rimossa l'intestazione
if_dl.h
da tutte le piattaforme e architetture. Gli elementiAF_LINK
esockaddr_dl
che descrivono sono specifici di BSD (ovvero, non esistono su Linux).
- Sono state modificate le posizioni dei file binari:
Android NDK r8 (maggio 2012)
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 diAPP_ABI
nel fileApplication.mk
per creare per le piattaforme MIPS. Ad esempio, la seguente riga indicandk-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 chiamimake-standalone-toolchain.sh
. Consultadocs/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.
- 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
- 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 baseb
nella classe derivataD
è regolata in modo errato nella direzione opposta rispetto alla classe base. (Problema 28721) - Risolto un problema per cui
make-standalone-toolchain.sh
non veniva copiatolibsupc++.*
.
- Corretto un errore di ortografia nell'implementazione GAbi++ per cui il risultato di
- Altre correzioni di bug:
-
- È stato corretto il problema
ndk-build.cmd
per garantire chendk-build.cmd
funzioni correttamente anche Se l'utente ha ridefinito la variabile di ambienteSHELL
, che può essere modificata durante l'installazione di vari strumenti di sviluppo in ambienti Windows.
- È stato corretto il problema
Android NDK r7c (aprile 2012)
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
eexpf
).
- 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.
- 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 dandk-gdb
. - Aggiunto il supporto per la creazione di moduli con centinaia o perfino migliaia di origini
definendo
LOCAL_SHORT_COMMANDS
cometrue
inAndroid.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
.
- Aggiunto il supporto per le directory di output personalizzate tramite
- Altre correzioni di bug:
-
- È stata corretta l'implementazione di
android_getCpuCount()
incpufeatures
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.
- È stata corretta l'implementazione di
Android NDK r7b (febbraio 2012)
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, leggidocs/ANDROID-ATOMICS.html
. - È stata ripristinata la versione
binutils
2.19 per risolvere i problemi di debug che è apparso in NDK r7 (che è passato abinutils
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'eseguibileawk
inprebuilt/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.
- Rimosso un bug di loop infinito / overflow dello stack che si è verificato durante il tentativo
per chiamare
- Correzione della toolchain autonoma per generare binari corretti durante l'utilizzo
-lstdc++
(ovvero collegamento al runtime C++ di GNUlibstdc++
). 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 trovarelibsupc++.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
.
- Aggiornamento di
- 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 inApplication.mk
. Consultadocs/APPLICATION-MK.html
per avere ulteriori informazioni.
- Abilitare eccezioni e/o RTTI esplicitamente nei moduli o
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 daps
, 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
instring::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
ePOPCNT
). Consultadocs/CPU-FEATURES.html
per ulteriori dettagli. docs/NDK-BUILD.html
è stato aggiornato per menzionareNDK_APPLICATION_MK
diNDK_APP_APPLICATION_MK
per selezionare un fileApplication.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é aC:\Some\Dir
.
- Quando il prefisso di unità Cygwin non era
- 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.
- Quando la tua applicazione utilizza il runtime GNU
Android NDK r7 (novembre 2011)
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, vedidocs/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/
- Aggiunta un'API multimediale nativa basata su Khronos Group OpenMAX AL 1.0.1
standard. I nuovi
- Aggiunto il supporto di CCache. Per velocizzare le ricompilazioni di grandi dimensioni, definisci
NDK_CCACHE
variabile di ambiente inccache
(o il percorso a il tuo file binarioccache
). 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
suall
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 nellaApplication.mk
sono equivalenti in questa release:APP_ABI := all APP_ABI := armeabi armeabi-v7a x86
Funziona anche se definisci
APP_ABI
durante la chiamatandk-build
dalla riga di comando, un modo rapido per verificare build del progetto per tutte le ABI supportate senza modificareApplication.mk file
. Ad esempio:ndk-build APP_ABI=all
- È stata aggiunta una variabile
LOCAL_CPP_FEATURES
inAndroid.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à. Vedidocs/ANDROID-MK.html
edocs/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 richiamindk-build
da una sottodirectory della struttura ad albero del tuo progetto o se definisciNDK_PROJECT_PATH
affinché punti a una directory specifica.
- Sono state aggiunte le API NDK ufficiali per Android 4.0 (livello API 14), che includono quanto segue:
funzionalità native sulla piattaforma:
- 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 scriptndk-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>
) seAPP_MODULES
non è definita in il tuoApplication.mk
. Ad esempio, se un modulo di primo livellofoo
importa un modulobar
, quindi sialibfoo.so
chelibbar.so
copiati nel percorso di installazione. In precedenza, solo Il campolibfoo.so
è stato copiato, a meno che tu non abbia elencatobar
neiAPP_MODULES
. Se definisciAPP_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 staticabar
che importa immagini statiche libreriazoo
, illibfoo.so
sarà ora collegato a entrambilibbar.a
elibzoo.a
.
- Per impostazione predefinita, le librerie condivise importate sono installate nell'installazione di destinazione
località (
- 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 sudocs/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 compilarefoo.cpp
ebar.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()
oglGetProcAddress()
. 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
Android NDK r6b (agosto 2011)
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
esize_t
in specifici di x86 quando vengono utilizzati con la toolchain autonoma x86.
- Correzione della build quando si utilizzava
Android NDK r6 (luglio 2011)
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 fileApplication.mk
da creare per le piattaforme x86. Ad esempio, la seguente riga indicandk-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 chiamimake-standalone-toolchain.sh
. Consultadocs/STANDALONE-TOOLCHAIN.html
per avere ulteriori informazioni. - Il nuovo strumento
ndk-stack
ti consente di tradurre le analisi dello stack inlogcat
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, vedidocs/NDK-STACK.html
.
- 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
- Altre modifiche:
- La proprietà
arm-eabi-4.4.0
, che era stata ritirata dalla versione NDK r5, è stata rimosso dalla distribuzione NDK.
Android NDK r5c (giugno 2011)
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 neldocs/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 unhistory_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 diNDK_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 conNDK_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 diadb shell
e miglioramento messaggi di errore.<pthread.h>
: è stata corretta la definizione diPTHREAD_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 inbuild/core/build-binary.mk
). - È stato corretto un bug che impediva la compilazione di
.s
file assembly (.S
file sono andati a buon fine).
- Ora i file degli oggetti sono sempre collegati nell'ordine in cui appaiono
Android NDK r5b (gennaio 2011)
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, definisciNDK_USE_CYGPATH=1
in per utilizzare nuovamentecygpath -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
eIN6_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
.
Android NDK r5 (dicembre 2010)
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
enative-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.
Android NDK r4b (giugno 2010)
- 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'ABIarmeabi
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 libreriacpufeatures
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.
- Fornisce un sistema di compilazione semplificato tramite la nuova build
Android NDK r3 (marzo 2010)
- 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.
Android NDK r2 (settembre 2009)
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 oggettoGLSurfaceView
.
Android NDK r1 (giugno 2009)
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.