Diese Seite enthält Informationen zu Änderungen in allen veröffentlichten stabilen Versionen des NDK. So lädst du die neueste stabile Version des NDK oder einer anderen derzeit verfügbaren Betaversion herunter: finden Sie auf der NDK-Downloadseite.
Siehe android-ndk-announce in der Google-Gruppe. abonnieren, um Release-Ankündigungen zu erhalten.
Android NDK r27 LTS (Juli 2024)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar <ph type="x-smartling-placeholder"></ph> hier.
Android NDK r26 LTS (September 2023)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar <ph type="x-smartling-placeholder"></ph> hier.
- Ankündigungen
-
- KitKat (APIs 19 und 20) wird nicht mehr unterstützt.
Android NDK r25 LTS (Juli 2022)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar <ph type="x-smartling-placeholder"></ph> hier.
- Ankündigungen
-
- Umfasst Android 13 APIs.
- LLVM wurde basierend auf der Entwicklung von LLVM 14 auf clang-r450784d aktualisiert.
Android NDK r24 (März 2022)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar <ph type="x-smartling-placeholder"></ph> hier.
- Ankündigungen
-
-
Der GNU Assembler (GAS) wurde entfernt. Wenn Sie mit einer
-fno-integrated-as
müssen Sie dieses Flag entfernen. Weitere Informationen finden Sie unter <ph type="x-smartling-placeholder"></ph> Clang-Migrationshinweise mit Tipps für Assembler-Kompatibilität mit LLVM. - GDB wurde entfernt. Verwenden Sie stattdessen LLDB. Beachten Sie, dass ndk-gdb LLDB und Android Studio hat bisher nur LLDB unterstützt.
- Jelly Bean (APIs 16, 17 und 18) wird nicht mehr unterstützt. Das Minimum Das vom NDK unterstützte Betriebssystem ist KitKat (API-Level 19).
- Nicht-Neon-Geräte werden nicht mehr unterstützt. Eine sehr geringe Anzahl sehr Alte Geräte unterstützen Neon nicht, sodass die meisten Apps es nicht bemerken. von der Leistungsverbesserung.
- Die Unterstützung für RenderScript-Builds wurde entfernt. RenderScript war <ph type="x-smartling-placeholder"></ph> in Android 12 eingestellt. Wenn Sie die Migration noch nicht abgeschlossen haben ohne RenderScript zu verwenden, können Sie NDK r23 LTS verwenden.
-
Der GNU Assembler (GAS) wurde entfernt. Wenn Sie mit einer
Android NDK r23 LTS (August 2021)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
-
GNU binutils mit Ausnahme von GNU Assembler (GAS) wurden entfernt. GAS
wird in der nächsten Version entfernt. Wenn Sie mit einer
-fno-integrated-as
, melden Sie Fehler, falls etwas verhindert dass Sie diese Kennzeichnung entfernen. -
GDB wird nicht mehr unterstützt. GDB wird aus dem nächsten Release entfernt.
Verwenden Sie stattdessen LLDB. In
ndk-gdb
wird standardmäßig LLDB verwendet. - NDK r23 ist die letzte Version, die Nicht-Neon unterstützt. Beginnend mit NDK r24 haben, werden die Armeabi-v7a-Bibliotheken im Sysroot mit Neon Einige sehr alte Geräte unterstützen Neon nicht. bei den meisten Apps nur eine Leistungsverbesserung.
- Jelly Bean (APIs 16, 17 und 18) wird im nächsten NDK nicht mehr unterstützt Veröffentlichung. Das vom NDK für r24 unterstützte Mindestbetriebssystem ist KitKat (API-Level 19).
-
GNU binutils mit Ausnahme von GNU Assembler (GAS) wurden entfernt. GAS
wird in der nächsten Version entfernt. Wenn Sie mit einer
Android NDK r22b (März 2021)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
-
GNU binutils wurde verworfen und wird in einem zukünftigen NDK entfernt
Veröffentlichung. Der GNU-Asserer (
as
) ist ein Teil davon. Wenn Sie mit einer-fno-integrated-as
, melden Sie Fehler, falls etwas verhindert dass Sie diese Kennzeichnung entfernen. Wenn Sieas
verwenden verwenden Sie stattdessenclang
. - LLD ist jetzt die Standardverknüpfung. ndk-build und unsere CMake-Toolchain-Datei wurden ebenfalls zu llvm-ar und llvm-strip.
- ndk-gdb verwendet jetzt lldb als Debugger. „gdb“ wurde verworfen und wird in einer zukünftigen Version entfernt werden. Um auf gdb zurückzugreifen, verwenden Sie --no-lldb. Option. Aber bitte Programmfehler melden und erklärt, warum Sie lldb nicht verwenden können.
-
std::filesystem
-Support ist jetzt inbegriffen. Es gibt zwei Bekannte Probleme: <ph type="x-smartling-placeholder">- </ph>
-
Problem
1258:
std::filesystem::perm_options::nofollow
kann auf alten Geräten nicht mehr berücksichtigt. -
Problem
1260:
std::filesystem::canonical
wird wenn ein nicht vorhandener Pfad auf alten Geräten übergeben wird, Geräte.
-
Problem
1258:
-
GNU binutils wurde verworfen und wird in einem zukünftigen NDK entfernt
Veröffentlichung. Der GNU-Asserer (
Android NDK r21e LTS (Januar 2021)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
-
32-Bit-Windows wird nicht mehr unterstützt. Dies hat keinen Einfluss auf die die Mehrheit der Nutzenden. Wenn Sie noch NDK-Apps 32-Bit-Versionen von Windows, verwenden Sie weiterhin NDK r20.
Weitere Informationen zu dieser Änderung in den Android-Entwicklertools sieh dir die Blogpost zu diesem Thema.
-
LLD ist jetzt zum Testen verfügbar.
AOSP verwendet standardmäßig LLD und das NDK wird
(Zeitachse unbekannt). Testen Sie LLD in Ihrer App, indem Sie
-fuse-ld=lld
übergeben wenn Sie eine Verknüpfung erstellen. Beachten Sie, dass Problem 843 wirkt sich auf Builds aus, bei denen LLD mit binutils Strip und Objcopy verwendet wird, und llvm-strip und llvm-objcopy. -
Die Installationspfade der Legacy-Toolchain werden in den kommenden Wochen entfernt
Veröffentlichungen. Diese Pfade sind seit NDK r19 veraltet und nehmen eine
nicht viel Platz im NDK. Folgende Pfade werden entfernt:
<ph type="x-smartling-placeholder">
- </ph>
- Plattformen
- Quellen/cxx-stl
- Sysroot
- Toolchains (mit Ausnahme von Toolchains/llvm)
make_standalone_toolchain.py
Nutzer (obwohl dieses Skript seit r19 unnötig). Informationen zur Migration vom Legacy-Toolchain-Layout sieh dir die Leitfaden zur Build-Systemverwaltung für die von Ihnen verwendete NDK-Version. - Beim Hochladen eines APK im Play Store ist 64-Bit-Unterstützung erforderlich ab August 2019. Beginnen Sie jetzt mit der Rufnummernmitnahme, um kommt die Zeit. Weitere Informationen finden Sie unter in diesem Blogpost.
- Signiertes und notariell beglaubigtes macOS App Bundle ist jetzt verfügbar für aus unserem Wiki und von unserer Website herunterladen. Da nur Gruppierungen RPATHs und die Karten-/Ticketbeglaubigung nutzen, das traditionelle NDK-Paket für macOS kann nicht beglaubigt werden. Das SDK verwendet weiterhin die da das App Bundle Layoutänderungen erfordert, wäre es nicht mit Android Studio kompatibel. Das NDK ist nicht unter Quarantäne gestellt, wenn es über den SDK Manager heruntergeladen wird. durch den Gatekeeper. Der SDK-Manager ist derzeit eine zuverlässige Möglichkeit, das NDK für macOS zu erhalten.
-
Android NDK r20b (Juni 2019)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
-
LLD ist jetzt zum Testen verfügbar.
AOSP ist dabei, standardmäßig auf LLD umzustellen.
NDK folgt (Zeitachse unbekannt). Testen Sie LLD in Ihrer App, indem Sie
-fuse-ld=lld
beim Verknüpfen. - Beim Hochladen eines APK im Play Store ist 64-Bit-Unterstützung erforderlich ab August 2019. Beginnen Sie jetzt mit der Rufnummernmitnahme, um kommt die Zeit. Weitere Informationen finden Sie unter in diesem Blogpost.
- Android Q APIs wurden hinzugefügt.
-
LLD ist jetzt zum Testen verfügbar.
AOSP ist dabei, standardmäßig auf LLD umzustellen.
NDK folgt (Zeitachse unbekannt). Testen Sie LLD in Ihrer App, indem Sie
Android NDK r19c (Januar 2019)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
-
Entwickler sollten ihre Apps mit LLD testen. AOSP verwendet jetzt
LLD ist standardmäßig aktiviert und das NDK verwendet sie standardmäßig in den
Veröffentlichung. BFD und Gold werden entfernt, sobald LLD eine
Releasezyklus ohne größere ungelöste Probleme (geschätzte r21-Probleme). Testen
LLD in Ihrer App, indem Sie bei der Verknüpfung
-fuse-ld=lld
übergeben. Hinweis: „lld“ unterstützt unter Windows derzeit keine komprimierten Symbole. Problem 888 Clang kann unter Windows auch keine komprimierten Symbole generieren. Dies kann jedoch ein Problem sein, wenn Artefakte aus Darwin oder Linux - Beim Hochladen eines APK im Play Store ist 64-Bit-Unterstützung erforderlich ab August 2019. Beginnen Sie jetzt mit der Rufnummernmitnahme, um kommt die Zeit. Weitere Informationen finden Sie unter in diesem Blogpost.
-
Problem 780:
Eigenständig
Toolchains sind jetzt nicht mehr erforderlich. Clang, binutils, sysroot
und andere Toolchain-Teile sind nun alle installiert,
$NDK/toolchains/llvm/prebuilt/<host-tag>
und Clang werden sie automatisch gefunden. Anstelle eines eigenständigen Toolchain für API 26 ARM. Rufen Sie den Compiler stattdessen direkt über des NDK:$ $NDK/toolchains/llvm/prebuilt/
Für r19 wird die Toolchain auch im alten Pfad installiert, um Build Systeme eine Möglichkeit, sich an das neue Layout anzupassen. Die alten Pfade werden in r20 entfernt. Das Skript/bin/armv7a-linux-androideabi26-clang++ src.cpp make_standalone_toolchain.py
wird nicht entfernt. Er ist nun nicht mehr erforderlich und gibt eine Warnung mit dem Obenstehenden aus. Informationen, aber das Skript bleibt erhalten, damit vorhandene Informationen nicht verloren gehen. Workflows. Wenn Sie ndk-build, CMake oder eine eigenständige Toolchain verwenden, sollte sich Ihr Workflow nicht ändern. Diese Änderung ist wichtig für Verantwortlichen für Build-Systeme von Drittanbietern, die jetzt in der Lage sein sollten, Android-spezifischen Code zu löschen. Weitere Informationen finden Sie in der Erstellen Leitfaden zu Systemverwaltern. - „ndk-depends“ wurde entfernt. Wir glauben, dass ReLinker ein Bessere Lösung für Probleme beim Laden nativer Bibliotheken auf dem alten Android-Gerät Versionen.
- Problem 862: Die GCC-Wrapper-Skripts, die zu Clang umgeleitet wurden, wurden entfernt. da sie nicht funktionell genug sind, um ersetzt zu werden.
-
Entwickler sollten ihre Apps mit LLD testen. AOSP verwendet jetzt
LLD ist standardmäßig aktiviert und das NDK verwendet sie standardmäßig in den
Veröffentlichung. BFD und Gold werden entfernt, sobald LLD eine
Releasezyklus ohne größere ungelöste Probleme (geschätzte r21-Probleme). Testen
LLD in Ihrer App, indem Sie bei der Verknüpfung
Android NDK r18b (September 2018)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
- GCC wurde entfernt.
-
LLD ist jetzt zum Testen verfügbar.
AOSP ist dabei, standardmäßig auf LLD umzustellen.
NDK folgt (Zeitachse unbekannt). Testen Sie LLD in Ihrer App, indem Sie
-fuse-ld=lld
beim Verknüpfen. - gnustl, gabi++ und stlport wurden entfernt.
- ICS (android-14 und android-15) wird nicht mehr unterstützt. Apps Bei Verwendung ausführbarer Dateien müssen keine PIE und keine Nicht-PIE mehr bereitgestellt werden. ausführbar sein.
- Beim Hochladen eines APK im Play Store ist 64-Bit-Unterstützung erforderlich ab August 2019. Beginnen Sie jetzt mit der Rufnummernmitnahme, um kommt die Zeit. Weitere Informationen finden Sie unter in diesem Blogpost.
Android NDK r17c (Juni 2018)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
-
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
- GCC wird nicht mehr unterstützt. Es wird in NDK r18 entfernt.
-
libc++ ist jetzt die Standard-STL-Datei für CMake und eigenständige Toolchains. Wenn
manuell eine andere STL ausgewählt haben, empfehlen wir Ihnen,
zu
libc++
verschieben. Beachten Sie, dass ndk-build immer noch standardmäßig keine STL Weitere Informationen finden Sie unter in diesem Blogpost. - „gnustl“ und „stlport“ wurden eingestellt und werden in NDK r18 entfernt.
- ARMv5 (Armeabi), MIPS und MIPS64 werden nicht mehr unterstützt. Der Versuch, eines dieser ABIs zu erstellen, führt zu einem Fehler.
- Die Unterstützung für ICS (android-14 und android-15) wird von r18 entfernt.
- Beim Hochladen eines APK im Play Store ist 64-Bit-Unterstützung erforderlich ab August 2019. Beginnen Sie jetzt mit der Rufnummernmitnahme, um kommt die Zeit. Weitere Informationen finden Sie unter in diesem Blogpost.
Android NDK r16b (Dezember 2017)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
- Die veralteten Header wurden entfernt. <ph type="x-smartling-placeholder"></ph> Einheitliche Header sind jetzt einfach „The Headers“. Tipps zur Migration finden Sie unter <ph type="x-smartling-placeholder"></ph> Unified Headers Migration Notes (Hinweise zur Migration von Unified Headers).
- GCC wird nicht mehr unterstützt. Sie wird noch nicht aus dem NDK entfernt, ist aber nicht mehr den Empfang von Backports. Sie kann erst entfernt werden, nachdem libc++ stabil genug ist, um den da einige Teile von Gnustl noch nicht mit Clang kompatibel sind. Sie wird entfernt, sobald der andere STLs werden in r18 entfernt.
libc++
hat die Betaphase abgeschlossen und ist jetzt die bevorzugte STL-Datei im NDK. Ab r17libc++
ist die standardmäßige STL für CMake- und eigenständige Toolchains. Wenn Sie manuell eine andere STL enthalten, empfehlen wir dir dringend, zulibc++
zu wechseln. Weitere Informationen finden Sie unter dieses Blogpost.- ARM5 (Armeabi), MIPS und MIPS64 werden nicht mehr unterstützt. Sie werden nicht mehr standardmäßig erstellt mit "ndk-build", können aber trotzdem erstellt werden, wenn sie explizit benannt sind und in "all" enthalten sind. „all32“ und „all64“. Die Unterstützung für alle diese Funktionen wurde in r17 eingestellt. Sowohl CMake als auch ndk-build gibt eine Warnung aus, wenn du eines dieser ABIs anvisieren möchtest.
- APIs
-
Native APIs für Android hinzugefügt 8.1 Weitere Informationen zu diesen APIs finden Sie in der Übersicht über native APIs
Weitere Informationen zu den Neuerungen und Änderungen in dieser Version finden Sie in diesem Änderungsprotokoll aufgelistet.
Android NDK r15c (Juli 2017)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
- Einheitliche Header sind standardmäßig aktiviert. Um zu erfahren, wie Sie diese Überschriften, siehe Einheitliche Header:
- GCC wird nicht mehr unterstützt. Sie wird noch nicht aus NDK entfernt, empfängt aber keine Backports mehr. Sie kann erst entfernt werden, nachdem sich libc++ als Standard stabilisiert hat, da einige Teile von gnustl sind immer noch nicht mit Clang kompatibel.
- Android 2.3 (
android-9
) wird nicht mehr unterstützt. Das minimale API-Level-Ziel in Das NDK ist jetzt Android 4.0 (android-14
). WennAPP_PLATFORM
festgelegt ist niedriger alsandroid-14
ist, wird stattdessenandroid-14
verwendet. - CMake in NDK unterstützt jetzt das Erstellen von Assembly-Code, der in YASM geschrieben wurde, um auf x86 und x86-64-Architekturen. Weitere Informationen finden Sie unter Assembly-Code erstellen.
Hinweis : Die eingestellten Header werden in einer der nächsten Veröffentlichung. Falls Probleme mit diesen Headern auftreten, reichen Sie bitte eine bug enthält.
Tipps zur Migration finden Sie in der Migrationshinweise für einheitliche Header.
- APIs
-
Native APIs für Android 8.0 wurden hinzugefügt. Weitere Informationen Weitere Informationen zu diesen APIs finden Sie in der Übersicht zu nativen APIs.
Weitere Informationen zu den Neuerungen und Änderungen in dieser Version finden Sie in diesem Änderungsprotokoll aufgelistet.
Android NDK r14b (März 2017)
Änderungsprotokoll <ph type="x-smartling-placeholder">- </ph>
- Downloads
- Downloads für diesen Release sind verfügbar hier.
- Ankündigungen
-
- Einheitliche Header: In dieser Version werden Plattformheader eingeführt, die synchronisiert werden.
und wird mit der Android-Plattform immer auf dem neuesten Stand und korrekt gehalten. Fehlerkorrekturen nur für Header
wirkt sich auf alle API-Ebenen aus. Mit der Einführung einheitlicher Header wurden Inkonsistenzen im früheren NDK behoben.
Releases wie:
<ph type="x-smartling-placeholder">
- </ph>
- Die Überschriften in M und N waren eigentlich Überschriften für L.
- Funktionsdeklarationen in Überschriften entsprachen nicht den Plattformebenen korrekt. -Header nicht vorhandene Funktionen oder nicht verfügbare Funktionen deklariert haben.
- Auf einigen der alten API-Ebenen fehlten oder wurden falsche Konstanten angegeben, die in neueren APIs vorhanden waren. Niveau.
Diese neuen einheitlichen Header sind nicht standardmäßig aktiviert. Um zu erfahren, wie Sie diese Überschriften, siehe <ph type="x-smartling-placeholder"></ph> Einheitliche Header.
- Einstellung von GCC:Mit diesem Release wird die aktive Unterstützung für GCC eingestellt. GCC wird nicht aus dem NDK noch nicht verfügbar, erhält aber keine Backports mehr. Da einige Teile von Gnustl noch immer nicht mit Clang kompatibel ist, wird GCC erst vollständig entfernt, wenn libc++ stabil ist. als Standard eingerichtet werden.
- Einheitliche Header: In dieser Version werden Plattformheader eingeführt, die synchronisiert werden.
und wird mit der Android-Plattform immer auf dem neuesten Stand und korrekt gehalten. Fehlerkorrekturen nur für Header
wirkt sich auf alle API-Ebenen aus. Mit der Einführung einheitlicher Header wurden Inkonsistenzen im früheren NDK behoben.
Releases wie:
<ph type="x-smartling-placeholder">
Weitere Informationen zu den Neuerungen und Änderungen in dieser Version finden Sie in diesem Änderungsprotokoll aufgelistet.
Android NDK r13b (Oktober 2016)
- Downloads
- Downloads für diesen Release sind archiviert hier.
- Ankündigungen
-
- GCC wird nicht mehr unterstützt. Sie wird nicht nur aus dem NDK entfernt, noch, empfängt aber keine Backports mehr. Kann erst entfernt werden, nachdem libc++ stabil genug ist und als Standard festgelegt wurde, sind immer noch nicht mit Clang kompatibel. Wird wahrscheinlich entfernt nach diesem Punkt.
- Hinzugefügt simpleperf einen CPU-Profiler für Android.
- R13B
-
-
<ph type="x-smartling-placeholder"></ph>
Zusätzliche Fehlerbehebungen für fehlende
__cxa_bad_cast
.
-
<ph type="x-smartling-placeholder"></ph>
Zusätzliche Fehlerbehebungen für fehlende
- Logo: NDK
-
NDK_TOOLCHAIN_VERSION
ist jetzt standardmäßig auf Clang festgelegt.- libc++ wurde auf r263688 aktualisiert.
- Wir haben auf einen (fast) sauberen Upstream zurückgesetzt. Dadurch sollten einige müssen aber noch libandroid_support bereinigen, als Standardeinstellung empfohlen.
-
make-standalone-toolchain.sh
ist jetzt einfach ein Wrapper um die Python-Version des Tools. Im Verhalten gibt es einige Unterschiede. Weitere Informationen finden Sie in der Commit-Nachricht. - Einige Bibliotheken für nicht unterstützte ABIs wurden entfernt (mips64r2, mips32r6, mips32r2 und x32). Vielleicht gibt es noch ein paar Nachzügler.
- Probleme mit crtbegin_static.o, die zu fehlendem Atexit beim Link geführt haben beim Erstellen einer statisch ausführbaren Datei für ARM Android-21+ behoben: Problem 132
- CMake-Toolchain-Datei wurde in build/cmake/android.tooltip.cmake hinzugefügt.
- Bekannte Probleme
-
- Dies ist keine umfassende Liste aller ausstehenden Fehler.
- Eigenständige Toolchains mit libc++ und GCC funktionieren nicht. Dies scheint Fehler in GCC. Weitere Informationen finden Sie unter Commit .
- Bionic-Header und -Bibliotheken für Marshmallow und N sind noch nicht verfügbar obwohl Android-24 vorhanden ist. Diese Plattformen sind immer noch Lollipop-Header und -Bibliotheken (keine Regression von r11).
- RenderScript-Tools sind nicht vorhanden (keine Regression von r11): Problem 7:
Android NDK r12b (Juni 2016)
- Downloads
- Downloads für diesen Release sind hier archiviert.
- Ankündigungen
- Der Befehl
ndk-build
verwendet standardmäßig Clang in r13. Wir werden GCC in einem neuen Release. - Das Skript
make-standalone-toolchain.sh
wird in r13 entfernt. Prüfen Sie, obmake_standalone_toolchain.py
Ihren Anforderungen entspricht. - Melden Sie Probleme an GitHub.
- Wir haben das Problem „
ndk-gdb.py
“ behoben. (Problem 118) -
Wir haben
NdkCameraMetadataTags.h
aktualisiert, sodass sie keine ungültige enum-Wert. - Ein Fehler in ndk-build, der zu falschen Warnungen für statische Bibliotheken mit libc++ führte, wurde behoben. Weitere Informationen zu dieser Änderung finden Sie in den Kommentaren hier.
- Die OpenSLES-Header wurden für Android-24 aktualisiert.
- Logo: NDK
- Wir haben die Unterstützung für das armeabi-v7a-hard-ABI entfernt. Weitere Informationen anzeigen Erklärung.
- Alle Sysroots für Plattformebenen vor GB wurden entfernt. Wir haben die Unterstützung für R11 eingestellt, aber es versäumt, sie zu entfernen.
- Die Ausnahmebehandlung bei Verwendung von c++_shared unter ARM32 funktioniert jetzt größtenteils. Der Entspannungsmodus mit jedem verknüpften Objekt und nicht mit libc++ selbst verknüpft sein. Weitere Informationen zu dieser Ausnahmebehandlung siehe <ph type="x-smartling-placeholder"></ph> Bekannte Probleme.
- Die Standard-Compiler-Flags wurden entfernt.
(Problem 27)
- Vollständige Informationen zu diesen Änderungen finden Sie unter dieser Änderungsliste.
- Eine Python-Implementierung von eigenständigen Toolchains wurde hinzugefügt:
build/tools/make_standalone_toolchain.py
- Windows-Nutzer benötigen Cygwin nicht mehr, um diese Funktion zu verwenden.
- Wir werden den Bash-Flavor in r13 entfernen, also testen Sie jetzt den neuen.
-fno-limit-debug-info
wurde standardmäßig für Clang-Debug-Builds aktiviert. Durch diese Änderung sollte sich die Fehlerbehebung mit LLDB verbessern.--build-id
ist jetzt standardmäßig aktiviert.- Die Build-ID wird jetzt in Berichten zu nativen Abstürzen angezeigt. So können Sie um zu ermitteln, welche Version des Codes ausgeführt wurde.
NDK_USE_CYGPATH
sollte keine Probleme mehr mit libgcc verursachen. (Android) Problem 195486-Wl
,--warn-shared-textrel
und-Wl,--fatal-warnings
sind jetzt standardmäßig aktiviert. Wenn Sie Textverschiebungen geteilt haben, kann Ihre App keine auf Geräten mit Android 6.0 (API-Level 23) oder höher. Textverschiebungen waren nie zulässig für 64-Bit-Apps.- Vorkompilierte Header sollten besser funktionieren. (Problem 14 und Problem 16)
- Nicht erreichbare ARM-STL-Bibliotheken (ohne Thumb) entfernt.
- Vulkan-Unterstützung für Android-24 hinzugefügt.
- Die Choreographer API wurde zu android-24 hinzugefügt.
libcamera2
APIs für Geräte hinzugefügt mitINFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
oder höher. Weitere Informationen finden Sie unter <ph type="x-smartling-placeholder"></ph> Kameraeigenschaften- Clang-Sprache
- Clang wurde auf 3.8svn (r256229, Build 2812033) aktualisiert.
- Die ausführbaren Dateien
clang.exe
undclang++.exe
in der 32-Bit-Version Windows-Pakete sind in Wirklichkeit eine 64-Bit-Version. Die ausführbare 32-Bit-Datei hat den Namenclang_32.exe
- Die ausführbaren Dateien
- GCC
- Synchronisiert mit ChromeOS GCC @ google/gcc-4_9 r227810.
- Desinfektionsmittel mit rückportierter Abdeckung von ToT (r231296).
- Libatomic wurde korrigiert, sodass
ifuncs
nicht verwendet wird. (Problem 31) - Binutils
- Stummgeschaltete Informationsmeldungen des Typs „Erratum 843419 gefunden und behoben“.
- Die Option
--long-plt
wurde eingeführt, um einen internen Verknüpfungsfehler zu beheben, der auftritt, wenn der Verknüpfung von riesigen arm32-Binärdateien. - Falsche Laufzeit-Stubs für AArch64 wurden behoben. Dies hat dazu geführt, dass Jump-Adressen berechnet wurden. für sehr große DSOs falsch.
- Einführung der Standardoption
--no-apply-dynamic
um einen Fehler in früheren Android-Versionen zu umgehen. - NDK r11 KI für
dynamic_cast
funktioniert nicht mit Clang. Wir haben x86 korrigiert,stlport_static
und Optimierung. - Google-Datenbank
- Aktualisiert auf GDB 7.11. Weitere Informationen finden Sie in der GDB News.
- Einige Fehlerkorrekturen für
ndk-gdb.py
. - Bekannte Probleme
- x86-ASAN funktioniert immer noch nicht. Weitere Informationen finden Sie in der Diskussion zu dieser Änderungsliste.
- Eine Ausnahme mit
c++_shared
funktioniert immer noch nicht für ARM Android 2.3 (API-Level 9) oder Android 4.0 (API-Level 14) ausgeführt werden. - Bionic-Header und -Bibliotheken für Android 6.0 (API-Level 23) und Android 7.0 (API-Level 24) wurden trotz Android-24 noch nicht preisgegeben. Diese Plattformen sind immer noch die Header und Bibliotheken von Android 5.0 (API-Level 21) (keine Regression von r11).
- Es sind keine RenderScript-Tools vorhanden (keine Regression von r11). (Problem 7)
- Dieses Änderungsprotokoll ist keine umfassende Liste aller noch nicht behobenen Fehler.
- </ph>
__thread
sollte in Echtzeit funktionieren.
Android NDK r12 (Juni 2016)
- Downloads
- Downloads für diesen Release sind hier archiviert.
- Ankündigungen
- Für den Befehl
ndk-build
wird standardmäßig die Verwendung von Clang in einer zukünftigen Version GCC wird in einer späteren Version entfernt. - Das Skript
make-standalone-toolchain.sh
wird entfernt in einer zukünftigen Version. Wenn Sie dieses Skript verwenden, planen Sie bitte eine Migration zummake_standalone_toolchain.py
so schnell wie möglich. - Logo: NDK
- Die Unterstützung für das armeabi-v7a-hard-ABI wurde entfernt. Eine Erklärung finden Sie in der <ph type="x-smartling-placeholder"></ph> Dokumentation.
- Alle Sysroots für Plattformebenen vor Android 2.3 (API-Ebene 9) wurden entfernt. Wir haben die Unterstützung für sie in NDK r11 eingestellt, haben sie jedoch nicht entfernt.
- Die Ausnahmebehandlung bei der Verwendung von c++_shared auf ARM32 wurde aktualisiert, sodass es meistens funktioniert (siehe Bekannte Probleme). Entspannende Musik jetzt mit jedem verknüpften Objekt statt mit libc++ selbst verknüpft ist.
- Die Standard-Compiler-Flags wurden entfernt (NDK-Problem 27). Sie können sehen, Weitere Informationen zu dieser Aktualisierung finden Sie unter Änderung 207721.
- Eine Python-Implementierung von eigenständigen Toolchains wurde in
build/tools/make_standalone_toolchain.py
hinzugefügt. Unter Windows müssen Sie nicht mehr Cygwin brauchen, um diese Funktion zu nutzen. Beachte, dass der Bash-Flavor entfernt wird, in einer zukünftigen Version, testen Sie die neue daher jetzt. - Clang-Debug-Builds konfiguriert, um
-fno-limit-debug-info
ist standardmäßig aktiviert. Diese Änderung ermöglicht eine bessere Fehlerbehebung mit LLDB. --build-id
wurde als Standardoption aktiviert. Diese Option in nativen Absturzberichten eine ID angezeigt, um zu ermitteln, welche Version des Codes ausgeführt wurde.- Das Problem mit
NDK_USE_CYGPATH
wurde behoben, sodass es nicht mehr zu Probleme mit libgcc (Problem 195486) - Folgende Optionen sind standardmäßig aktiviert:
-Wl,--warn-shared-textrel
und-Wl,--fatal-warnings
. Wenn Sie Textverschiebungen geteilt haben, wird Ihre App unter Android 6.0 nicht geladen. (API-Level 23) und höher. Beachten Sie, dass diese Konfiguration für 64-Bit-Apps zulässig. - Einige Fehler wurden behoben, damit vorkompilierte Header besser funktionieren. (NDK-Ausgabe 14, NDK-Ausgabe 16).
- Nicht erreichbare ARM-STL-Bibliotheken (ohne Thumb) entfernt.
- Vulkan-Unterstützung für Android-24 hinzugefügt.
- Die Choreographer API wurde zu android-24 hinzugefügt.
- Es wurden libcamera2-APIs für Geräte hinzugefügt, die die
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
Featurestufe oder höher. Weitere Informationen finden Sie in der <ph type="x-smartling-placeholder"></ph>CameraCharacteristics
-Referenz. - Clang-Sprache
- Clang wurde auf 3.8svn (r256229, Build 2812033) aktualisiert. Die
clang.exe
undclang++.exe
ausführbare Dateien im 32-Bit-Windows-Paket sind eigentlich 64-Bit-Dateien. Die Die ausführbare 32-Bit-Datei hat den Namenclang_32.exe
. __thread
wurde behoben, sodass es jetzt in Echtzeit funktioniert.- GCC
- Der Compiler wurde mit ChromeOS GCC @ google/gcc-4_9 r227810 synchronisiert.
- Desinfektionsmittel mit rückportierter Abdeckung von ToT (r231296).
- Fehler behoben, bei dem
libatomic
nicht verwendet wurde, wenn ifuncs nicht verwendet wurde (NDK-Problem 31). - Binutils
- „Erratum 843419 gefunden und behoben“ stummgeschaltet Info-Nachrichten.
- Option „
--long-plt
“ wurde eingeführt, mit der ein interner Verknüpfungsfehler behoben werden kann wenn Sie riesige arm32-Binärdateien verknüpfen. - Falsche Laufzeit-Stubs für
AArch64
wurden behoben. Dieses Problem war wodurch Jump-Adressen bei sehr großen Dynamic Shared Objects (DSOs) enthalten. - Einführung der Standardoption
--no-apply-dynamic
zur Behelfslösung in früheren Android-Versionen wurden Fehler mit dynamischen Links erkannt. - Ein bekanntes Problem mit NDK r11 wurde behoben, bei dem
dynamic_cast
nicht mit Clang, x86, stlport_static und der Optimierung. - Google-Datenbank
- Aktualisiert auf GDB Version 7.11. Weitere Informationen zu dieser Version finden Sie unter GDB News
- Mehrere Fehler im Skript
ndk-gdb.py
wurden behoben. - Bekannte Probleme
- Die x86-Adresse Sanitizer (ASAN) funktioniert derzeit nicht. Weitere Informationen finden Sie unter Problem 186276
- Die Ausnahmeauslösung mit
c++_shared
funktioniert nicht für ARM auf Android 2.3 (API-Level 9) oder Android 4.0 (API-Level 14) - Bionic-Header und -Bibliotheken für Android 6.0 (API-Level 23) und höher wurden trotz Android-24 noch nicht preisgegeben. Auf diesen Plattformen die Header und Bibliotheken von Android 5.0 (API-Ebene 21) haben, mit NDK r11.
- Die RenderScript-Tools sind nicht vorhanden, was mit NDK r11. (NDK-Ausgabe 7)
- In der
NdkCameraMetadataTags.h
-Headerdatei enthalten die Kamerametadaten Enum-Wert des TagsACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAP
wurde versehentlich aufgeführt und wird in der nächsten Version entfernt. Verwenden SieACAMERA_STATISTICS_LENS_SHADING_MAP
.
Android NDK r11c (März 2016)
- Änderungen
- Es wurden zusätzliche Korrekturen am Skript
ndk-gdb.py
vorgenommen. - Ein optionales Argument für den Paketnamen wurde
ndk-gdb
hinzugefügt. Befehl--attach
. (Problem 13) - Ungültige Toolchain-Pfade für 32-Bit-Windows-Plattform wurden korrigiert. (Problem 45)
- Der relative Pfad für den Befehl
ndk-which
wurde korrigiert. (Problem 29) - Die Verwendung von cygpath für den libgcc-Compiler wurde korrigiert. (Android-Problem 195486)
Android NDK r11b (März 2016)
- Logo: NDK
-
- Wichtige Ankündigungen
<ph type="x-smartling-placeholder">
- </ph>
- Wir haben unseren Fehler-Tracker zu verschoben. GitHub
- Änderungen
<ph type="x-smartling-placeholder">
- </ph>
ndk-gdb.py
wurde behoben. Es hatte vollständig zurückgegangen in r11.ndk-gdb
für Mac behoben.- Zusätzliche Tastenkombinationen auf oberster Ebene für Befehlszeilentools hinzugefügt:
<ph type="x-smartling-placeholder">
- </ph>
ndk-depends
.ndk-gdb
.ndk-stack
.ndk-which
Dieser Befehl fehlte in der vorherigen Version Veröffentlichungen.
- Eigenständige Toolchains für libc++ korrigiert, die fehlten
__cxxabi_config.h
- Fehler in der Hilfedokumentation für
--toolchain
inmake-standalone-toolchain.sh
.
- Wichtige Ankündigungen
<ph type="x-smartling-placeholder">
- Clang-Sprache
-
- Errata
- Im Gegensatz zu den Angaben in den r11-Versionshinweisen,
__thread
nicht funktioniert. Das liegt daran, dass in der Version von Clang, die wir versenden, eine Fehlerkorrektur fehlt. emulierten TLS-Unterstützung.
Android NDK r11 (März 2016)
- Clang-Sprache
-
- Wichtige Ankündigungen
<ph type="x-smartling-placeholder">
- </ph>
- Wir empfehlen dringend, zu Clang zu wechseln.
- Wenn Sie Probleme mit Clang haben, Informationen zu Problemen spezifisch für Clang im NDK. Bei allgemeineren Clang-Problemen Fehler melden, indem Sie den Anweisungen auf dieser Seite.
- Clang wurde auf 3.8svn (r243773, Build 2481030) aktualisiert.
- Diese Version ist ein fast reiner Upstream-Clang.
- Das herunterladbare 64-Bit-NDK-Paket für Windows enthält eine Version von Clang.
- Wir empfehlen dringend, zu Clang zu wechseln.
- Ergänzungen
<ph type="x-smartling-placeholder">
- </ph>
- Clang unterstützt jetzt emuliertes TLS.
- Der Compiler unterstützt jetzt
__thread
durch Emulation ELF-TLS mit pthread-threadspezifischen Daten. - C++11
thread_local
funktioniert in einigen Fällen, aber nicht für Daten mit nicht-trivialen Zerstörern, weil diese Fälle erfordern Unterstützung von libc. Diese Einschränkung gilt nicht gelten unter Android 6.0 (API-Level 23) oder höher. - Emulierte TLS funktioniert noch nicht mit Aarch64, wenn Der Zugriff auf TLS-Variablen erfolgt über eine gemeinsam genutzte Bibliothek.
- Der Compiler unterstützt jetzt
- Clang unterstützt jetzt emuliertes TLS.
- Wichtige Ankündigungen
<ph type="x-smartling-placeholder">
- GCC
-
- Wichtige Ankündigungen
- GCC im NDK wurde zugunsten von Clang eingestellt.
- Das NDK wird weder ein Upgrade auf 5.x ausführen noch nicht kritischen Backports.
- Wartung von Fehlkompilierungen und internen Compilerfehlern in Version 4.9 von Fall zu Fall behandelt wird.
- Entfernungen
<ph type="x-smartling-placeholder">
- </ph>
- GCC 4.8 wurde entfernt. Für alle Ziele wird jetzt GCC 4.9 verwendet.
- Sonstige Änderungen
<ph type="x-smartling-placeholder">
- </ph>
- google/gcc-4_9 mit r224707 synchronisiert. Zuvor wurden sie mit r214835 synchronisiert.
- Logo: NDK
-
- Wichtige Ankündigungen
<ph type="x-smartling-placeholder">
- </ph>
- Die Beispiele sind nicht mehr im NDK-Paket enthalten. Sie sind stattdessen auf GitHub
- Die Dokumentation ist nicht mehr im NDK-Paket enthalten. Stattdessen befindet es sich auf dem Android- Website für Entwickler.
- Ergänzungen
<ph type="x-smartling-placeholder">
- </ph>
- Eine native Tracing API wurde zu
android-23
hinzugefügt. - Eine native Multinetwork-API wurde zu
android-23
hinzugefügt. - libc, m und dl wurden zur Bereitstellung von versionierten Symbolen aktiviert, beginnend mit gegenüber API-Level 21.
- Vulkan-Header und -Bibliothek wurden zu API-Level N hinzugefügt.
- Eine native Tracing API wurde zu
- Entfernungen
<ph type="x-smartling-placeholder">
- </ph>
- Die Unterstützung für
_WCHAR_IS_8BIT
wurde entfernt. - sed entfernt.
- Mclinker wurde entfernt.
- Perl wurde entfernt.
- Aus allen Versionen von NDK libc, m und dl wurden alle Symbole entfernt, die die Plattformversionen dieser Bibliotheken nicht unterstützen.
- Die Unterstützung für mips64r2 wurde teilweise entfernt. Der Rest wird entfernt zu erhalten.
- Die Unterstützung für
- Sonstige Änderungen
<ph type="x-smartling-placeholder">
- </ph>
- Die eigenständigen ARM-Toolchains wurden in „arm7“ geändert.
- Sie können das alte Verhalten wiederherstellen, indem Sie die
-target
-Option alsarmv5te-linux-androideabi
.
- Sie können das alte Verhalten wiederherstellen, indem Sie die
- Das Build-System wurde so geändert, dass
-isystem
für die Plattform verwendet wird. beinhaltet.- Warnungen, dass bionische Ursachen App-Builds nicht mehr beeinträchtigen.
- Ein Segmentfehler wurde behoben, der auftrat, wenn ein Binärprogramm Ausnahmen auslöste. über gabi++. (Problem 179410)
- Der Inline-Namespace von libc++ wurde in
std::__ndk1
geändert um ODR-Probleme mit der Plattform libc++ zu vermeiden. - Alle libc++-Bibliotheken werden jetzt mit libc++abi erstellt.
- Standard-
APP_PLATFORM
wurde zu Gingerbread geändert.- Die Unterstützung für Froyo und ältere Nutzer erfolgt in einer zukünftige Version.
- Die eigenständigen ARM-Toolchains wurden in „arm7“ geändert.
- gabi++
_Unwind_Exception
-Struktur für 64 Bit wurde aktualisiert. - Die folgenden Funktionen wurden zu cpufeatures hinzugefügt:
<ph type="x-smartling-placeholder">
- </ph>
- Erkennt SSE4.1 und SSE4.2.
- CPU-Features auf x86_64 erkennen.
- libc++abi wurde auf Upstream aktualisiert <ph type="x-smartling-placeholder"></ph> r231075.
- Aktualisiert am
byteswap.h
,endian.h
,sys/procfs.h
,sys/ucontext.h
,sys/user.h
unduchar.h
von ToT Bionic. sys/cdefs.h
wurde auf allen API-Ebenen synchronisiert.fegetenv and fesetenv
in der Verzweigung korrigiert.- Größe/Ausrichtung des Endpunkts von
crtend_*
für mips64 korrigiert und x86_64.
- Wichtige Ankündigungen
<ph type="x-smartling-placeholder">
- Binutils
-
- Ergänzungen
<ph type="x-smartling-placeholder">
- </ph>
- Neue Option hinzugefügt:
--pic-veneer
.
- Neue Option hinzugefügt:
- Entfernungen
<ph type="x-smartling-placeholder">
- </ph>
- Das 32-Bit-Windows-Paket enthält nicht mehr ld.gold. Sie können ld.gold stattdessen im 64-Bit-Windows-Paket abrufen.
- Änderungen
<ph type="x-smartling-placeholder">
- </ph>
- Einheitliche binutils-Quelle für Android und ChromiumOS. Weitere Informationen zu dieser Änderung finden Sie in den Kommentaren <ph type="x-smartling-placeholder"></ph> findest du hier.
- Höhere Zuverlässigkeit von Gold für aarch64. Verwenden Sie
-fuse-ld=gold
bei der Verknüpfung, um Gold statt bfd zu verwenden. Die Standardeinstellung wird wahrscheinlich im nächsten Release geändert. - Verbesserte Verknüpfungszeit für riesige Binärdateien im Gold ARM-Back-End (Verkürzung der Verknüpfungszeit um bis zu 50% bei debugfähigen Chrome-Browsern).
- Ergänzungen
<ph type="x-smartling-placeholder">
- Google-Datenbank
-
- Entfernungen
<ph type="x-smartling-placeholder">
- </ph>
- ndk-gdb wurde zugunsten von ndk-gdb.py entfernt.
- Änderungen
<ph type="x-smartling-placeholder">
- </ph>
- Aktualisierung von gdb auf Version 7.10.
- Verbesserte Leistung
- Verbesserte Fehlermeldungen.
- Feste relative Projektpfade.
- Strg-C an Beenden des im Hintergrund befindlichen gdbservers angehalten.
- Verbesserte Windows-Unterstützung
- Entfernungen
<ph type="x-smartling-placeholder">
- YASM
-
- Änderungen
<ph type="x-smartling-placeholder">
- </ph>
- Aktualisierung von YASM auf Version 1.3.0.
- Änderungen
<ph type="x-smartling-placeholder">
- Bekannte Probleme
-
- x86 ASAN funktioniert derzeit nicht. Weitere Informationen finden Sie in der Diskussion findest du hier.
- Die Kombination aus Clang, x86, stlport_static und Optimierung
Ebenen über
-O0
führen zu Testfehlern mitdynamic_cast
. Weitere Informationen finden Sie in den Kommentaren. hier. - Die Ausnahmebehandlung schlägt bei c++_shared auf ARM32 häufig fehl. Der Stamm Ursache: Inkompatibilität zwischen dem von libc++abi verwendeten LLVM-Abwickler für ARM32 und libgcc. Dieses Verhalten ist keine Regression von r10e.
Android NDK r10e (Mai 2015)
- Downloads
- Downloads für diesen Release sind hier archiviert.
- Wichtige Änderungen:
-
- Die Problemumgehung für Cortex-A53 Erratum 843419 wurde in den
aarch64-linux-android-4.9
-Verknüpfung. Weitere Informationen zu dieser Problemumgehung finden Sie unter Problemumgehung für Cortex-a53 Erratum 843419. - Clang 3.6 hinzugefügt;
NDK_TOOLCHAIN_VERSION=clang
wählt jetzt diese Version aus von Clang. - Clang 3.4 wurde entfernt.
- GCC 4.6 wurde entfernt.
- Multithreading-Unterstützung in
ld.gold
wurde für alle Architekturen implementiert. Es kann werden jetzt mit oder ohne Unterstützung von Multithreading verknüpft. standardmäßig ohne.- Verwenden Sie zum Kompilieren mit Multithreading die Option
--threads
. - Wenn Sie ohne Multithreading kompilieren möchten, verwenden Sie die Option
--no-threads
.
- Verwenden Sie zum Kompilieren mit Multithreading die Option
- GDB/gdbserver wurde für alle Architekturen auf Version 7.7 aktualisiert.
- Das NDK-Paket für 32-Bit-Darwin wurde entfernt.
- Die Problemumgehung für Cortex-A53 Erratum 843419 wurde in den
- Wichtige Fehlerkorrekturen:
-
- Ein Absturz wurde behoben, der bei OpenMP-Schleifen außerhalb des Hauptthreads auftrat.
- Es wurde ein interner GCC 4.9-Compiler-Fehler (ICE) behoben, der bei der Deklaration des Nutzers aufgetreten ist.
#pragma GCC optimize ("O0")
, aber es wurde eine andere Optimierungsstufe angegeben in die Befehlszeile eingeben.pragma
hat Vorrang. - Ein Fehler, der zu einem Absturz mit folgender Fehlermeldung geführt hat, wurde behoben:
in add_stores, at var-tracking.c:6000
- Implementierung einer Behelfslösung für ein Clang 3.5-Problem, bei dem die LLVM-Autovektorisierung aktiviert ist
generiert
llvm.cttz.v2i64()
, eine Anweisung ohne Gegenstück im ARM Befehlssatz.
- Weitere Fehlerkorrekturen:
-
- Folgende Fehler in der Kopfzeile und Bibliothek wurden behoben:
PROPERTY_*
inmedia/NdkMediaDrm.h
korrigiert.sys/ucontext.h
fürmips64
korrigiert.- Clang-Versionsprüfung für
__builtin_isnan
verworfen und__builtin_isinf
. - „
android-21/arch-mips/usr/include/asm/reg.h
“ wurde hinzugefügt undandroid-21/arch-mips64/usr/include/asm/reg.h
. - Es wurde eine falsche Warnung bezüglich Arraygrenzen behoben, die von GCC 4.9 für x86 erstellt wurde, und die Funktion Array-Grenzen-Warnung, dass GCC 4.9 für ARM erzeugt wurde. Die Warnung für ARM hatte bedingungslos deaktiviert wurden.
- Clang 3.5 für
mips
undmips64
wurde korrigiert, um ein beschreibbares Element zu erstellen..gcc_except_table
-Abschnitt und entspricht somit dem GCC-Verhalten. Mit dieser Änderung können Sie um die folgende Verknüpfungswarnung zu vermeiden:.../ld: warning: creating a DT_TEXTREL in a shared object
- Eine Fehlerbehebung für
compiler-rt
Probleme, die bei Clang zu Abstürzen führten, wurde rückportiert kompiliert fürmips64
. Weitere Informationen finden Sie unter „LLVM-Problem“ 20098 - Clang 3.5-Abstürze bei Nicht-ASCII-Kommentaren wurden behoben. (Problem 81440)
- Der Fehler von
stlport collate::compare
wurde behoben, sodass-1
und1
zurückgegeben werden. Bisher Beliebige signierte Zahlen zurückgegeben. ndk-gdb
für 64-Bit-ABIs korrigiert. (Problem 118300)- Der Absturz, der beim HelloComputeNDK-Beispiel für RenderScript auftrat, wurde behoben. Android 4.4 (Android API-Level 19): Weitere Informationen finden Sie unter dieser Seite.
- Fehler bei
libc++ __wrap_iter
für GCC behoben. Weitere Informationen finden Sie unter „LLVM-Problem“ 22355 - Die
.asm
-Unterstützung für ABIx86_64
wurde korrigiert. - Es wurde eine Behelfslösung für das Problem mit GCC 4.8
stlport
implementiert. (Problem 127773) zurück - Das nachgestellte Verzeichnistrennzeichen
\\
wurde aus dem Projektpfad in Windows entfernt. (Problem 160584) - Der Fehler
no rule to make target
, der beim Kompilieren eines einzelnen Elements auftrat, wurde behoben..c
, indem Sie den Befehlndk-build.cmd
übergradle
ausführen. (Problem 66937) zurück - Die Bibliotheken
libatomic.a
undlibgomp.a
wurden hinzugefügt, die in folgende Host-Toolchains: <ph type="x-smartling-placeholder">- </ph>
aarch64-linux-android-4.9
mips64el-linux-android-4.9
mipsel-linux-android-4.9
x86_64-4.9
- Sonstige Änderungen:
-
ld.gold
füraarch64
hinzugefügt. Die Standardverknüpfung bleibtld.bfd
. Umld.gold
explizit zu aktivieren, fügen Sie-fuse-ld=gold
zumLOCAL_LDFLAGS
oderAPP_LDFLAGS
.- Die MIPS- und MIPS64-Toolchains mit
binutils-2.25
erstellt, was verbesserte R6-Unterstützung. -fstandalone-debug
(vollständige Fehlerbehebungsinformationen) wurde als Standardoption für Clang eingeführt.- „
-fstack-protector
“ wurde durch „-fstack-protector-strong
“ ersetzt für ARM-, AArch64-, X86- und X86_64-Toolchains für GCC 4.9, Clang 3.5 und Clang 3.6. - Der
--package
-Befehlszeilenschalter wurde zundk-gdb
hinzugefügt, um den Build zuzulassen um den Paketnamen zu überschreiben. (Problem 56189) zurück -
-mno-ldc1-stc1
für MIPS verworfen. Diese Option funktioniert möglicherweise nicht mit dem neuen-fpxx
und-mno-odd-spreg
oder mit FPXX ABI. - Die MIPS MSA- und R6-Erkennung wurde zu
cpu-features
hinzugefügt.
Android NDK r10d (Dezember 2014)
- Wichtige Änderungen:
-
- GCC 4.8 wurde zum Standard für alle 32-Bit-ABIs. Einstellung von GCC 4.6 und
wird es beim nächsten Release entfernt. Um das vorherige Verhalten wiederherzustellen, fügen Sie entweder
NDK_TOOLCHAIN_VERSION=4.6
zum „ndk-build“ oder--toolchain=arm-linux-androideabi-4.6
beim Ausführen hinzufügenmake-standalone-toolchain.sh
in die Befehlszeile ein. GCC 4.9 bleibt die für 64-Bit-ABIs. - Es wurde angehalten, dass
-mstackrealign
für alle x86[_64]-Toolchains standardmäßig hinzugefügt wird. Die Die NDK-Toolchain geht von einer 16-Byte-Stack-Ausrichtung aus. Standardmäßig verwendete Tools und Optionen um diese Regel zu erzwingen. Ein Benutzer, der Assembly-Code schreibt, muss sicherstellen, dass der Stapel und sicherzustellen, dass auch andere Compiler diese Regel einhalten. (GCC-Fehler 38496) - Die Address Sanitizer-Funktion wurde zur Clang 3.5-Unterstützung für die ARM- und x86-ABIs hinzugefügt. Weitere Informationen zu dieser Änderung finden Sie in der Adresse Sanitizer-Projekt enthält.
- Die Anforderung zur Verwendung von
-fPIE -pie
beim Erstellen ab API-Level 21 wurde eingeführt. Ab API-Levels 16 verwendet ndk-buildPIE
während der Erstellung. Diese Änderung hat eine Reihe von Auswirkungen, die im <ph type="x-smartling-placeholder"></ph> Problem 888 in der Entwicklervorschau. Diese Auswirkungen gelten nicht für gemeinsam genutzte Bibliotheken.
- GCC 4.8 wurde zum Standard für alle 32-Bit-ABIs. Einstellung von GCC 4.6 und
wird es beim nächsten Release entfernt. Um das vorherige Verhalten wiederherzustellen, fügen Sie entweder
- Wichtige Fehlerkorrekturen:
-
- Weitere Korrekturen in Bezug auf
<ph type="x-smartling-placeholder"></ph>
A53 Errata #835769 in der Verknüpfung „aarch64-linux-android-4.9“. In diesem Zusammenhang
übergibt die neue Option
--fix-cortex-a53-835769
, wenn-mfix-cortex-a53-835769
(standardmäßig aktiviert) ist angegeben. Weitere Informationen finden Sie hier: binutils-Nachricht und das binutils-Nachricht. - Eine Fehlerbehebung für einen libc++
sscanf/vsscanf
-Hänge, der auf API-Ebene aufgetreten ist, wurde dokumentiert. 21. Die Korrektur selbst wurde in r10c implementiert. (Problem 77988) - Ein AutoFDO-Absturz (
-fauto-profile
) wurde behoben, der mit GCC 4.9 beim folgenden Mal aufgetreten ist:-Os
wurde angegeben. (Problem 77571)
- Weitere Korrekturen in Bezug auf
<ph type="x-smartling-placeholder"></ph>
A53 Errata #835769 in der Verknüpfung „aarch64-linux-android-4.9“. In diesem Zusammenhang
übergibt die neue Option
- Weitere Fehlerkorrekturen:
-
- Folgende Fehler in der Kopfzeile und Bibliothek wurden behoben:
posix_memalign
wurde API-Level 16 hinzugefügt. Außerdem wurde ein Prototypstdlib.h
bis API-Level 16 bis 19. (Problem 77861)stdatomic.h
wurde so korrigiert, dass<atomic>
nur für C++11.- Die folgenden Header für die eigenständige Verwendung wurden geändert:
sys/user.h
undgl2ext.h
,dlext.h
,fts.h
,sgidefs.h
für API-Level 21. sys/user.h
wurde so geändert, dassmxcsr_mask
inmxcr_mask
umbenannt wird, und um den Datentyp füru_ar0
zu ändern von - Der Rückgabewerttyp
sysconf()
wurde vonint
inlong
- Fehler bei der Verarbeitung von
thumb
fürLOCAL_ARM_MODE
durch ndk-build behoben: in r10d, ndk-build fügt standardmäßigLOCAL_LDFLAGS+=-mthumb
hinzu, es sei denn, eines der gelten die folgenden Bedingungen: - Du hast
LOCAL_ARM_MODE
aufarm
gesetzt. - Sie führen einen Debug-Build aus (mit Einstellungen wie
APP_OPTIM=debug
undAndroidManifest.xml
mitandroid:debuggable="true"
), Dabei ist der ARM-Modus der Standard, um die Kompatibilität mit früheren Toolchains zu wahren. (Problem 74040) - Fehler bei
LOCAL_SRC_FILES
in ndk-build zur Verwendung von absoluten Windows-Pfaden behoben. (Problem 74333) - bash-spezifischer Code aus ndk-gdb wurde entfernt. (Problem 73338)
- Bash-spezifischer Code wurde aus
make-standalone-toolchain.sh
entfernt. (Problem 74145) - Überarbeitete Dokumentation zu einer Korrektur für
System.loadLibrary()
Transitiv Abhängigkeiten. (Problem 41790) - Es wurde ein Problem behoben, durch das 64-Bit-Pakete unter Ubuntu 14.04 nicht extrahiert werden konnten, und OS X 10.10 (Yosemite) (Problem 78148)
- Es wurde ein Problem mit
LOCAL_PCH
behoben, um die Clang-Unterstützung zu verbessern. (Problem 77575) - Verdeutlicht: „Ausführbaren Stack erforderlich“ Warnung von ld.gold. (Problem 79115)
unsigned long
um user_regs_struct* zu strukturieren.
Android NDK r10c (Oktober 2014)
- Wichtige Änderungen:
-
- Folgende Änderungen wurden an der Downloadstruktur vorgenommen:
- Jedes Paket enthält jetzt sowohl die 32- als auch die 64-Bit-Header, Bibliotheken und Tools für der jeweiligen Plattform.
- STL-Bibliotheken mit Debugging-Informationen müssen nicht mehr separat heruntergeladen werden.
- Alles, was vorher als
Android-L
bezeichnet wurde, wurde in die offizielle Veröffentlichung geändert Kennzeichnung:android-21
. - GCC 4.9 durch Rebasing auf den
google
-Zweig aktualisiert des GCC-Repositorys. Zu den Hauptunterschieden zur vorgelagerten Version von GCC 4.9 gehören: - Mit der Option
-O2
wird jetzt die Vektorisierung ohne Loop-Peeling aktiviert. aggressiv abwickeln. - Verbesserungen bei FDO und Lipo
- Clang 3.5 wird jetzt für alle Hosts unterstützt:
NDK_TOOLCHAIN_VERSION=clang
wählt jetzt Clang 3.5. Hinweise: - ARM und x86 verwenden standardmäßig den integrierten Assembler. Wenn das Probleme verursacht, verwenden Sie
-fno-integrated-as
als Behelfslösung. - Clang 3.5 gibt mehr Warnungen für nicht verwendete Flags aus, z. B.
-finline-functions
die von GCC unterstützt wird. - ART-Debugging-Modus kann jetzt auf einem Android-5.0-Gerät mit
ART als virtuelle Maschine an, indem Sie die Option
art-on
angeben. Weitere Informationen Sehen Sie sichprebuilt/common/gdb/common.setup
im Verzeichnis an, das das NDK enthält. - Keine Unterstützung mehr für Clang 3.3.
- GCC 4.6 wurde eingestellt und kann aus zukünftigen Releases entfernt werden.
- Aktualisierung von Mclinker auf Version 2.8 mit IDFA-Unterstützung (Identical Code Folding). Geben Sie ICF mithilfe der Methode
Option
--icf
. - Erweiterte
arm_neon.h
-Unterstützung in x86 und x86_64, sodass eine Abdeckung von ca. 93% der NEON-Intrinsik. Weitere Informationen zum NEON-Support: <ph type="x-smartling-placeholder">- </ph>
- Gehen Sie zum NDK Programmer's Guide (
docs/Programmers_Guide/html/
) und lesen Sie Architekturen und CPUs > Neon - Sehen Sie sich die aktualisierte Stichprobe
hello-neon
insamples/
an. - Weitere Informationen finden Sie im Intel-Leitfaden zur Portierung von ARM NEON zu Intel SSE.
- Gehen Sie zum NDK Programmer's Guide (
- Die Unterstützung von
_FORTIFY_SOURCE
inheaders/libs/android-21
wurde dokumentiert. die in r10 vorkamen (alsandroid-21
nochAndroid-L
hieß), hatte aber keine Dokumentation.
Weitere Informationen finden Sie unten im Abschnitt Wichtige Fehlerkorrekturen.
Bei der Migration von Projekten mit GCC können Sie
-Wno-invalid-command-line-argument
und-Wno-unused-command-line-argument
um die nicht verwendeten Flags zu ignorieren, bis Sie eine Entscheidung getroffen haben, was Sie längerfristig damit tun möchten. - Wichtige Fehlerkorrekturen:
-
- Ein interner Compiler-Fehler mit GCC4.9/aarch64 wurde behoben, der zu folgendem Fehler führte: Fehlermeldung (Problem 77564):
internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
- Falsche Codegenerierung von GCC4.9/arm wurde behoben. (Problem 77567)
- Ein interner Compiler-Fehler mit GCC4.9/mips in Verbindung mit Inline-Assembly wurde behoben. (Problem 77568)
- Falscher Code behoben, den GCC4.9/arm für
x = (cond) ? y : x
generiert hat. (Problem 77569)- GCC4.9/aarch64 und Clang3.5/aarch64 wurden korrigiert, um den Fehler <ph type="x-smartling-placeholder"></ph> Cortex-A53-Erratum (835769). Deaktivieren Sie die Problemumgehung, indem Sie
-mno-fix-cortex-a53-835769
- Weitere Fehlerkorrekturen:
-
- Die folgenden Header- und Bibliothekskorrekturen an
android-21
wurden vorgenommen: <ph type="x-smartling-placeholder">- </ph>
- Weitere TV-Keycodes hinzugefügt:
android/keycodes.h
android/sensor.h
wurden weitere Konstanten und sechs neue Sensorfunktionen hinzugefügt:ASensorManager_getDefaultSensorEx
,ASensor_getFifoMaxEventCount
,ASensor_getFifoReservedEventCount
,ASensor_getStringType
ASensor_getReportingMode
undASensor_isWakeUpSensor
.stdatomic.h
wurde behoben, um die Kompatibilität mit GCC 4.6 zu verbessern und Support zu bieten für den<atomic>
-Header.sys/ucontext.h
undsys/user.h
wurden allen API-Ebenen hinzugefügt. Die Dersignal.h
-Header enthält jetzt<sys/ucontext.h>
. Sie können Entfernen Sie alle vorhandenen Definitionen vonstruct ucontext
.posix_memalign
wurde den API-Ebenen 17, 18 und 19 hinzugefügt.- Die folgenden Funktionen wurden allen Architekturen hinzugefügt:
android_set_abort_message
,posix_fadvise
,posix_fadvise64
,pthread_gettid_np
. - Die erforderlichen Berechtigungen wurden zu „
native-media/AndroidManifest.xml
“ hinzugefügt Stichprobe. (Problem 106640) clock_nanosleep
undclock_settime
wurden API-Level 21 hinzugefügt. (Problem 77372) zurück- Die folgenden Symbole wurden aus allen Architekturen entfernt:
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
unddlmalloc
. - Die folgenden Funktionen wurden aus den 64-Bit-Architekturen entfernt:
basename_r
,dirname_r
,__isthreaded
,_flush_cache
(mips64). - Die folgende Funktion wurde aus den 32-Bit-Architekturen entfernt:
__signalfd4
- Der Typ des dritten Arguments wurde in folgender Datei von
size_t
zuint
geändert: die folgenden Funktionen:strtoll_l
,strtoull_l
,wcstoll_l
undwcstoull_l
. - Die folgenden Funktionen wurden in der 64-Bit-Architektur wiederhergestellt:
arc4random
,arc4random_buf
undarc4random_uniform
. cxa_*
und die Operatorennew
unddelete
wurden zurück verschoben anlibstdc++.so
. Durch diese Änderung wird das R9D-Verhalten wiederhergestellt. Vorherige Versionen von r10 Platzhalterdateien enthalten.
- Weitere TV-Keycodes hinzugefügt:
- MXU-Unterstützung in GCC 4.8 und 4.9 für mips wurde wiederhergestellt. Diese Unterstützung gab es seit dem r10 und r10b, da diese GCC-Versionen mit binutils-2.24 kompiliert wurden, unterstützen MXU nicht. Jetzt kann es losgehen.
--toolchain=
inmake-standalone-toolchain.sh
korrigiert, sodass unterstützt jetzt korrekt die Verwendung eines Suffixes, das eine Version von Clang angibt.- Die
strtod()
-Funktionen von libc++/armeabi wurden korrigiert. - Die NDK-Dokumentation in
docs/
wurde korrigiert.
- Die folgenden Header- und Bibliothekskorrekturen an
- Sonstige Änderungen:
-
cpu-features
wurde erweitert, um die ARMv8-Unterstützung für Folgendes zu erkennen: Befehlssätze: AES, CRC32, SHA2, SHA1 und 64-Bit-PMULL/PMULL2. (Problem 106360) zurück- ndk-build wurde zur Verwendung von
*-gcc-ar
geändert, das in GCC 4.8, GCC 4.9 und Clang. Clang gibt sie anstelle von*-ar
an. Diese Einstellung verbessert den LTO Support. include-fixed/linux/a.out.h
undinclude-fixed/linux/compiler.h
-Header aus dem GCC-Compiler. (Problem 73728)- Ein Problem im Zusammenhang mit
-flto
mit GCC 4.8 unter Mac OS X wurde behoben. Fehlermeldung Gelesen:
.../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so Symbol not found: _environ
- Tippfehler in
build-binary.mk.
behoben (Problem 76992) - Wichtige bekannte Probleme:
-
- Die Angabe von -Os (
-fauto-profile
) in GCC4.9 kann zu Abstürzen führen. (Problem 77571)
- Die Angabe von -Os (
Android NDK r10b (September 2014)
- Wichtige Hinweise:
-
- Aufgrund der Größenbeschränkung von 512 MB für herunterladbare Pakete sind die folgenden 32-Bit-Elemente nicht in den 32-Bit-NDK-Downloadpaketen enthalten. Stattdessen befinden sie sich in den 64-Bit-Versionen:
- Android-L-Header
- GCC 4.9
- Aktuell unterstützt das NDK nur 32-Bit-Renderscript mit Android 4.4 (API-Level 19). HelloComputeNDK (das einzige Renderscript-Beispiel) kann nicht mit einer anderen Kombination aus Renderscript (32- oder 64-Bit) und Android-Version erstellt werden.
- Um nativen Codec zu kompilieren, müssen Sie ein 64-Bit-NDK-Paket verwenden, in dem sich alle Android-L-Header befinden.
- Wichtige Fehlerkorrekturen:
- Weitere Fehlerkorrekturen:
-
stdio.h
wurde aus deninclude-fixed/
-Verzeichnissen aller GCC-Versionen entfernt. (Problem 73728)- Doppelte Headerdateien wurden aus den Windows-Paketen in den
platforms/android-L/arch-*/usr/include/linux/netfilter*/
-Verzeichnissen entfernt. (Problem 73704) - Es wurde ein Problem behoben, das verhinderte, dass Clang HelloComputeNDK erstellen konnte.
- Das Atexit-Problem wurde behoben. (Problem 66595)
- Es wurden verschiedene Korrekturen an den Dokumenten in
docs/
undsources/third_party/googletest/README.NDK
vorgenommen. (Problem 74069) - Es wurden folgende Korrekturen an den Android-L-Headern vorgenommen:
- Den Funktionen
ctype.h
undwchar.h
wurden die folgenden Funktionen hinzugefügt: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()
(Problem 73719) und 42*_l()
. cmsg_nxthdr
wurde in__cmsg_nxthdr
umbenannt.__libc_malloc_dispatch
wurde entfernt.- Der Prototyp von
ptrace()
wurde inlong ptrace(int, ...);
geändert. sha1.h
wurde entfernt.android_dlextinfo
inandroid/dlext.h
verlängert.- Annotierte
__NDK_FPABI__
für Funktionen, die Gleitkomma- oder Doppelwerte instdlib.h
,time.h
,wchar.h
undcomplex.h
empfangen oder zurückgeben.
- Sonstige Änderungen:
-
mipsel-linux-android-4.9
undmips64el-linux-android-4.9
wurden aktualisiert, Implementierung eines neuen multilib-Verzeichnislayouts und Unterstützung für gdb-7.7cpu-features
wurde optimiert, sodass mehr Arm64-Funktionen erkannt werden. (Änderungsliste 100339.)
Android NDK r10 (Juli 2014)
- Wichtige Änderungen:
-
- Drei neue ABIs mit 64-Bit hinzugefügt: arm64-v8a, x86_64 und mips64. Beachten Sie Folgendes: <ph type="x-smartling-placeholder">
- GCC 4.9 ist der Standard-Compiler für 64-Bit-ABIs. Clang ist derzeit Version 3.4.
NDK_TOOLCHAIN_VERSION=clang
funktioniert möglicherweise nicht bei arm64-v8a und mips64. - Android-L ist die erste Stufe mit 64-Bit-Unterstützung. Beachten Sie, dass diese API ist eine temporäre und nur für die L-Vorschau. Sie wird durch eine Nummer auf der API-Ebene ersetzt bei L-Release.
- Dieser Release umfasst jetzt
all32
undall64
Einstellungen fürAPP_ABI
.APP_ABI=all32
entsprichtAPP_ABI=armeabi,armeabi-v7a,x86,mips
.APP_ABI=all64
entsprichtAPP_ABI=arm64-v8a,x86_64,mips64
.APP_ABI=all
zum Auswählen aller ABIs.
- Die neue GNU libstdc++ in Android-L enthält alle
<tr1/cmath>
Bevor Sie Ihre eigene mathematische Funktion definieren, sehen Sie in_GLIBCXX_USE_C99_MATH_TR1
nach bereits eine Funktion mit diesem Namen vorhanden ist, um "Mehrfachdefinition" Fehler aus der Verknüpfung. - Die Bibliothek für CPU-Features wurde für den ARMv8-Kernel aktualisiert. Die vorhandene Die Bibliothek „cpu-features“ kann das Vorhandensein von NEON auf der ARMv8-Plattform möglicherweise nicht erkennen. Kompilieren Sie Ihre mit der neuen Version.
- Es wurde ein neues
platforms/android-L/
-API-Verzeichnis hinzugefügt. Er enthält: - Aktualisierte Bionic-Header, die sich gegenüber Android API-Levels 3 nicht geändert hatten (Cupcake) bis 19 (KitKat). Diese neue Version für Ebene L soll mit AOSP synchronisiert werden.
- Neue Medien-APIs und ein natives Codec-Beispiel
- Ein aktualisierter
Android.h
-Header für SLES/OpenSLES, der die Unterstützung für Gleitkomma-Audioformat mit einfacher Genauigkeit in AudioPlayer. - GLES 3.1- und AEP-Erweiterungen für
libGLESv3.so.
- GLES2- und GLES3-Header wurden auf die neuesten offiziellen Khronos-Versionen aktualisiert.
- GCC-4.9-Compiler zu 32-/64-Bit-ABIs hinzugefügt. GCC 4.9 ist der reine Standard-Compiler für 64-Bit-ABIs, wie bereits erwähnt. Für 32-Bit-ABIs müssen Sie GCC 4.9 explizit aktivieren, da GCC 4.6 ist immer noch die Standardeinstellung.
- Aktivieren Sie für ndk-build die 32-Bit-GCC 4.9-Erstellung durch Hinzufügen von
NDK_TOOLCHAIN_VERSION=4.9
nachApplication.mk
oder exportieren Sie es als über die Befehlszeile eingeben. - Verwenden Sie für eine eigenständige Toolchain die Option
--toolchain=
in dermake-standalone-toolchain.sh
-Script. Beispiel:--toolchain=arm-linux-androideabi-4.9.
- GDB wurde in GCC 4.8/4.9 und x86* auf Version 7.6 aktualisiert. Da GDB noch in der Version GDB-7.3.x
GCC 4.6 (Standard für ARM und MIPS) müssen Sie Folgendes festlegen:
NDK_TOOLCHAIN_VERSION=4.8
oder4.9
, um „ndk-gdb“ zu aktivieren und GDB 7.6 auszuwählen. - Die Build-Option
-mssse3
zur Unterstützung von SSSE3 wurde hinzugefügt und als Standard für ABI x86 festgelegt (Upgrade von SSE3). Das von Google veröffentlichte Image enthält keine SSSE3-Anweisungen. - Aktualisierung von GCC 4.8 auf Version 4.8.3.
- Verbesserte Unterstützung von ARM libc++ EH durch Wechsel von „gagi++“ zu libc++abi. Weitere Informationen finden Sie unter „C++ Support“. der Dokumentation. Hinweise:
- Alle Tests mit Ausnahme des Gebietsschemas sind für Clang 3.4 und GCC 4.8 jetzt erfolgreich. Weitere Informationen erhalten Sie unter "C++ Support" der Dokumentation.
- Die libc++-Bibliotheken für X86 und MIPS libc++ verwenden weiterhin gabi++.
- In GCC 4.7 und höher kann jetzt <atomic> verwendet werden.
- Sie müssen
-fno-strict-aliasing
hinzufügen, wenn Sie<list>
verwenden, da__list_imp::_end
_ Unterbrechungen verursacht. TBAA-Regeln. (Problem 61571) - Ab GCC 4.6 wird libc++ mit LIBCXX_FORCE_REBUILD:=true nicht mehr neu erstellt. Neuerstellung erfordert die Verwendung eines anderen Compilers. Beachten Sie, dass Clang 3.3 nicht getestet wurde.
- mclinker ist jetzt Version 2.7 und unterstützt Aarch64 Linux.
- Unterstützung für vorkompilierte Header für Header, die von
LOCAL_PCH
angegeben werden, hinzugefügt. (Problem 25412)
- </ph>
- Wichtige Fehlerkorrekturen:
-
- libc++ wurde behoben, sodass jetzt
std::feof
usw. kompiliert werden können (Problem 66668). - Ein Aufruf einer atomaren Bibliothek von Clang 3.3/3.4, der Abstürze in einigen der libc++- auf ABI Armeabi getestet.
- Clang 3.4-Abstürze beim Lesen von vorkompilierten Headern wurden behoben. (Problem 66657)
- Das
-O3
-Assertion von Clang 3.3/3.4 wurde für Folgendes behoben: - Folgender Absturz von Clang 3.3/3.4 wurde behoben:
llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef
(Problem 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
. (Problem 66950) - libc++ wurde behoben, sodass jetzt
- Weitere Fehlerkorrekturen:
-
- Feste Header:
- 32-Bit-
ssize_t
wurde aufint
anstelle vonlong int
geändert. WCHAR_MIN
undWCHAR_MAX
korrigiert, sodass sie passende Schilder für die Architektur, auf der sie ausgeführt werden:- X86/MIPS: signiert.
- ARM: nicht signiert.
- Um zu erzwingen, dass X86/MIPS standardmäßig auf "unsigniert" gesetzt wird, verwenden Sie
-D__WCHAR_UNSIGNED__
- Wenn Sie erzwingen möchten, dass
wchar_t
16 Bit beträgt, verwenden Sie-fshort-wchar
. - Nicht vorhandene Symbole wurden aus 32-Bit-
libc.so
entfernt undpread64
hinzugefügt.pwrite64
,ftruncate64
für Android API-Level 12 und höher (Problem 69319) Weitere Informationen Informationen finden Sie in der Commit-Nachricht zur AOSP-Änderungsliste 94137 - Die GCC-Warnung zur Neudefinition von
putchar
wurde behoben. Die Warnmeldung lautet: make-standalone-toolchain.sh --stl=libc++
wurde so korrigiert:- Kopiert
cxxabi.h
. (Problem 68001) - Wird in anderen Verzeichnissen als dem NDK-Installationsverzeichnis ausgeführt. (Probleme 67690 und 68647)
- Probleme in GCC/Windows wurden behoben, sodass Argumente nur dann zitiert werden, wenn dies zum Erstellen von Prozessen in externen Programmen. Durch diese Änderung sinkt die Wahrscheinlichkeit, dass die maximal zulässige Länge von 32 KB überschritten wird.
APP_PLATFORM
konnte nicht angepasst werden. Dieses Problem wurde behoben. Umgebungsvariable ein.- Die Implementierung von
IsSystemLibrary()
in „crazy_linker“ wurde korrigiert. verwendetstrrchr()
stattstrchr()
, um den tatsächlichen Basisnamen des Bibliothekspfads zu ermitteln. - Das Problem, dass native Audioanzeigen im Debug-Modus nicht erstellt werden konnten, wurde behoben.
- Das Problem, dass in der gdb-Datei keine extremen Gleitkommazahlen gedruckt werden können, wurde behoben. (Problem 69203)
- Das Problem, dass Clang 3.4 nicht mit
-Wl,-shared
kompiliert werden konnte (im Gegensatz zu-shared
, die hatte keine Kompilierungsprobleme). Das Problem bestand darin, dass Clang-pie
für Android hinzugefügt hat. Ziele, wenn weder-shared
noch-static
vorhanden waren. Dieses Verhalten, falsch ist, hat sich der Linker beschwert, dass-shared
und-pie
nicht koexistieren.
include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int);
(Änderungsliste 91185). - Sonstige Änderungen:
-
arm_neon.h
wurde der x86-Toolchain hinzugefügt, sodass jetzt ca. 47% der Neon 64-Bit-Typen werden derzeit nicht unterstützt. Weitere Informationen finden Sie im Abschnitt zu ARM Intrinsische Neon-Unterstützung in der x86-Dokumentation.- Portierte ARM/GOT_PREL-Optimierung (vorhanden in GCC 4.6, erstellt vom GCC-Google-Zweig) nach
ARM GCC 4.8/4.9. Durch diese Optimierung wird manchmal die Anzahl der Anweisungen reduziert, wenn auf den globalen
Variablen. Sehen Sie sich als Beispiel das Skript build.sh in
$NDK/tests/build/b14811006-GOT_PREL-optimization/
- Die ARM-Version für STL gabi++, stlport und libc++ wurde hinzugefügt. Sie haben jetzt sowohl das Symbol als auch den Daumen .
- Es ist jetzt möglich, das Skript "make-standalone-toolchain.sh" mit
--toolchain=x86_64-linux-android-4.9
, entspricht--toolchain=x86_64-4.9
.
Android NDK r9d (März 2014)
- Wichtige Änderungen:
-
- Zusätzliche Unterstützung für den Clang 3.4-Compiler. Die
Die Option
NDK_TOOLCHAIN_VERSION=clang
wählt jetzt Clang 3.4. GCC 4.6 ist immer noch der Standard-Compiler. APP_ABI=armeabi-v7a-hard
hinzugefügt mit zusätzliche Multilib-Option-mfloat-abi=hard
. Diese Optionen gelten für Verwendung mit ARM GCC 4.6/4.8 und Clang 3.3/3.4 (die den Assembler, den Linker, und libs). Beachten Sie bei Verwendung dieser Optionen die folgenden Änderungen:- Fügen Sie beim Ausführen des Skripts
ndk-build
den Parameter folgende Optionen für das Ziel „armeabi-v7a“:TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1 TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
Die erstellte Bibliothek wird inlibs/armeabi-v7a
kopiert. Für Marken wie erwartet verhalten, können Sie nicht sowohlarmeabi-v7a
als aucharmeabi-v7a-hard
als Ziele festlegen (z.B. in der Zeile APP_ABI=). Andernfalls wird einer von ihnen ignoriert. Hinweis:APP_ABI=all
ist immer noch gleichbedeutend mitarmeabi armeabi-v7a x86 mips
. - Mit dem Skript
make-standalone-toolchain.sh
wird eine Kopie von zusätzliche Bibliotheken unter/hard
-Verzeichnissen. Fügen Sie die obigenCFLAGS
undLFLAGS
Ihrem Makefile, um GCC oder Clang für die Verknüpfung zu aktivieren Bibliotheken in/hard
. - Yasm-Assembler und
LOCAL_ASMFLAGS
hinzugefügt undEXPORT_ASMFLAGS
für x86 Ziele. Das Skriptndk-build
verwendetprebuilts/*/bin/yasm*
zum Erstellen vonLOCAL_SRC_FILES
, die haben die Erweiterung.asm
. - Aktualisierung von MClinker auf Version 2.6.0, wodurch
-gc-sections
hinzugefügt wird Support. - Experimentelle Unterstützung für libc++ hinzugefügt (Upstream r201101). Dieses neue
indem Sie die folgenden Schritte ausführen:
<ph type="x-smartling-placeholder">
- </ph>
- Fügen Sie
APP_STL := c++_static
oderAPP_STL := c++_shared
inApplication.mk
hinzu. Sie können den Build mitLIBCXX_FORCE_REBUILD := true
aus der Quelle neu erstellen. make-standalone-toolchain.sh --stl=libc++
ausführen um eine eigenständige Toolchain mit libc++-Headern/lib zu erstellen.
CPLUSPLUS-SUPPORT.html
. (Problem 36496) - Fügen Sie
- Zusätzliche Unterstützung für den Clang 3.4-Compiler. Die
Die Option
- Wichtige Fehlerkorrekturen:
-
- Ein nicht abgefangener Wurf, der von einem unerwarteten Inhalt abgefangen wurde, wurde behoben. Ausnahme-Handler für GCC 4.6/4.8 ARM EABI. (GCC-Problem 59392)
- GCC 4.8 wurde korrigiert, sodass nun Teilabschnitte korrekt aufgelöst werden. einer Vorlage mit Ein abhängiges Nicht-Typ-Vorlagenargument. (GCC-Problem 59052)
- Der vordefinierten Python-Datei wurden weitere Module hinzugefügt (Problem 59902):
<ph type="x-smartling-placeholder">
- </ph>
- Mac OS X:
zlib
,bz2
,_curses
,_curses_panel
,_hashlib
_ssl
- Linux:
zlib
,nis
,crypt
,_curses
und_curses_panel
- Mac OS X:
- Fehler bei gdbserver für x86 und MIPS behoben
event_getmsg_helper
- Es wurden zahlreiche Probleme in der RenderScript NDK-Toolchain behoben, darunter: Probleme mit der Kompatibilität älterer Geräte und der C++-Reflexion.
- Weitere Fehlerkorrekturen:
-
- Fehlerkorrekturen in der Kopfzeile:
<ph type="x-smartling-placeholder">
- </ph>
- Fehlendes
#include <sys/types.h>
behoben inandroid/asset_manager.h
für Android API-Level 13 und höher. (Problem 64988) - Fehlendes
#include
behoben inandroid/rect_manager.h
für Android API-Level 14 und höher. JNICALL
zuJNI_OnLoad
und „JNI_OnUnload
“ injni.h
. Hinweis:JNICALL
ist definiert als__NDK_FPABI__
. Weitere Informationen finden Sie untersys/cdefs.h
- Die folgenden Header wurden aktualisiert, damit sie eingefügt werden können ohne dass Sie Abhängigkeiten manuell einschließen (Problem 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
- Fehlendes
sys/cachectl.h
wurde für alle Architekturen hinzugefügt. MIPS Entwickler können jetzt diesen Header einfügen, anstatt#ifdef __mips__
zu schreiben.- Das Problem
platforms/android-18/include/android/input.h
wurde behoben, indem__NDK_FPABI__
zu Funktionen hinzugefügt wurde, die Funktionen übernehmen oder zurückgeben. Gleitkomma- oder Double-Werte enthalten. - Der falsch eingestellte MIPS
struct stat
wurde korrigiert. zum 64-Bit-Gegenstück für Android API-Level 12 und höher. Das ist falsch Einstellung war in Version r9c eingeführt. __PTHREAD_MUTEX_INIT_VALUE
definiert__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE
, und__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE
für Android API und niedriger.scalbln
,scalblnf
und hinzugefügtscalblnl
bis x86libm.so
für APIs 18 und höher.- Tippfehler in
sources/android/support/include/iconv.h
(Problem 63806)
- gabi++
std::unexpected()
wurde korrigiert, um anzurufenstd::terminate()
, damit kann ein benutzerdefinierterstd::terminate()
-Handler ausgeführt werden.- gabi++ wurde korrigiert, sodass
std::nullptr
erkannt wird.- Korrigierte Beispiele Teapot und MoreTeapots: <ph type="x-smartling-placeholder">
- </ph>
- Ein Problem mit den Tegra 2- und 3-Chips durch Ändern des spekulären Chips gelöst mit mittlerer Genauigkeit. Werte für die Spiegelleistung können jetzt kleiner sein als 1,0.
- Die Samples wurden so geändert, dass das Drücken der Lautstärketaste wieder funktioniert
immersiven Modus und
SYSTEM_UI_FLAG_IMMERSIVE_STICKY
Die Bildschirmdrehung funktioniert nicht löstonSystemUiVisibilityChange
aus und stellt daher keine immersiven Modus.
- Das hinzuzufügende Skript
ndk-build
wurde korrigiert-rpath-link=$SYSROOT/usr/lib
und-rpath-link=$TARGET_OUT
, umld.bfd
für folgende Zwecke zu verwenden: Ausführbare Links. (Problem 64266)-Bsymbolic
wurde aus allen STL-Builds entfernt.- Das Problem
ndk-gdb-py.cmd
wurde durch Festlegen vonSHELL
behoben als eine Umgebungsvariable statt sie an diepython.exe
, wodurch die Einstellung ignoriert wird. (Problem 63054)- Das
make-standalone-toolchain.sh
-Skript wurde korrigiert, Mit der Option--stl=stlport
werden die Header „abi++“ anstelle von symlinken, Diecmd.exe
- und MinGW-Shells verstehen nicht, von cygwin erstellte Symlinks. - Fehlerkorrekturen in der Kopfzeile:
<ph type="x-smartling-placeholder">
- Sonstige Änderungen:
-
- Ausführungsberechtigungen wurden auf alle
*cmd
Scripts angewendet zuvor nur für die Verwendung in dercmd.exe
-Shell vorgesehen, falls verwenden Entwickler lieberndk-build.cmd
in Cygwin empfohlenes Skript fürndk-build
. - Die Geschwindigkeit von
make-standalone-toolchain.sh
wurde verbessert durch Verschieben statt Kopieren, wenn das angegebene Zielverzeichnis ist nicht vorhanden.
- Ausführungsberechtigungen wurden auf alle
Android NDK r9c (Dezember 2013)
Diese Version wurde nur zur Fehlerbehebung verwendet.
- Wichtige Fehlerkorrekturen:
-
- Ein Problem mit GCC 4.8 ARM wurde behoben, bei dem der Stackpointer zu früh wiederhergestellt werden. Dieses Problem hat dazu geführt, dass der Framezeiger zuverlässig auf eine Variable im Stapelframe. (GCC-Problem 58854)
- Es wurde ein Problem mit GCC 4.8 libstdc++ behoben, bei dem ein Fehler in std::nth_element verursachte die Generierung von Code, der eine zufällige Segmentierungsfehler. (Problem 62910)
- GCC 4.8 ICE in cc1/cc1plus mit
-fuse-ld=mcld
, sodass der folgende Fehler nicht mehr auftritt:cc1: internal compiler error: in common_handle_option, at opts.c:1774
-mhard-float
-Unterstützung behoben für mathematische Funktionen von__builtin
. Laufende Informationen zu Fehlerbehebungen für-mhard-float
mit STL, bitte lesen Sie Ausgabe 61784.
- Weitere Fehlerkorrekturen:
-
- Fehlerkorrekturen in der Kopfzeile:
<ph type="x-smartling-placeholder">
- </ph>
- Prototyp von
poll
inpoll.h
zupoll(struct pollfd *, nfds_t, int);
geändert. utimensat
wurdelibc.so
für Android hinzugefügt API-Ebenen 12 und 19. Diese Bibliotheken sind jetzt in allen Android-APIs die Ebenen 12 bis 19.futimens
wurde für Android API inlibc.so
eingeführt Level 19.- Fehlende
clock_settime()
undclock_nanosleep()
bistime.h
für Android API-Level 8 und höher. - Hinzugefügt:
CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,
undCLOCK_BOOTTIME_ALARM
intime.h.
- Veraltete
CLOCK_REALTIME_HR
undCLOCK_MONOTONIC_HR.
- Prototyp von
- In Samples Teapot, MoreTeapots und
source/android/ndk_helper
: <ph type="x-smartling-placeholder">- </ph>
- Sie wurden so geändert, dass sie jetzt für Armeabi-v7a ein Hard-Float-Abi verwenden.
- Aktualisierung des immersiven Modus auf Android API-Level 19 und höher liegen.
- Behebung eines Problems mit
Check_ReleaseStringUTFChars
in/system/lib/libdvm.so
, die auf x86-Geräten zu Abstürzen geführt haben.
ndk-build
-Fehler behoben, der in cygwin aufgetreten ist, wenn das NDK Paket ist über Symlink referenziert wird.ndk-build.cmd
-Fehler behoben, der in Windows aufgetreten istcmd.exe
, wennLOCAL_SRC_FILES
enthält absolute Pfade. (Problem 69992)- Das Skript
ndk-stack
fährt jetzt fort, auch wenn es nicht geparst werden kann. einen Frame, weil es nicht möglich ist, eine Routine, einen Dateinamen oder eine Zeilennummer zu finden. In einer der folgenden In diesen Fällen wird??
ausgegeben. - Der
ndk-stack
-Stack für Windows-x64_64-Ziele wurde korrigiert, sodass nicht mehr fälschlicherweise einer Frame-Zeile mit einer Zeile im Abschnittstack:
, derpc
nicht enthält,eip
oderip
. Hier einige Beispiele:I/DEBUG ( 1151): #00 5f09db68 401f01c4 /system/lib/libc.so
- „Gabi++“ wurde korrigiert:
<ph type="x-smartling-placeholder">
- </ph>
- Verwendet „malloc()“ nicht, um „thread-local“ in C++ zuzuordnen Objekte.
- Vermeidet Deadlocks in gabi++ in Fällen, in denen libc.debug.malloc ist in den Builds der Android-Plattform "userdebug/eng" ungleich null.
- Fehlerkorrekturen in der Kopfzeile:
<ph type="x-smartling-placeholder">
- Sonstige Änderungen:
-
LOCAL_EXPORT_LDFLAGS
wurde hinzugefügt.- Einführung der
NDK_PROJECT_PATH=null
-Einstellung zur Verwendung in einem integriertes Build-System, in dem Optionen explizit anndk-build
. Mit dieser Einstellung nimmtndk-build
folgende Aktion vor: nachNDK_PROJECT_PATH.
suchen. Mit dieser Einstellung wird auch verhindert, Variablen aus Standardeinstellungen von NDK_PROJECT_PATH ableiten. Daher müssen die folgenden Variablen jetzt explizit angegeben werden (mit ihrer Standardeinstellung Werte, sofern vorhanden):NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG
(optional, Standardwert 0) und andere Werte fürAPP_*
inApplication.mk
enthalten. APP_ABI
kann jetzt in einer durch Kommas getrennten Liste aufgezählt werden. Für Beispiel:APP_ABI := "armeabi,armeabi-v7a"
- Bietet die Möglichkeit, den gesamten STL-Prozess mit Debugging-Informationen in einem
optionales, separates Paket namens
android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip
mit dem Option-g
. Diese Option hilft das Skriptndk-stack
dabei, einen Stack-Dump in STL besser zu machen. Diese Änderung sollte sich nicht auf den Code bzw. die Größe der endgültigen, entfernten Datei auswirken. hello-jni
Stichproben wurden erweitert, umAPP_ABI
zu melden Kompilierung.- Das
ar
-Tool im deterministischen Modus verwendet (Option)-D
) zum Erstellen statischer Bibliotheken. (Problem 60705)
Android NDK r9b (Oktober 2013)
- Wichtige Änderungen:
-
include/android/*h
undmath.h
wurden für alle Android API-Level bis zu aktualisiert. 18, einschließlich der Hinzufügung der Stufen 13, 15, 16 und 17. Informationen zu hinzugefügten APIs finden Sie unter Commit-Nachrichten für Änderungen 68012 und 68014. (Probleme 47150, 58528 und 38423)- Unterstützung für Android API-Level 19, einschließlich Renderscript-Bindung, hinzugefügt.
- Unterstützung für
-mhard-float
im vorhandenen armeabi-v7a-ABI hinzugefügt. Weitere Informationen Informationen und aktuelle Einschränkungen für Clang finden Sie untertests/device/hard-float/jni/Android.mk
- Von GNU Compiler Collection (GCC) 4.8 zu 4.8.2 migriert und Diagnosefarbe hinzugefügt
Support. Um Diagnosefarben zu aktivieren, legen Sie
-fdiagnostics-color=auto
fest.-fdiagnostics-color=always,
oder exportieren SieGCC_COLORS
wie unten gezeigt:GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
Weitere Informationen finden Sie unter GCC Sprachunabhängige Optionen. - Es wurden zwei neue Beispiele hinzugefügt, um die Funktionen von OpenGL ES 3.0 zu demonstrieren: Teapot und MoreTeapots. Diese Beispiele werden auf Geräten mit Android 4.1 (API-Level 16) und höher ausgeführt.
- Unterstützung für GCC 4.7 und Clang 3.2 eingestellt, die in den nächsten Veröffentlichung.
- Wichtige Fehlerkorrekturen:
-
- Problem behoben, bei dem in ARM GCC 4.6
thumb2
kein relativer 16-Bit-Jump generiert werden konnte Tabellen. (GCC-Problem) - Interner GCC 4.8-Compiler-Fehler (ICE) bei
g++.dg/cpp0x/lambda/lambda-defarg3.C
(Änderung 62770, GCC-Problem) - Es wurde ein Problem behoben, bei dem ausführbare Windows 32-Bit-
*-gdb.exe
-Dateien nicht gestartet werden konnten. (Problem 58975) - Fehler in GCC 4.8 ICE beim Erstellen einer Bullet-Bibliothek wurden behoben. Die Fehlermeldung lautet:
internal compiler error: verify_flow_info failed
(Problem 58916, GCC-Problem) - GDB/ARM-Build geändert, um
ARM.exidx
-Daten für das Entspannen im Prologuecode zu überspringen und Der Befehl (set arm exidx-unwinding
) wurde hinzugefügt, um das Abwickeln von exidx-basierten Stacks zu steuern. (Problem 55826) - Behebung eines MIPS-Compilerproblems von Clang 3.3, bei dem HI- und LO-Register falsch waren wiederverwendet werden.
- Ein Problem mit MIPS 4.7 ICE in
dbx_reg_number
wurde behoben. Die Fehlermeldung lautet folgt:external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
(GCC-Patch)
- Problem behoben, bei dem in ARM GCC 4.6
- Weitere Fehlerkorrekturen:
-
- Fehlerkorrekturen in der Kopfzeile
<ph type="x-smartling-placeholder">
- </ph>
- ARM
WCHAR_MIN
undWCHAR_MAX
wurden entsprechend korrigiert: (die X86/MIPS-Versionen sind signiert). Definieren Sie_WCHAR_IS_ALWAYS_SIGNED
für das alte Verhalten wiederherzustellen. (Problem 57749) include/netinet/tcp.h
wurde so korrigiert, dass erTCP_INFO
-State-Enum enthielt. (Problem 38881)- Das
cdefs_elh.h
-Makro_C_LABEL_STRING
wurde so korrigiert, dass es nicht mehr generiert wird Warnungen in der GCC 4.8-Toolchain, wenn der C++11-Modus verwendet wird. (Problem 58135, Problem 58652) - Die nicht vorhandenen Funktionen
imaxabs
undimaxdiv
wurden aus der Kopfzeile entferntinttypes.h
- Ein Problem mit den Rückgabewerten von
pthread_exit()
undpthread_self()
wurde behoben. (Problem 60686) - Fehlende Funktion
mkdtemp()
hinzugefügt, die bereits inbionic
vorhanden ist Headerstdlib.h
.
- ARM
- Das Problem bei der Erstellung von
samples/gles3jni
mit Clang auf Android API-Level 11 wurde behoben. - Der MCLinker wurde korrigiert, sodass die folgenden Optionen mehrmals vorkommen konnten:
-gc-sections
und--eh-frame-hdr
. - MCLinker akzeptiert jetzt die Option
--no-warn-mismatch
nicht mehr. - Die Option „
cpu-features
“ wurde so geändert, dass nicht davon ausgegangen wird, dass alle VFPv4-Geräte IDIV unterstützen. Mit dieser Option wird IDIV nur noch Geräten auf der weißen Liste hinzugefügt, einschließlich Nexus 4. (Problem 57637) - Problem behoben, bei dem
android_native_app_glue.c
fälschlicherweise Fehler in einem Ereignis protokollierte Vorableitungsvorgänge. - Fehler beim Beenden von
gabi++
-Vorgängen und unerwartetem_handler behoben. Thread-sicher. - Mehrere Probleme mit der
-integrated-as
-Option von Clang behoben, die bestanden werden kann Tests fürssax-instructions
undfenv
. - Der Compiler GCC 4.6/4.7/4.8 wurde so korrigiert, dass die Verknüpfungsoption
--eh-frame-hdr
gleichmäßig übergeben wird. für statische ausführbare Dateien. Weitere Informationen finden Sie in der GCC-Patch - Der zusätzliche Apostroph in
CPU-ARCH-ABIS.html
wurde korrigiert. Weitere Informationen finden Sie unterNDK-DEPENDS.html
(Problem 60142) - Zusätzliche Anführungszeichen in der ndk-build-Ausgabe unter Windows wurden korrigiert. (Problem 60649)
- Clang 3.3 wurde korrigiert, um die integrierten, atomaren Operationen von ARM wie
__atomic_fetch_add
,__atomic_fetch_sub
und__atomic_fetch_or
. - Clang 3.3 ICE mit benutzerdefiniertem
vfprintf
wurde korrigiert. (Clang-Problem)
- Fehlerkorrekturen in der Kopfzeile
<ph type="x-smartling-placeholder">
- Sonstige Änderungen:
-
- OpenMP wurde für alle GCC-Builds aktiviert. Fügen Sie zur Verwendung dieser Funktion die folgenden Flags zu Ihrem
Build-Einstellungen:
LOCAL_CFLAGS += -fopenmp LOCAL_LDFLAGS += -fopenmp
Codebeispiele finden Sie untertests/device/test-openmp
. - Die Größe von
ld.mcld
wurde erheblich reduziert (1,5 MB gegenüberld.bfd
3,5 MB undld.gold
7,5 MB), was zu einer Geschwindigkeitsverbesserung von ca.20 % führt. LOCAL_CONLYFLAGS
undAPP_CONLYFLAGS
zur Angabe hinzugefügt -Optionen nur für C, aber nicht für C++. Die vorhandeneLOCAL_CFLAGS
undAPP_CFLAGS
werden auch für die Kompilierung in C++ verwendet (um kann die meisten Optionen zweimal angegeben werden. Daher schlagen Optionen wie-std=gnu99
möglicherweise in g++-Builds mit einer Warnung und clang++-Builds mit einem Fehler.gabi++
-Array-Hilfsfunktionen wurden hinzugefügt.- Die GCC-Builds wurden so geändert, dass alle
libgcc.a
-Dateien mit-funwind-tables
, damit der Stapel an zuvor blockierten Elementen vorbeigezogen werden kann Punkte, wie z. B.__aeabi_idiv0
. - Unterstützung für Ingenic MXU in MIPS GCC4.6/4.7/4.8 mit der neuen
-mmxu
hinzugefügt Option. - Erweiterte MIPS GCC4.6/4.7/4.8
-mldc1-sdc1
zur Steuerung von ldxc1/sdxc1 auch - Verrückte Verknüpfung hinzugefügt. Weitere Informationen finden Sie unter
sources/android/crazy_linker/README.TXT
bitmap-plasma
wurde so korrigiert, dass Inhalte im Vollbildmodus statt 200 x 200 Pixel dargestellt werden. Bereich.- Die Größe der Linux- und Darwin-Toolchain konnte durch das Erstellen von Symlinks zu identischen Dateien um 25% reduziert werden.
- OpenMP wurde für alle GCC-Builds aktiviert. Fügen Sie zur Verwendung dieser Funktion die folgenden Flags zu Ihrem
Build-Einstellungen:
Android NDK r9 (Juli 2013)
- Wichtige Änderungen:
-
- Unterstützung für Android 4.3 (API-Level 18) hinzugefügt. Weitere Informationen finden Sie unter
STABLE-APIS.html
und neue Codebeispiele insamples/gles3jni/README
. - Header und Bibliotheken für OpenGL ES 3.0 wurden hinzugefügt, das unter Android 4.3 unterstützt wird. (API-Level 18) und höher.
- Der NDK-Compiler (GNU Compiler Collection) 4.8 wurde hinzugefügt. Da GCC 4.6 immer noch
standardmäßig aktiviert ist, müssen Sie diese Option explizit aktivieren:
<ph type="x-smartling-placeholder">
- </ph>
- Für
ndk-build
-Builds exportieren SieNDK_TOOLCHAIN_VERSION=4.8
oder unterApplication.mk
hinzufügen. - Verwenden Sie für eigenständige Builds die Option
--toolchain=
inmake-standalone-toolchain.sh
, z. B.:
--toolchain=arm-linux-androideabi-4.8
Hinweis: Die Option
-Wunused-local-typedefs
wird durch-Wall
aktiviert. Seien Füge__attribute__((unused))
hinzu, wenn du Assertions zur Kompilierungszeit wie diese verwendest:sources/cxx-stl/stlport/stlport/stl/config/features.h
, Zeile 311. Weitere Informationen finden Sie unter 55460 ändernHinweis: In GCC 4.7 und höher generieren ARM-Compiler nicht ausgerichteten Zugriffscode, indem sie Standard für ARMv6- und höhere Build-Ziele. Möglicherweise müssen Sie den
-mno-unaligned-access
-Build-Option beim Erstellen für Kernel, die nicht unterstützen für diese Funktion. - Für
- Unterstützung für Clang 3.3 hinzugefügt. Build-Option
NDK_TOOLCHAIN_VERSION=clang
wird jetzt standardmäßig Clang 3.3 ausgewählt.Hinweis: Sowohl GCC 4.4.3 als auch Clang 3.1 wurden verworfen und werden aus dem nächsten NDK entfernt. Veröffentlichung.
- GNU Project Debugger (GDB) wurde aktualisiert, um Python 2.7.5 zu unterstützen.
- MCLinker wurde zur Unterstützung von Windows-Hosts hinzugefügt. Seit
ld.gold
sofern verfügbar, soweit verfügbar, müssen Sie-fuse-ld=mcld
in derLOCAL_LDFLAGS
oderAPP_LDFLAGS
, um MCLinker zu aktivieren. - Das
ndk-depends
-Tool, das ELF-Bibliotheksabhängigkeiten ausgibt, wurde hinzugefügt. Weitere Informationen findest du unterNDK-DEPENDS.html
. (Problem 53486)
- Unterstützung für Android 4.3 (API-Level 18) hinzugefügt. Weitere Informationen finden Sie unter
- Wichtige Fehlerkorrekturen:
-
- Ein potenzielles Problem bei der Ereignisverarbeitung in
android_native_app_glue
wurde behoben. (Problem 41755) - Der ARM/GCC-4.7-Build wurde korrigiert, um eine ausreichende Ausrichtung für das Laden und Speichern von NEON zu generieren Anweisungen VST und VLD. (GCC-Problem 57271)
- Ein interner GCC 4.4.3/4.6/4.7-Compiler-Fehler (ICE) für einen konstanten negativen Index wurde behoben. -Wert in einem String-Literal. (Problem 54623)
- GCC 4.7-Segmentierungsfehler für eine konstante Initialisierung mit einer Objektadresse wurde behoben. (Problem 56508)
- Fehler in GCC 4.6 ARM-Segmentierung für
-O
-Werte bei Verwendung von Boost behoben 1.52.0. (Problem 42891) libc.so
undlibc.a
wurden korrigiert, um diewait4()
-Funktion zu unterstützen. (Problem 19854)- Die x86-Dateien libc.so und libc.a wurden aktualisiert, sodass sie
clone()
enthalten. . - Der Fehler
LOCAL_SHORT_COMMANDS
, bei dem sich die Dateilinker.list
befand, wurde behoben. leer oder nicht verwendet. - Der GCC-MIPS-Build unter Mac OS wurde so korrigiert, dass CFI-Anweisungen nicht verwendet werden können.
ld.mcld --eh-frame-hdr
schlägt häufig fehl. - Ein interner Clang 3.2-X86/MIPS-Compiler-Fehler in
llvm/lib/VMCore/Value.cpp
wurde behoben. (Änderung 59021) - Der Absturz beim 64-Bit-Windows-Assembler in GCC 4.7 wurde behoben. (Fehler:
out of memory allocating 4294967280 bytes
). - Das
ndk-gdb
-Skript wurde aktualisiert, sodass die Aktionen--start
oder--launch
ausgeführt werden. Warten Sie jetzt auf den GNU Debug Server, damit er zuverlässiger die festgelegten Haltepunkte erreichen kann. zu Beginn des Ausführungspfads (z. B. Haltepunkte im JNI-Code). (Problem 41278)Hinweis: Diese Funktion erfordert jdb und gibt eine Warnung zu ausstehenden Haltepunkten aus. Geben Sie die Option
--nowait
an, um das vorherige Verhalten wiederherzustellen. - Ein GDB-Absturz bei leerer Bibliotheksliste wurde behoben.
- Ein GDB-Absturz wurde behoben, der bei Verwendung eines
stepi
-Befehls nach einembx pc
- oderblx pc
Hinweis zu „Daumen hoch“. (Problem 56962, Problem 36149) - Fehler bei MIPS
gdbserver
behoben, um nachDT_MIPS_RLD_MAP
statt nachDT_DEBUG
(Problem 56586) - Es wurde eine zirkuläre Abhängigkeit im Skript ndk-build behoben, z. B. wenn A->B und B->B, dann wurde B aus dem Build entfernt. (Problem 56690)
- Ein potenzielles Problem bei der Ereignisverarbeitung in
- Weitere Fehlerkorrekturen:
-
- Das Skript
ndk-build
wurde korrigiert, sodass Sie eine Version von Clang jetzt als Befehlszeilenoption (z.B.NDK_TOOLCHAIN_VERSION=clang3.2
. Bisher wurde nur die Angabe der Version als Umgebungsvariable funktioniert. - Die gabi++-Größe von
_Unwind_Exception
wurde für MIPS-Build-Ziele auf 24 festgelegt, wenn mithilfe des Clang-Compilers. (Änderung 54141) - Das Skript
ndk-build
wurde korrigiert, damit die erstellten Bibliotheken tatsächlich werden aus Projekten entfernt, die vordefinierte statische Bibliotheken enthalten, wenn diendk-build clean
-Befehl. (Änderung 54461, Change 54480) - Die Option
NDK_ANALYZE=1
ist jetzt weniger ausführlich. gnu-libstdc++/Android.mk
wurde korrigiert, sodass jetzt einbackward/
-Pfad für Builds enthalten ist. die Abwärtskompatibilität nutzen. (Problem 53404)- Ein Problem wurde behoben, bei dem
stlport new
gelegentlich zufällige Werte zurückgibt. ndk-gdb
wurde so korrigiert, dass es der Reihenfolge vonCPU_ABIS
, nicht vonAPP_ABIS
entspricht. (Problem 54033)- Es wurde ein Problem behoben, bei dem der 64-Bit-NDK-Build unter macOSX den falschen Pfad für Compiler. (Problem 53769)
- Build-Skripts zur Erkennung von 64-Bit-Windows Vista wurden korrigiert. (Problem 54485)
- Der x86-
ntonl/swap32
-Fehler "invalid 'asm': operand number out of range
" wurde behoben. (Problem 54465, Change 57242) ld.gold
wurde so korrigiert, dass Stringliterale zusammengeführt werden.ld.gold
wurde so korrigiert, dass große Symbole korrekt ausgerichtet werden können.ld.gold
wurde aktualisiert, um die Option--sort-section=name
zu aktivieren.- In GCC 4.4.3/4.6/4.7 wurde ein Fehler behoben, durch den die Option
-export-dynamic
für statisch verknüpfte Programme. GCC fügt keinen.interp
-Abschnitt mehr für statische verknüpften Programmen. - Der
stlport
-Kompilierungsfehler in GCC 4.4.3 über inkonsistentetypedef
wurde behoben. von_Unwind_Control_Block
. (Problem 54426) - Fehler in
awk
-Skripts wurden behoben, umAndroidManifest.xml
-Dateien zu verarbeiten, die in erstellt wurden. Windows, das nachgestellte\r
-Zeichen enthält und Build-Fehler verursachen kann. (Problem 42548) - Fehler bei
make-standalone-toolchain.sh
behoben, um denprebuilts/
zu prüfen um zu ermitteln, ob der Host 32-Bit oder 64-Bit ist. - Die Option
-integrated-as
in Clang 3.2 wurde korrigiert. - Die Handler-Daten des kompakten ARM EHABI-Modells
pr1
undpr2
von Clang 3.2 wurden korrigiert. - Die Clang-Option
-mllvm -arm-enable-ehabi
wurde hinzugefügt, um den folgenden Clang-Fehler zu beheben:clang: for the -arm-enable-ehabi option: may only occur zero or one times!
- Ein Build-Fehler wurde behoben, bei dem kein
uses-sdk
-Element in der Anwendung vorhanden war. Manifests. (Problem 57015)
- Das Skript
- Sonstige Änderungen:
-
- Fehlerbehebungen in der Kopfzeile
<ph type="x-smartling-placeholder">
- </ph>
- Die Header wurden geändert, um
__set_errno
zu einer Inline-Funktion zu machen, da__set_errno
inerrno.h
wurde verworfen undlibc.so
wurde eingestellt exportiert. elf.h
wurde so geändert, dassstdint.h
enthalten ist. (Problem 55443)sys/un.h
wurde so korrigiert, dass es unabhängig von anderen Headern eingefügt wurde. (Problem 53646)- Der Fehler in der gesamten
MotionEvent_getHistorical
-API-Familie wurde behoben,const AInputEvent* motion_event
. (Problem 55873) malloc_usable_size
aufconst void*
korrigiert. (Problem 55725)- stdint.h wurde korrigiert, um die Kompatibilität mit C99 zu verbessern. (Änderung 46821)
wchar.h
wurde so geändert, dassWCHAR_MAX
undWCHAR_MIN
- Die
<inttypes.h>
-Deklaration für die zeigerbezogenenPRI
undSCN
-Makros. (Problem 57218) - Der
sys/cdefs.h
-Header wurde so geändert, dass__WCHAR_TYPE__
32-Bit ist. für API-Ebenen unter 9, was bedeutet, dasswchat_t
für alle API-Ebenen. Wenn Sie das vorherige Verhalten wiederherstellen möchten, definieren Sie die_WCHAR_IS_8BIT
booleschen Variablen. (Problem 57267)
- Die Header wurden geändert, um
- Zusätzliche Formatierungen in NDK
docs/
und verschiedene Fehlerbehebungen in der Dokumentation hinzugefügt. - Unterstützung für ein Thin-Archive-Verfahren beim Erstellen statischer Bibliotheken wurde hinzugefügt. (Problem 40303)
- Das Skript
make-standalone-toolchain.sh
wurde aktualisiert, umstlport
zu unterstützen. Bibliothek zusätzlich zugnustl
, wenn Sie die Option--stl=stlport
. Weitere Informationen findest du unterSTANDALONE-TOOLCHAIN.html
. - Das Skript
make-standalone-toolchain.sh
wurde aktualisiert, sodass das Mit der Option--llvm-version=
werden die$TOOLCHAIN_PREFIX-clang
und$TOOLCHAIN_PREFIX-clang++
-Skripts zusätzlich zuclang
undclang++
, um die versehentliche Verwendung der Clang- und Clang++-Definitionen des Hosts zu vermeiden. - Es wurden zwei Flags hinzugefügt, um zwei Optimierungen in Upstream-Clang wieder zu aktivieren, aber deaktiviert in
NDK für bessere Kompatibilität mit von GCC kompilierten Codes:
<ph type="x-smartling-placeholder">
- </ph>
- Es wurde ein
-fcxx-missing-return-semantics
-Flag hinzugefügt, um fehlende Elemente wieder zu aktivieren. Return Semantik in Clang 3.2+. Normalerweise sollten alle Pfade mit einem Rückgabewert enden. für eine wertrückführende Funktion. Ist dies nicht der Fall, fügt Clang Undefinierte Anweisung (oder Trap im Debug-Modus) im Pfad ohne Rückgabe . Wenn Sie sicher sind, dass Ihr Code korrekt ist, verwenden Sie diese Markierung, Optimierungstool, um das undefinierte Verhalten auszunutzen. Wenn du dir nicht sicher bist, verwenden Sie dieses Flag. Der Anrufer erhält möglicherweise trotzdem einen zufälligen falschen Wert, aber der wird es nicht ausgenutzt und die Fehlerbehebung erschwert. -fglobal-ctor-const-promotion
-Flag zum erneuten Aktivieren hinzugefügt Globale Variablen mit statischem Konstruktor zu Konstanten hochstufen. Mit dieser Markierung der LLVM versucht, den globalen Variablenoptimierungsdurchlauf Variablen mit statischen Konstruktoren verwenden und sie zu globalen Konstanten hochstufen. Obwohl Diese Optimierung ist korrekt und kann zu Inkompatibilität mit kompiliertem Code führen. von GCC. Code kann z. B.const_cast
ausführen, um die Konstante in „Veränderlich“ umzuwandeln. und ändern Sie sie. In GCC befindet sich die Variable im Lese-/Schreibmodus und der Code wird von Unfalls. In Clang befindet sich die Variable const im schreibgeschützten Speicher und kann dazu führen, App zum Absturz zu bringen.
- Es wurde ein
-mldc1-sdc1
wurde den MIPS GCC- und Clang-Compilern hinzugefügt. Compiler 8-Byte-Objekte korrekt ausrichten und die Anweisungenldc1
undsdc1
ausgeben um sie zu verschieben. Wenn Ihre App einen benutzerdefinierten Zuweisung verwendet, der nicht immer mit der 8-Byte-Grenze eines neuen Objekts auf die gleiche Weise wie der Standard-Allocator, Ihre Anwendung kann aufgrund vonldc1
- undsdc1
-Vorgängen für nicht ausgerichteten Arbeitsspeicher abstürzen. In dieser verwenden Sie das Flag-mno-ldc1-sdc1
, um das Problem zu umgehen.- Der Schweregrad des Ereignisses wurde von „Warnung“ auf „Info“ herabgestuft, wenn
APP_PLATFORM_LEVEL
Folgendes ist: größer alsAPP_MIN_PLATFORM_LEVEL
.APP_PLATFORM_LEVEL
kann niedriger ausfallen alsAPP_PLATFORM
injni/Application.mk
, da das NDK keine für alle Ebenen. In diesem Fall wird der tatsächliche Pegel nach unten verschoben. DieAPP_MIN_PLATFORM_LEVEL
wird durch dieandroid:minSdkVersion
in im Manifest Ihrer App. (Problem 39752) - Die Methoden
android_getCpuIdArm()
undandroid_setCpuArm()
wurden hinzugefügt zucpu-features.c
Diese Ergänzung erleichtert den Abruf der ARM-CPUID Informationen. (Problem 53689) ndk-build
wurde so geändert, dass für die Clang-Kompilierung dieas/ld
von GCC 4.7 verwendet wird.Hinweis: In GCC 4.7 wurden
monotonic_clock
undis_monotonic
umbenannt insteady_clock
bzw.is_steady
.- Dem Skript
ndk-build
wurden die folgenden neuen Warnungen hinzugefügt: <ph type="x-smartling-placeholder">- </ph>
- Es wurden Warnungen hinzugefügt, wenn
LOCAL_LDLIBS/LDFLAGS
in der statischen Bibliothek verwendet werden Module. - Es wurde eine Warnung hinzugefügt, wenn eine Konfiguration kein Modul zum Erstellen enthält.
- Warnung für Nicht-Systembibliotheken hinzugefügt, die verwendet werden in
LOCAL_LDLIBS/LDFLAGS
einer gemeinsam genutzten Bibliothek oder ausführbarer Module.
- Es wurden Warnungen hinzugefügt, wenn
- Build-Skripts wurden aktualisiert, sodass
APP_MODULES
nicht definiert und nur statisch ist. sind inAndroid.mk
aufgeführt, erzwingt das Skript ihre Erstellung. (Problem 53502) ndk-build
wurde aktualisiert, sodass absolute Pfade inLOCAL_SRC_FILES
unterstützt werden.- Die
*-gdbtui
ausführbaren Dateien wurden entfernt, da es sich um Duplikate der Datei*-gdb
handelt. ausführbare Dateien mit aktivierter Option-tui
. - Build-Skripts wurden aktualisiert, um Sie zu warnen, wenn der Compiler der Edison Design Group (EDG)
aktiviert
_STLP_HAS_INCLUDE_NEXT
wieder. (Problem 53646) - Die Umgebungsvariable
NDK_LIBS_OUT
wurde hinzugefügt, um das Überschreiben der Pfad fürlibraries/gdbserver
aus dem Standardwert$PROJECT/libs
. Weitere Informationen findest du unterOVERVIEW.html
. - ndk-build-Skriptstandards so geändert, dass Code mit Format-String-Schutz kompiliert wird
-Wformat -Werror=format-security
Sie können Zum DeaktivierenLOCAL_DISABLE_FORMAT_STRING_CHECKS=true
. Weitere Informationen findest du unterANDROID-MK.html
. - In
ndk-gdb-py
wird STL-Pretty Print-Unterstützung hinzugefügt. Weitere Informationen finden Sie unterNDK-GDB.html
- Es wurden Tests hinzugefügt, die auf den googletest-Frameworks basieren.
- Dem Toolchain-Build-Skript wurde eine Benachrichtigung hinzugefügt, die Sie warnt, wenn die aktuelle Shell
ist nicht
bash
.
- Fehlerbehebungen in der Kopfzeile
<ph type="x-smartling-placeholder">
Android NDK r8e (März 2013)
- Wichtige Änderungen:
-
- 64-Bit-Hosttoolchain-Satz wurde hinzugefügt (Suffix des Paketnamens
*-x86_64.*
). Weitere Informationen Weitere Informationen finden Sie unterCHANGES.HTML
undNDK-BUILD.html
. - Clang 3.2-Compiler wurde hinzugefügt. GCC 4.6 ist immer noch die Standardeinstellung. Informationen zur Verwendung der
Clang-Compiler, siehe
CHANGES.HTML
. - Statischer Code-Analysator für Linux/MacOSX-Hosts wurde hinzugefügt. Informationen zur Verwendung der
-Analyse-Tool, siehe
CHANGES.HTML
. - MCLinker für Linux/MacOSX-Hosts wurde als experimentelle Funktion hinzugefügt. Das
ld.gold
sofern verfügbar, daher müssen Sie sie explizit aktivieren. Weitere Informationen finden Sie unterCHANGES.HTML
. - ndk-build wurde aktualisiert, um die topologische Sortierung für Modulabhängigkeiten zu verwenden, d. h.
dass der Build automatisch die Reihenfolge der
angegebenen Bibliotheken
LOCAL_STATIC_LIBRARIES
,LOCAL_WHOLE_STATIC_LIBRARIES
undLOCAL_SHARED_LIBRARIES
Weitere Informationen findest du unterCHANGES.HTML
. (Problem 39378)
- 64-Bit-Hosttoolchain-Satz wurde hinzugefügt (Suffix des Paketnamens
- Wichtige Fehlerkorrekturen:
-
- Das Build-Skript zum Erstellen aller Toolchains in
-O2
wurde korrigiert. Toolchains in der vorherigen Version Releases falsch ohne Optimierung erstellt wurden. - Ein Build-Skript wurde korrigiert, das Clang/llvm für MacOSX bedingungslos in 64-Bit erstellt.
- Interner Compiler-Fehler in GCC 4.6/4.7 behoben:
gen_thumb_movhi_clobber at config/arm/arm.md:5832
(Problem 52732) - Build-Problem behoben, bei dem GCC/ARM 4.6/4.7 Code mit einem atomaren 64-Bit-Code nicht verknüpfen konnte integrierten Funktionen verwenden. (Problem 41297)
- Fehler bei der DIV-Nutzung in der GCC 4.7-Verknüpfung wurden behoben. (Problem mit Sourceware)
- Der interne Compiler-Fehler
build_data_member_initialization, at cp/semantics.c:5790
in GCC 4.7 wurde behoben. - Der interne Compiler-Fehler
redirect_eh_edge_1, at tree-eh.c:2214
in GCC 4.7 wurde behoben. (Problem 52909) - Ein GCC 4.7-Segmentierungsfehler wurde behoben. (GCC-Problem)
- Die Auflösung der Uhr
<chrono>
wurde korrigiert undsteady_clock
wurde aktiviert. (Problem 39680) - Die Toolchain zur Aktivierung von
_GLIBCXX_HAS_GTHREADS
für GCC 4.7 libstdc++ wurde korrigiert. (Problem 41770, Problem 41859) - Ein Problem wurde behoben, bei dem der X86-MXX/SSE-Code nicht verknüpft werden konnte, weil er fehlte.
posix_memalign
(Änderung 51872) - Der GCC4.7/X86-Segmentierungsfehler in
i386.c
wurde behoben.distance_non_agu_define_in_bb()
. (Änderung 50383) - GCC4.7/X86 wurde korrigiert, um ein früheres
cmov
-Verhalten wiederherzustellen. (GCC-Problem) - Die Verarbeitung des NULL-Rückgabewerts von
setlocale()
in libstdc++/GCC4.7 wurde behoben. (Problem 46718) - Es wurde ein nicht definierter Verweis zur
ld.gold
-Laufzeit auf__exidx_start
korrigiert und__exidx_start_end
(Änderung 52134) - Ein interner Clang 3.1-Compiler-Fehler bei Verwendung der Eigen-Bibliothek wurde behoben. (Problem 41246)
- Ein interner Clang 3.1-Compiler-Fehler einschließlich
<chrono>
in C++11 wurde behoben. . (Problem 39600) - Ein interner Clang 3.1-Compiler-Fehler beim Generieren von Objektcode für eine Methode wurde behoben.
Aufruf eines einheitlichen initialisierten
rvalue
. (Problem 41387) - Die Neuausrichtung des Clang 3.1/X86-Stacks wurde behoben. (Änderung 52154)
- Das Problem mit GNU Debugger (GDB) SIGILL beim Debugging unter Android 4.1.2 wurde behoben. (Problem 40941)
- Ein Problem wurde behoben, durch das GDB keine
source:line
-Haltepunkte festlegen konnte, wenn Symbole enthalten lange, indirekte Dateipfade. (Problem 42448) - Der GDB-
read_program_header
für ausführbare MIPS PIE wurde korrigiert. (Änderung 49592) - Der Segmentierungsfehler
STLport
inuncaught_exception()
wurde behoben. (Änderung 50236) - Der
STLport
-Busfehler bei der Ausnahmebehandlung aufgrund von nicht ausgerichtetem Zugriff von wurde behoben.DW_EH_PE_udata2
,DW_EH_PE_udata4
undDW_EH_PE_udata8
. - Das Problem mit der unendlichen Rekursion von Gabi++ mit dem Operator
nothrow new[]
wurde behoben. (Problem 52833) - Der falsche Gabi++-Versatz für den Ausnahme-Handler-Zeiger wurde behoben. (Änderung 53446)
- Gabi++ redundant Free für Ausnahmeobjekt entfernt (Änderung 53447)
- Das Build-Skript zum Erstellen aller Toolchains in
- Weitere Fehlerkorrekturen:
-
- Feste NDK-Header:
<ph type="x-smartling-placeholder">
- </ph>
- Redundante Definitionen von
size_t
,ssize_t
undptrdiff_t
- Fester MIPS- und ARM-
fenv.h
-Header. - Fehler bei
stddef.h
wurde behoben, durch denoffsetof
nicht neu definiert wurde, da es bereits existiert. in der Toolchain aus. elf.h
wurde korrigiert, sodassElf32_auxv_t
undElf64_auxv_t
enthalten waren. (Problem 38441)- Die
#ifdef
C++-Definitionen in derOpenSLES_AndroidConfiguration.h
-Headerdatei. (Problem 53163)
- Redundante Definitionen von
- Fehler behoben, durch den
STLport
nach einem Fehler aufgrund von unzureichendem Arbeitsspeicher abgebrochen und nicht automatisch beendet wurde. - System- und Gabi++-Header wurden korrigiert, sodass eine Kompilierung mit API-Level 8 und niedriger möglich ist.
- Fehler von
cpufeatures
wurde so behoben, dass/proc/self/auxv
nicht geparst wird. (Problem 43055) - Der Fehler, dass
ld.gold
nicht vom Host libstdc++ und von Windows-Plattformen abhängig ist, wurde behoben. nicht von derlibgcc_sjlj_1.dll
-Bibliothek abhängig sind. - Behebung eines Fehlers bei Clang 3.1, der eine inkonsistente Registerliste in
.vsave
ausgibt Assembler. (Änderung 49930) - Clang 3.1 wurde korrigiert, damit libgabi++ kompiliert und
test-stlport
übergeben werden kann. Tests für MIPS-Build-Ziele. (Änderung 51961) - Clang 3.1 wurde korrigiert, sodass Ausnahmen standardmäßig nur für C++ aktiviert werden, nicht für C.
- Mehrere Probleme in Clang 3.1 behoben, um die meisten GNU-Ausnahmetests zu bestehen.
- Die Skripte
clang
undclang++
im eigenständigen NDK-Compiler wurden korrigiert, um die-cc1
und nicht-target
, wenn gefunden. ndk-build
wurde korrigiert, umNDK_APP_OUT
inApplication.mk
zu beobachten.- Fehler bei X86
libc.so
undlib.a
behoben, bei denensigsetjmp
fehlte undsiglongjmp
, die bereits insetjmp.h
deklariert wurden. (Problem 19851) - GCC 4.4.3/4.6/4.7 libstdc++ wurde so aktualisiert, dass es mit Clang in C++ 11 funktioniert. (Clang-Problem)
- Der Cygwin-Pfad in dem an
HOST_AWK
übergebenen Argument wurde korrigiert. - Die
ndk-build
-Skriptwarnung in Windows wurde behoben, wenn sie über die JNI des Projekts ausgeführt wurde. -Verzeichnis. (Problem 40192) - Das Problem, dass das Skript
ndk-build
nicht erstellt wurde, wenn Makefile nachstehendes Leerzeichen in derLOCAL_PATH
-Definition. (Problem 42841)
- Feste NDK-Header:
<ph type="x-smartling-placeholder">
- Sonstige Änderungen:
-
- Threading-Unterstützung in der GCC-/MIPS-Toolchain wurde aktiviert.
- Die GCC-Ausnahmebehandlungshilfen
__cxa_begin_cleanup
und__cxa_type_match
, um die Standardeinstellung der vorherigen Sichtbarkeit zu verwenden hidden-Sichtbarkeit in GNU libstdc++. Weitere Informationen finden Sie unterCHANGES.HTML
- Build-Scripts wurden aktualisiert, sodass nun statische Bibliotheken für Gabi++ und STLport mit ausgeblendete Sichtbarkeit, mit Ausnahme von Hilfsprogrammen für die Ausnahmebehandlung.
- Der Build wurde aktualisiert, sodass
STLport
für ARM im Thumb-Modus erstellt wurde. - Unterstützung für
std::set_new_handler
in Gabi++ hinzugefügt. (Problem 52805) FUTEX
-Systemaufruf in GNU libstdc++ aktiviert.ndk-build
wurde so aktualisiert, dass vorgefertigte statische Bibliothek nicht mehr kopiert wird dasobj/local/<abi>/
-Verzeichnis eines Projekts. (Problem 40302)__ARM_ARCH_5*__
wurde aus dem ARM-toolchains/*/setup.mk
-Script entfernt. (Problem 21132)- Zusätzliche GNU-libstdc++-Bibliotheken in Daumen für ARM erstellt.
- MIPS-Gleitkommawert
madd/msub/nmadd/nmsub/recip/rsqrt
aktiviert Anweisungen mit 32-Bit-FPU. - Aktivierung des Graphite-Schleifen-Optimierungstools in GCC 4.6 und 4.7 für weitere Optimierungen:
-fgraphite
,-fgraphite-identity
,-floop-block
,-floop-flatten
,-floop-interchange
,-floop-strip-mine
,-floop-parallelize-all
und-ftree-loop-linear
. (weitere Informationen) polly
wurde für Clang 3.1 auf Linux- und Max OS X-32-Bit-Hosts aktiviert, die Folgendes analysieren: und optimiert den Speicherzugriff. (weitere Informationen)-flto
wurde in GCC 4.7, 4.6, Clang 3.2 und Clang 3.1 unter Linux (Clang LTO) aktiviert über LLVMgold.so. MIPS-Compiler-Ziele werden aus folgendem Grund nicht unterstützt:ld.gold
ist nicht verfügbar.--plugin
und--plugin-opt
fürld.gold
wurden in GCC 4.6/4.7 aktiviert.--text-reorder
wurde in GCC 4.7 fürld.gold
aktiviert.- GNU libstdc++ mit
_GLIBCXX_USE_C99_MATH
konfiguriert, wodurch dieisinf
-Script im Bionic-Header. Weitere Informationen finden Sie unterCHANGES.html
APP_LDFLAGS
wurde den Build-Skripts hinzugefügt. Weitere Informationen finden Sie unterANDROID-MK.html
- Build-Skripts wurden aktualisiert, damit
NDK_LOG=0
NDK_LOG
deaktivieren kann. - Build-Skripts wurden aktualisiert, damit
NDK_HOST_32BIT=0
den Hostentwickler deaktivieren kann 32-Bit-Toolchain. - Die Standard-GCC/X86-Flags
-march=
und-mtune=
wurden geändert vonpentiumpro
undgeneric
zui686
undatom
. - Build-Scripts für erweiterte Toolchains:
<ph type="x-smartling-placeholder">
- </ph>
- Es wurde eine Race-Bedingung in
build-gcc.sh
für den Build-Typmingw
behoben. was die parallele Build-Verarbeitung erheblich verhinderte. build-gabi++.sh
undbuild-stlport.sh
wurden aktualisiert, sodass sie jetzt ausgeführt werden können aus dem NDK-Paket. (Problem 52835)run-tests.sh
in der DienstprogrammsammlungMSys
wurde behoben.- Verbesserte 64-Bit-Host-Toolchain und Canadian Cross Build-Unterstützung.
build-mingw64-toolchain.sh
Script wurde auf eine neuere Version aktualisiert.- Option zum Erstellen von
libgnustl_static.a
undstlport_static.a
hinzugefügt ohne Verborgenheit.
- Es wurde eine Race-Bedingung in
Android NDK r8d (Dezember 2012)
- Wichtige Änderungen:
-
- Der NDK-Compiler (GNU Compiler Collection) 4.7 wurde hinzugefügt. Der GCC 4.6-Compiler
ist immer noch die Standardeinstellung, sodass Sie die neue Version explizit aktivieren müssen:
<ph type="x-smartling-placeholder">
- </ph>
- Exportieren Sie für
ndk-build
die VariableNDK_TOOLCHAIN_VERSION=4.7
. oder füge ihnApplication.mk
hinzu. - Fügen Sie für eigenständige Builds die Option
--toolchain=
zumake-standalone-toolchain.sh
, z. B.:--toolchain=arm-linux-androideabi-4.7
Hinweis:Dies ist eine experimentelle Funktion. Versuchen Sie es und Probleme melden.
- Exportieren Sie für
- Support für
stlport
-Ausnahmen über gabi++ wurde hinzugefügt. Beachten Sie, dass die neue gabi++- hängt vondlopen
und dem zugehörigen Code ab. Dies bedeutet, dass: <ph type="x-smartling-placeholder">- </ph>
- Sie können mit dem
-static
keine statische ausführbare Datei mehr erstellen. oderlibstlport_static.a
mithilfe vonAPP_STL := stlport_static
(Sie können die Option-static
weiterhin mit einer eigenständigen Toolchain.) Kompilierung einer dynamischen ausführbaren Datei mithilfe voninclude $(BUILD_EXECUTABLE)
funktioniert weiterhin, da der Compiler fügt automatisch die Option-ldl
hinzu. - Wenn Ihr Projekt mit
-nostdlib
und {-Wl,--no-undefined} verknüpft ist, muss die Option-ldl
manuell einfügen.
CPLUSPLUS-SUPPORT.html
.Hinweis:Dies ist eine experimentelle Funktion, die besser mit dem GCC funktioniert. 4.6/4.7-Compiler als bei GCC 4.4.3 oder Clang 3.1. Versuchen Sie es und Probleme melden.
- Sie können mit dem
- Es wurde eine
-mstack-protector-guard=
-Option hinzugefügt, mit der x86 zwischen einer Standardpfad global, der mit der älteren Android C-Bibliothek (Bionic) kompatibel ist und einen neuen tls-Pfad (%gs:20) für-fstack-protector
,-fstack-protector-all
und-fstack-protector-strong
mit GCC 4.6 und höhere Compiler.Hinweis: Die Einstellung
-mstack-protector-guard
selbst alle-fstack-protector*
-Optionen aktivieren. - Funktion
android_setCpu()
wurde hinzugefügt zusources/android/cpufeatures/cpu-features.c
zur Verwendung bei automatischer Erkennung über/proc
ist mit Android 4.1 und höher nicht möglich. (Problem mit Chromium 164154) zurück
- Der NDK-Compiler (GNU Compiler Collection) 4.7 wurde hinzugefügt. Der GCC 4.6-Compiler
ist immer noch die Standardeinstellung, sodass Sie die neue Version explizit aktivieren müssen:
<ph type="x-smartling-placeholder">
- Wichtige Fehlerkorrekturen:
-
- Die unnötige Neuerstellung von Objektdateien bei Verwendung des Skripts
ndk-build
wurde behoben. (Problem 39810) - Verknüpfungsfehler bei der Version NDK 8c für Mac OS X 10.6.x behoben, bei der die
folgenden Fehler:
dyld: lazy symbol binding failed: Symbol not found: _memmem Referenced from: ...../arm-linux-androideabi/bin/ld Expected in: /usr/lib/libSystem.B.dylib
Dieses Problem entstand bei der Erstellung von Binärdateien auf Mac OS X 10.7, nicht kompatibel mit Mac OS 10.6.x und dem NDK. - Die
-x c++
-Optionen wurden aus dem eigenständigen Clang++-Build-Skript entfernt. (Problem 39089) - Probleme bei der Verwendung der Option
NDK_TOOLCHAIN_VERSION=clang3.1
in Cygwin wurden behoben. (Problem 39585) - Das Skript
make-standalone-toolchain.sh
ermöglicht jetzt die Generierung eines einer eigenständigen Toolchain mit der Cygwin- oder MinGW-Umgebung. Die resultierende Toolchain können in Cygwin-, MingGW- oder CMD.exe-Umgebungen verwendet werden. (Problem 39915, (Problem 39585) - Fehlende Option
SL_IID_ANDROIDBUFFERQUEUESOURCE
in Android-14-Builds hinzugefügt für ARM und X86. (Problem 40625) - Die x86-CPU-Erkennung für das Feature
ANDROID_CPU_X86_FEATURE_MOVBE
wurde korrigiert. (Problem 39317) - Es wurde ein Problem behoben, das die Verwendung von C++ durch die Standard Template Library (STL) verhinderte.
Quellen ohne
.cpp
-Dateiendung. - Ein interner GCC 4.6-ARM-Compiler-Fehler atrefresh1.c:1061 wurde behoben. (Problem 20862)
- Der interne ARM-Compiler-Fehler at emit-rtl.c:1954 wurde in GCC 4.4.3 behoben. (Problem 22336)
- Der interne ARM-Compiler-Fehler in GCC 4.4.3 at postreload.c:396 wurde behoben. (Problem 22345)
- Ein Problem mit dem Überspringen von Lambda-Funktionen in GCC 4.6/4.7 wurde behoben. (Problem 35933)
- Die unnötige Neuerstellung von Objektdateien bei Verwendung des Skripts
- Weitere Fehlerkorrekturen:
-
- Fehlerbehebungen bei NDK-Header-Dateien:
<ph type="x-smartling-placeholder">
- </ph>
- Der Typ von
__WINT_TYPE__
undwint_t
wurde korrigiert. - Tippfehler in
android/bitmap.h
wurde korrigiert. (Problem 15134) - Tippfehler in
errno.h
wurde korrigiert. - Prüfung auf das Vorhandensein von
__STDC_VERSION__
insys/cdefs.h
hinzugefügt. (Problem 14627) - Die Überschriften in
byteswap.h
unddirent.h
wurden neu angeordnet. limits.h
wurde korrigiert, sodasspage.h
mitPAGE_SIZE
bereitgestellt wird. Einstellungen. (Problem 39983)- Fester Rückgabetyp von
glGetAttribLocation()
undglGetUniformLocation()
vonint
bisGLint
. - Die
__BYTE_ORDER
-Konstante für x86-Builds wurde korrigiert. (Problem 39824)
- Der Typ von
- Das
ndk-build
-Skript wurde korrigiert, sodass-Os
für ARM nicht mit-O2
überschrieben wurde baut. - Build-Scripts wurden korrigiert, sodass
HOST_AWK
,HOST_SED
undHOST_MAKE
-Einstellungen. - Es wurde ein Problem mit
ld.gold
infsck_msdos
-Builds behoben, die Objekte verknüpfen, die von den Intel C/C++ Compiler (ICC). - ARM EHABI-Unterstützung in Clang wurde korrigiert, um den Spezifikationen zu entsprechen.
- Der GNU-Debugger (GDB) wurde korrigiert, sodass die Zeit, die für das Walken der Linkzuordnung des Ziels benötigt wird, verkürzt wird.
während
solib
Ereignissen. (Problem 38402) - Ein Problem wurde behoben, durch das beim Verknüpfen geteilter Fotogalerien die Datei
libgcc.a
fehlte.
- Fehlerbehebungen bei NDK-Header-Dateien:
<ph type="x-smartling-placeholder">
- Sonstige Änderungen:
-
- Rückportierte integrierte 64-Bit-Atomfunktionen für ARM auf GCC 4.6.
- Eine Dokumentation zur Latenz der Audioausgabe sowie weitere Dokumentationen und Fehlerbehebungen.
- Fehlerbehebungs-Builds mit Clang wurden behoben, sodass Funktionen, die keine void-Elemente sind, jetzt einen
SIGILL
-Fehler ausgeben. -Signal für Pfade ohne Rückgabeanweisung. make-standalone-toolchain.sh
wurde aktualisiert, sodass das Suffix-clang3.1
akzeptiert wird Dies entspricht dem Hinzufügen von--llvm-version=3.1
zur GCC 4.6-Toolchain.- Die URL des GCC- und Clang-Fehlerberichts wurde aktualisiert: https://source.android.com/source/report-bug s.html
- Unterstützung für ARM ELF wurde zu
llvm-objdump
hinzugefügt. - Warnung zur Behandlung von C-Eingaben als C++ für Clang-Builds unterdrückt.
- Build aktualisiert, sodass nur die 32-Bit-Version von
libiberty.a
erstellt und platziert inlib32/
.
Android NDK r8c (November 2012)
- Wichtige Änderungen:
-
- Der Clang 3.1-Compiler wurde zum NDK hinzugefügt. Die GNU Compiler Collection (GCC) 4.6 ist
ist immer noch die Standardeinstellung, daher müssen Sie die Clang-Compiler-Option wie folgt explizit aktivieren:
<ph type="x-smartling-placeholder">
- </ph>
- Exportieren Sie für
ndk-build
NDK_TOOLCHAIN_VERSION=clang3.1
oder fügen Sie diese Einstellung für die UmgebungsvariableApplication.mk
hinzu. - Für eigenständige Builds
--llvm-version=3.1
hinzufügen zumake-standalone-toolchain.sh
und ersetzen SieCC
undCXX
in Ihrem Makefile mit<tool-path>/bin/clang
und<tool-path>/bin/clang++
STANDALONE-TOOLCHAIN.html
ansehen für Details.
Hinweis:Dies ist eine experimentelle Funktion. Versuchen Sie es und Probleme melden.
- Exportieren Sie für
- Goldverknüpfung
ld.gold
für die Windows-Toolchain hinzugefügt. Gold-Linker sind auch Standardeinstellung für ARM und X86 auf allen Hosts. Sie können sie überschreiben, um denld.bfd
zu verwenden. durch Hinzufügen vonLOCAL_LDFLAGS += -fuse-ld=bfd
zuAndroid.mk
oder durch bestanden-fuse-ld=bfd
in die Befehlszeile g++/clang++ für die Verknüpfung. - Prüfungen auf Leerzeichen im NDK-Pfad zu
ndk-build[.cmd]
undndk-gdb
-Skripts zur Vermeidung von schwer zu diagnostizierenden Build-Fehlern. - An der Verarbeitung der API-Ebene wurden folgende Änderungen vorgenommen:
<ph type="x-smartling-placeholder">
- </ph>
- Die Build-Logik wurde so geändert, dass Projekte, die
android-10
bis zum Ende angeben,android-13
inAPP_PLATFORM
,project.properties
oderdefault.properties
-Link mitandroid-9
statt mitandroid-14
- Der Build wurde so aktualisiert, dass ausführbare Dateien mit Android 16 (Jelly Bean) oder höher installiert werden.
kompiliert mit der Option
-fPIE
für position-independent ausführbare Dateien (PIE). Mit der neuen OptionAPP_PIE
können Sie dieses Verhalten steuern. Weitere Informationen findest du unterAPPLICATION-MK.html
.Hinweis:Alle API-Ebenen über 14 sind weiterhin mit
platforms/android-14
verknüpft und es wurden keine neuenplatforms/android-N
hinzugefügt. ndk-build
wurde so geändert, dass Warnungen angezeigt werden, wenn das angepasste API-Level höher ist. alsandroid:minSdkVersion
in derAndroidManifest.xml
des Projekts.
- Die Build-Logik wurde so geändert, dass Projekte, die
- Die Hilfsbibliothek „
cpu-features
“ wurde aktualisiert und enthält jetzt mehr ARM-spezifische Funktionen. Weitere Informationen findest du untersources/android/cpufeatures/cpu-features.h
. - Der Long Double-Wert auf der X86-Plattform wurde zu 8 Byte geändert. Dieser Datentyp ist jetzt der hat dieselbe Größe wie ein Double-Wert, wird aber trotzdem als separater Typ behandelt.
- Aktualisierter Build für
APP_ABI=armeabi-v7a
: <ph type="x-smartling-placeholder">- </ph>
- Dieser Build-Typ wurde so geändert, dass der Parameter
-march=armv7-a
übergeben wird an die Verknüpfung. Durch diese Änderung werden v7-spezifische Bibliotheken undcrt*.o
richtig verknüpft ist. -mfpu=vfpv3-d16
wurdendk-build
hinzugefügt anstelle von Die Option „-mfpu=vfp
“ wurde in früheren Releases verwendet.
- Dieser Build-Typ wurde so geändert, dass der Parameter
- Der Clang 3.1-Compiler wurde zum NDK hinzugefügt. Die GNU Compiler Collection (GCC) 4.6 ist
ist immer noch die Standardeinstellung, daher müssen Sie die Clang-Compiler-Option wie folgt explizit aktivieren:
<ph type="x-smartling-placeholder">
- Wichtige Fehlerkorrekturen:
-
- Es wurde ein Problem behoben, durch das
make-standalone-toolchain.sh
mit Root-Berechtigungen ausgeführt wurde. führten dazu, dass die eigenständige Toolchain für einige Nutzer nicht zugänglich war. (Problem 35279) <ph type="x-smartling-placeholder">- </ph>
- Für alle Dateien und ausführbaren Dateien im NDK-Releasepaket ist Lese- und Schreibzugriff Ausführungsberechtigungen für alle.
- Die Eigentümerschaft bzw. die Gruppe von
libstdc++.a
bleibt beim Kopieren erhalten.
- Redundante
\r
wurde aus der in Windows vordefiniertenecho.exe
entfernt. Der redundante\r
hat dazu geführt, dassgdb.setup
im GNU Debugger (GDB) fehlgeschlagen ist, weil fälschlicherweise Teil des Pfades wurde. (Problem 36054) - Es wurde behoben, dass parallele Windows-Builds manchmal aufgrund von Timing-Problemen im
host-mkdir
-Implementierung. (Problem 25875) - Fehler in GCC 4.4.3 GNU
libstdc++
behoben, durch dentypeinfo
-Namen nicht zusammengeführt werden Standardeinstellung. Weitere Informationen finden Sie untertoolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo
(Problem 22165) - Problem im
null
-Kontext in GCC 4.6 behobencp/mangle.c::write_unscoped_name
, wobei GCC abstürzen kann, wenn der Kontextnull
und inTREE_CODE
dereferenziert. - Abstürze von GCC 4.4.3 bei ARM NEON-spezifischen Typdefinitionen für Gleitkommazahlen wurden behoben. (Problem 34613)
- Fehler bei der
STLport
-internen_IteWrapper::operator*()
-Implementierung behoben Dabei wurde ein veralteter Stack-Speicherort mit dem dereferenzierten Wert zurückgegeben und zu Laufzeitabstürzen führen. (Problem 38630) - ARM-spezifische Korrekturen:
<ph type="x-smartling-placeholder">
- </ph>
- ARM GCC 4.4.3/4.6 wurde korrigiert, sodass keine Warnung ausgegeben wurde, dass die Änderung von
g++
<va_list> wurde in GCC 4.4 geändert. Die Behelfslösung mit dem-Wno-psabi
ist nicht mehr erforderlich, um diese Warnung zu vermeiden. - Es wurde ein Problem behoben, bei dem ein Projekt mit den Suffixen
.arm
oder.neon
inLOCAL_SRC_FILES
hat auchAPP_STL
verwendet. MitAPP_STL
kann das Das Skriptndk-build
sucht inLOCAL_SRC_FILES
nach C++-Dateien, bevor STL-header/lib
-Pfade zur Kompilierung hinzugefügt.ndk-build
geändert zu die Suffixe.arm
und.neon
vor der Suche herausfiltern, andernfalls Elemente inLOCAL_SRC_FILES
wiemyfile.cpp.arm.neon
wird nicht als C++ kompiliert Code. - Fehler bei
binutils-2.21/ld.bfd
behoben, durch den Objekte aus älteren Versionen verknüpft werden können binutils ohnetag_FP_arch
, was zu einem Assertion-Fehler führte Fehlermeldungen in GNU Binutils. (Problem 35209) - Warnung Unbekanntes EABI-Objektattribut 44 entfernt, wenn
binutils-2.19/ld
verknüpft vordefiniertes Objekt mit dem neuerenbinutils-2.21
- Ein Problem in der GNU-
stdc++
-Kompilierung mit-mthumb
und-march=armv7-a
, indem Siemake-standalone-toolchain.sh
so ändern, dass Werte eingefügt werdenheaders/libs
im Unterverzeichnisarmv7-a/thumb
. (Problem 35616) - Der Fehler nicht auflösbare R_ARM_THM_CALL Relocation wurde behoben. (Problem 35342)
- Interner Compiler-Fehler unter
reload1.c:3633
behoben, der durch den ARM verursacht wurde Backend, das bei der Vorzeichenerweiterung vonchar
den falschen Operandentyp erwartet. (GCC-Problem 50099) - Interner Compiler-Fehler mit negativem Verschiebungsbetrag behoben. (GCC-Problem)
- ARM GCC 4.4.3/4.6 wurde korrigiert, sodass keine Warnung ausgegeben wurde, dass die Änderung von
- Fehler bei
-fstack-protector
für X86 behoben, der auch die Standardeinstellung für diendk-build
x86-ABI-Ziel. - MIPS-spezifische Fehlerbehebungen:
<ph type="x-smartling-placeholder">
- </ph>
- Der Endian-Wert von
STLport
wurde behoben, indem_STLP_LITTLE_ENDIAN
auf 1 gesetzt wurde, wenn MIPSlibstlport_*
wird kompiliert. - Das GCC-
__builtin_unreachable
-Problem beim Kompilieren von LLVM wurde behoben. (GCC-Problem 54369) - Zurückportierte Fehlerbehebung für den Kompilierungsprozess
cc1
, der 100% CPU beansprucht. (GCC-Problem 50380)
- Der Endian-Wert von
- Spezifische Fehlerbehebungen für GNU Debugger:
<ph type="x-smartling-placeholder">
- </ph>
- Die Python-Unterstützung wurde in gdb-7.x beim Erstellen deaktiviert. Andernfalls wird gdb-7.x konfiguriert.
kann die auf dem Host verfügbare Python-Version abrufen
gdb
durch eine per Kabel verbundene Abhängigkeit von einer bestimmten Python-Version. (Problem 36120) ndk-gdb
wurde behoben, wennAPP_ABI
all
enthält und mit keinem übereinstimmt der bekannten Architekturen. (Problem 35392)- Die Unterstützung für Windows-Pfadnamen wurde korrigiert, indem das Zeichen
:
beibehalten wurde, falls es aussieht. als Teil eines Windows-Pfads, der mit einem Laufwerksbuchstaben beginnt. (GDB-Problem 12843) - Das Hinzufügen der Hardware-Haltepunkt-Unterstützung für ARM in
gdbserver
wurde korrigiert. (GDB-Problem) - Es wurde eine Korrektur hinzugefügt, die den aktuellen
solibs
nur liest, wenn die Verknüpfung konsistent ist. Durch diese Änderung wird die Verarbeitung vonsolib
-Ereignissen beschleunigt. (Problem 37677) - Es wurde eine Korrektur hinzugefügt, um wiederholte Versuche,
solib
Haltepunkte zu finden. GDB jetzt wiederholtenable_break()
bei jedem Aufruf vonsvr4_current_sos()
bis dass es erfolgreich ist. (Änderung 43563) gdb
wurde nicht bei Haltepunkten angehalten indlopen-ed
-Bibliotheken. (Problem 34856)- Fehler bei
SIGILL
in der dynamischen Verknüpfung beim Aufrufen vondlopen()
auf dem System behoben wobei/system/bin/linker
keine Symbole enthält undrtld_db_dlactivity()
wird alsThumb
implementiert, da sie nicht beibehalten wirdLSB
vonsym_addr
. (Problem 37147)
- Die Python-Unterstützung wurde in gdb-7.x beim Erstellen deaktiviert. Andernfalls wird gdb-7.x konfiguriert.
kann die auf dem Host verfügbare Python-Version abrufen
- Es wurde ein Problem behoben, durch das
- Weitere Fehlerkorrekturen:
-
- Feste NDK-Header:
<ph type="x-smartling-placeholder">
- </ph>
- Fehler behoben, bei dem
arch-mips/include/asm/*
-Code fälschlicherweise entfernt wurde aus des ursprünglichen Kernels. (Ändern 43335) - Strukturmitgliedsdaten
__unused
durch__linux_unused
ersetzt inlinux/sysctl.h
undlinux/icmp.h
, um einen Konflikt mit#define __unused
insys/cdefs.h
. fenv.h
für eingeschlossene C-Funktionen mit__BEGIN_DECLS
und__END_DECLS
- Nicht implementierte Funktionen in
malloc.h
entfernt. - Die
stdint.h
-Definition vonuint64_t
für ANSI-Compiler wurde korrigiert. (Problem 1952) - Präprozessor-Makros in
<arch>/include/machine/*
wurden behoben. link.h
für MIPS wurde durch eine neue Version ersetzt, die alle Plattformen unterstützt.- „
linux-unistd.h
“ wurde entfernt - GLibc-spezifische Makros
LONG_LONG_MIN
,LONG_LONG_MAX
undULONG_LONG_MAX
von<pthread.h>
bis<limits.h>
.
- Fehler behoben, bei dem
- Ein Pufferüberlauf in
ndk-stack-parser
wurde behoben. - Wenn
_STLP_USE_EXCEPTIONS
nicht definiert ist, wurde ein Fehler behoben, durch den alle Deklarationen weggelassen werden. und die Nutzung von__Named_exception
. Kompilierung und Verwendung von__Named_exception
Einstellungen werden nur dann vorgenommen, wennSTLport
Ausnahmen verwenden darf. - Fehler beim Erstellen von NDK-Paketen, die nur für Linux verfügbar sind, ohne auch Windows-Code zu erstellen. Verwenden Sie die Methode
folgenden Einstellungen, um diesen Build-Typ auszuführen:
./build/tools/make-release.sh --force --systems=linux-x86
- Das
libc.so
wurde korrigiert, sodassatexit()
und__do_handler
nicht exportiert werden. Diese Symbole werden für ARM-Builds von der Systemversion der C-Bibliothek in die alte native Bibliotheken unterstützen. Von NDK generierte Inhalte sollten niemals direkt darauf verweisen. Stattdessen sollte jede gemeinsam genutzte Bibliothek oder ausführbare Datei eine eigene Version dieser Symbole einbetten. bereitgestellt voncrtbegin_*.o
.Wenn Ihr Projekt mit den Optionen
-nostdlib -Wl,--no-undefined
verknüpft ist, gilt Folgendes: muss eigene__dso_handle
angeben, dacrtbegin_so.o
nicht verknüpft ist in in diesem Fall. Wie im Folgenden dargestellt, ist der Inhalt von__dso_handle
unerheblich. Beispielcode:extern "C" { extern void *__dso_handle __attribute__((__visibility__ ("hidden"))); void *__dso_handle; }
- Korrigierter Symboldecoder für ARM, der in
objdump
fürplt
-Einträge verwendet wird, um Generieren Sie ein lesbareres Formularfunction@plt
. - Die folgenden Symbole, die in GCC 4.6
libgcc.a
eingeführt wurden, wurden aus die Bibliothek der X86-Plattformlibc.so
:__aeabi_idiv0
,__aeabi_ldiv0
,__aeabi_unwind_cpp_pr1
und__aeabi_unwind_cpp_pr2
. - Nicht verwendete
.ctors
,.dtors
und.eh_frame
in MIPS entferntcrt*_so.S
. ndk-gdb
wurde so aktualisiert, dass nur die letzte Ausgabezeile fürndk-build
DUMP_XXXX
. Durch diese Änderung wird sichergestellt, dassApplication.mk
oderAndroid.mk
gibt etwas mit der Syntax$(info ...)
aus, es wird nicht in das Ergebnis vonDUMP_XXXX
eingefügt. Weitere Informationen
- Feste NDK-Header:
<ph type="x-smartling-placeholder">
- Sonstige Änderungen:
-
- Die Header
arch-x86
undarch-mips
wurden entfernt ausplatforms/android-[3,4,5,8]
Diese Header waren unvollständig, da sowohl X86 als auch MIPS-ABIs werden erst ab API 9 unterstützt. - Vereinfachter C++-Include-Pfad in eigenständigen Paketen (siehe unten).
(Problem 35279)
<path>/arm-linux-androideabi/include/c++/4.6.x-google to: <path>/include/c++/4.6/
ndk-build
wurde korrigiert, sodass mehr C++-Dateierweiterungen standardmäßig erkannt werden:.cc .cp .cxx .cpp .CPP .c++ .C
. Du kannstLOCAL_CPP_EXTENSION
weiterhin für Folgendes verwenden: diese Erweiterungseinstellungen überschreiben.- Es wurde ein Problem in
samples/san-angeles
behoben, das zu einem schwarzen Bildschirm oder einem eingefrorenen Bildschirm führte. beim Neustart angezeigt wird. - Veraltete APIs in NDK-Beispielen wurden ersetzt.
(Problem 20017)
<ph type="x-smartling-placeholder">
- </ph>
hello-gl2
von Android-5 auf Android-7native-activity
von Android-9 auf Android-10native-audio
von Android-9 auf Android-10native-plasma
von Android-9 auf Android-10
- Neues Branding für ausführbare Android-Dateien mit einem einfacheren Schema im Abschnitt hinzugefügt
.note.android.ident
(definiert incrtbegin_static/dynamic.o
), sodass Debugging-Tools entsprechend agieren können. Das Strukturmitglied und die Werte sind definiert als folgt: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 */ }
Die vorherigen Brandingoptionen in Abschnitt
.note.ABI-tag
wurden eingestellt. - Das neue Skript
run-tests-all.sh
wurde hinzugefügt, dasrun-tests.sh
undstandalone/run.sh
mit verschiedenen Bedingungen. Das Skriptrun-tests.sh
wird ausgeführt. ohne die Option--abi
und wurde optimiert, um die meisten Tests für alle unterstützt ABIs und läuft auf allen verbundenen Geräten
- Die Header
Android NDK r8b (Juli 2012)
Die Hauptfunktionen dieses Release sind eine neue GNU Compiler Collection (GCC) 4.6-Toolchain und GNU Debugger (GDB) 7.3.x mit Unterstützung für die Fehlerbehebung für das Android 4.1 (API-Level 16)-System Bild.
- Wichtige Fehlerkorrekturen:
-
LOCAL_SHORT_COMMANDS
-Probleme in Mac OS- und Windows-Cygwin-Umgebungen wurden behoben. statische Bibliotheken. Die Listendatei wird schneller erstellt und nicht neu generiert, um wiederholte die Neuerstellung von Projekten.- Mehrere Probleme in
ndk-gdb
behoben: <ph type="x-smartling-placeholder">- </ph>
- Das Tool wurde aktualisiert, um die Flags
-e
,-d
und-s
an ADB weiter zu übergeben. konsequent an. - Das Tool wurde aktualisiert, damit Seriennummern von Geräten akzeptiert werden, die Leerzeichen enthalten.
- Das Tool zum Abrufen von
/system/bin/link
-Informationen wurde aktualisiert.gdb
ist aktiviert. Der Host kann einen Haltepunkt in__dl_rtld_db_dlactivity
setzen und die Verknüpfungsaktivität im Blick behalten Scanne zum Beispiel noch einmalsolib
-Symbole, wenndlopen()
aufgerufen wird.
- Das Tool wurde aktualisiert, um die Flags
- Das Problem
ndk-build clean
unter Windows wurde behoben, das nicht entfernt werden konnte../libs/*/lib*.so
. - Der Fehler von
ndk-build.cmd
wurde behoben, sodass beimake
einERRORLEVEL
-Wert ungleich null zurückgegeben wird. schlägt fehl. - Das Problem mit
libc.so
wurde behoben, durch das__exidx_start
und__exidx_end
-Symbole. - Problem mit
SEGV
behoben, das beim Abspulen des Stapels über__libc_init
für ARM und MIPS.
- Wichtige Änderungen:
-
- GCC 4.6-Toolchain (
binutils
2.21 mitgold
und GDB 7.3.x) hinzugefügt und mit der ursprünglichen GCC 4.4.3-Toolchain (binutils
2.19 und GDB 6.6) gemeinsam verwendet werden können.- GCC 4.6 ist jetzt die Standard-Toolchain. Du kannst
NDK_TOOLCHAIN_VERSION=4.4.3
inApplication.mk
festlegen, um die ursprüngliche Datei auszuwählen. - Die
gold
-Verknüpfung wird nur für ARM und x86 unterstützt Architekturen auf Linux- und Mac OS-Hosts. Diese Unterstützung ist standardmäßig deaktiviert. FügeLOCAL_LDLIBS += -fuse-ld=gold
zuAndroid.mk
hinzu, um sie zu aktivieren. - Bei Programmen, die mit
-fPIE
kompiliert wurden, ist das neueGDB
für das Debugging erforderlich. einschließlich Binärdateien in System-Images von Android 4.1 (API-Level 16). - Das Tool
binutils
2.21ld
enthält zurückportierte Korrekturen von Version 2.22: <ph type="x-smartling-placeholder">- </ph>
- Fehler bei
ld --gc-sections
behoben, der Zombie-Verweise auf fälschlicherweise beibehält externen Bibliotheken. (weitere . - Der ARM-Befehl
strip
wurde korrigiert, um die ursprünglichen Wertep_align
undp_flags
im AbschnittGNU_RELRO
, wenn sie gültig sind. Ohne diese Korrektur werden Programme Das Debugging konnte mit-fPIE
nicht durchgeführt werden. (M e info)
- Fehler bei
sincos()
-Optimierung zur Kompatibilität mit älteren Versionen deaktiviert Plattformen.
- GCC 4.6 ist jetzt die Standard-Toolchain. Du kannst
- Build-Optionen wurden aktualisiert, um das Bit „Never eXecute“ (NX) und die Schutzmaßnahmen
relro
/bind_now
standardmäßig zu aktivieren: <ph type="x-smartling-placeholder">- </ph>
--noexecstack
wurde Assembler hinzugefügt und-z noexecstack
zu Verknüpfung hinzugefügt die NX-Schutz vor Pufferüberlauf-Angriffen bietet, indem das NX-Bit auf Stack aktiviert Heap.-z relro
und-z now
wurden zur Verknüpfung hinzugefügt, um interne Elemente zu härten. Datenabschnitte nach dem Verknüpfen zum Schutz vor Sicherheitslücken aufgrund von Speicherschäden. (Weitere Informationen: 1, 2)- Diese Funktionen können mithilfe der folgenden Optionen deaktiviert werden:
<ph type="x-smartling-placeholder">
- </ph>
- Deaktivieren Sie den NX-Schutz, indem Sie die Option
--execstack
für die Assembler und-z execstack
für die Verknüpfung. - Deaktivieren Sie die Härtung interner Daten, indem Sie die
-z norelro
und-z lazy
Optionen für die Verknüpfung. - Deaktivieren Sie diesen Schutz im NDK
jni/Android.mk
, indem Sie den Parameter folgende Optionen:LOCAL_DISABLE_NO_EXECUTE=true # disable "--noexecstack" and "-z noexecstack" DISABLE_RELRO=true # disable "-z relro" and "-z now"
Weitere Informationen findest du unter
docs/ANDROID-MK.html
. - Deaktivieren Sie den NX-Schutz, indem Sie die Option
- Branding für ausführbare Android-Dateien mit dem Abschnitt
.note.ABI-tag
(incrtbegin_static/dynamic.o
), damit die Debugging-Tools entsprechend reagieren können. Struktur Mitglied und Werte sind wie folgt definiert:static const struct { int32_t namesz; /* = 4, sizeof ("GNU") */ int32_t descsz; /* = 6 * sizeof(int32_t) */ int32_t type; /* = 1 */ char name[sizeof "GNU"]; /* = "GNU" */ int32_t os; /* = 0 */ int32_t major; /* = 2 */ int32_t minor; /* = 6 */ int32_t teeny; /* = 15 */ int32_t os_variant; /* = 1 */ int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ }
- GCC 4.6-Toolchain (
- Weitere Fehlerkorrekturen:
-
- Ein Fehler wurde behoben, durch den die
mips-linux-gnu
-Verschiebung abgeschnitten wurde, umR_MIPS_TLS_LDM
zu passen. Weitere Informationen - Fehler im
ld
-Tool bei Verwendung von--gc-sections
wurden behoben. Weitere Informationen - Problem beim Zählen der MIPS
GOT_PAGE
behoben. Weitere Informationen - Der Link zum Folgen des Warnsymbols für
mips_elf_count_got_symbols
wurde korrigiert. - Der Link zum Folgen des Warnsymbols für
mips_elf_allocate_lazy_stub
wurde korrigiert. - MIPS
.dynamic
wurde in das Datensegment verschoben, sodass es beschreibbar ist. - Hartcodierte Werte für Symbole wurden durch die richtigen Segmentgrößen für MIPS ersetzt.
- Die Option
-mno-shared
wurde aus den Standardeinstellungen in der MIPS-Toolchain entfernt. Die Standardeinstellung für die Android-Toolchain ist-fPIC
(oder-fpic
, falls unterstützt). Falls nicht, explizit-mshared
,-fpic
,-fPIC
,-fpie
oder-fPIE
angeben, Der MIPS-Compiler fügt-mno-shared
hinzu, der PIC deaktiviert. Der Compiler wurde nicht hinzugefügt In diesem Fall-mno-shared
. - Falsche Paketnamen in den Beispielen
hello-jni
undtwo-libs
wurden korrigiert, sodasstests
-Projekt darunter kompilieren kann.
- Ein Fehler wurde behoben, durch den die
- Weitere Änderungen:
-
- Geänderte Speicherorte der Binärdateien:
<ph type="x-smartling-placeholder">
- </ph>
gdbserver
verschoben vontoolchain/<arch-os-ver>/prebuilt/gdbserver
bisprebuilt/android-<arch>/gdbserver/gdbserver
- Präfix der x86-Toolchain von
i686-android-linux-
umbenannt ini686-linux-android-
. sources/cxx-stl/gnu-libstdc++/include
undlib
verschoben nachsources/cxx-stl/gnu-libstdc++/4.6
bei Kompilierung mit GCC 4.6 odersources/cxx-stl/gnu-libstdc++/4.4.3
bei Kompilierung mit GCC 4.4.3.libbfd.a
undlibintl.a
wurden vonlib/
nachlib32/
verschoben.
- Der Neuerstellungs- und Test-NDK-Toolchain wurden verschiedene Skripts hinzugefügt und verbessert:
<ph type="x-smartling-placeholder">
- </ph>
build-mingw64-toolchain.sh
wurde hinzugefügt, um eine neue Linux-gehostete Toolchain zu generieren die ausführbare Win32- und Win64-Dateien generiert.- Geschwindigkeit von
download-toolchain-sources.sh
durch Verwendung des Befehlsclone
und Verwendung voncheckout
nur für die Verzeichnisse verbessert, die zum Erstellen des NDK erforderlich sind Toolchain-Binärdateien. build-host-gcc.sh
- undbuild-host-gdb.sh
-Scripts wurden hinzugefügt.tests/check-release.sh
wurde hinzugefügt, um den Inhalt eines bestimmten NDK zu prüfen oder ein vorhandenes NDK-Paket.- Die eigenständigen
tests/standalone/run.sh
-Tests wurden umgeschrieben .
- Der
if_dl.h
-Header wurde von allen Plattformen und Architekturen entfernt. Die beschriebenen ElementeAF_LINK
undsockaddr_dl
sind BSD-spezifisch (d.h. sie sind nicht vorhanden) unter Linux).
- Geänderte Speicherorte der Binärdateien:
<ph type="x-smartling-placeholder">
Android NDK r8 (Mai 2012)
Diese Version des NDK unterstützt MIPS ABI und enthält einige zusätzliche Fehlerkorrekturen.
- Neue Funktionen:
-
- MIPS ABI wird jetzt unterstützt, sodass Sie Maschinencode generieren können, der auf
MIPS-basierten Android-Geräten. Zu den Hauptfunktionen für MIPS gehören MIPS-spezifische
Toolchains, Systemheader, Bibliotheken und Unterstützung für die Fehlerbehebung. Weitere Informationen zu
MIPS-Unterstützung, siehe
docs/CPU-MIPS.html
im NDK-Paket.Für ARM-basierte Geräte wird standardmäßig Code generiert. Du kannst
mips
hinzufügen zuAPP_ABI
-Definition in der DateiApplication.mk
, um für MIPS-Plattformen. Mit der folgenden Zeile wird beispielsweisendk-build
angewiesen, um deinen Code für drei verschiedene ABIs zu erstellen:APP_ABI := armeabi armeabi-v7a mips
Sofern Sie nicht auf architekturspezifische Assembly-Quellen wie ARM-Assembly angewiesen sind müssen Sie Ihre
Android.mk
-Dateien nicht berühren, um MIPS zu erstellen. Maschinencode. - Sie können mit
--arch=mips
eine eigenständige MIPS-Toolchain erstellen. beim Aufrufen vonmake-standalone-toolchain.sh
. Weitere Informationen finden Sie unterdocs/STANDALONE-TOOLCHAIN.html
.
Hinweis:Damit Ihre Apps verfügbar sind, nur Nutzern angezeigt, die auf ihren Geräten diese ausführen können, filtert Google Play zu den in Ihrer Bewerbung enthaltenen Anweisungen? Du musst nichts weiter tun. um die Filterfunktion zu aktivieren. Außerdem prüft das Android-System Ihre App auch unter Installationszeit und lässt die Installation nur dann fortgesetzt werden, wenn die Anwendung eine Bibliothek bereitstellt, die für die CPU-Architektur des Geräts kompiliert.
- MIPS ABI wird jetzt unterstützt, sodass Sie Maschinencode generieren können, der auf
MIPS-basierten Android-Geräten. Zu den Hauptfunktionen für MIPS gehören MIPS-spezifische
Toolchains, Systemheader, Bibliotheken und Unterstützung für die Fehlerbehebung. Weitere Informationen zu
MIPS-Unterstützung, siehe
- Wichtige Fehlerkorrekturen:
-
- Ein Tippfehler in der GAbi++-Implementierung wurde behoben, bei dem das Ergebnis von
dynamic_cast<D>(b)
des Basisklassenobjektsb
in der abgeleiteten KlasseD
wie folgt lautet: in die entgegengesetzte Richtung zur Basisklasse angepasst. (Problem 28721) - Es wurde ein Problem behoben, bei dem
make-standalone-toolchain.sh
nicht kopiert werden konnte.libsupc++.*
.
- Ein Tippfehler in der GAbi++-Implementierung wurde behoben, bei dem das Ergebnis von
- Weitere Fehlerkorrekturen:
-
ndk-build.cmd
wurde korrigiert, damitndk-build.cmd
auch jetzt korrekt funktioniert Der Nutzer hat die UmgebungsvariableSHELL
neu definiert. Diese kann geändert werden. bei der Installation verschiedener Entwicklungstools in Windows-Umgebungen.
Android NDK r7c (April 2012)
Diese Version des NDK enthält eine wichtige Korrektur für Tegra2-basierte Geräte und einige Zusätzliche Fehlerbehebungen und Verbesserungen:
- Wichtige Fehlerkorrekturen:
-
- Das Problem mit den Binärdateien von GNU STL armeabi-v7a wurde behoben, die bei Nicht-NEON nicht abstürzen.
Geräte. Die mit NDK r7b bereitgestellten Dateien wurden nicht richtig konfiguriert.
die zu Abstürzen auf Tegra2-basierten Geräten und anderen bei der Verwendung
Gleitkommafunktionen (z.B.
cosf
,sinf
,expf
).
- Das Problem mit den Binärdateien von GNU STL armeabi-v7a wurde behoben, die bei Nicht-NEON nicht abstürzen.
Geräte. Die mit NDK r7b bereitgestellten Dateien wurden nicht richtig konfiguriert.
die zu Abstürzen auf Tegra2-basierten Geräten und anderen bei der Verwendung
Gleitkommafunktionen (z.B.
- Wichtige Änderungen:
-
- Unterstützung für benutzerdefinierte Ausgabeverzeichnisse über
NDK_OUT
hinzugefügt Umgebungsvariable ein. Wenn diese Variable definiert ist, wird sie zum Speichern aller erzeugten Zwischendateien anstelle von$PROJECT_PATH/obj
. Die Variable ist auch vonndk-gdb
erkannt. - Zusätzliche Unterstützung für die Erstellung von Modulen mit Hunderten oder sogar Tausenden von Quellen
-Dateien, indem Sie
LOCAL_SHORT_COMMANDS
in IhremAndroid.mk
alstrue
festlegen.Durch diese Änderung muss das NDK-Build-System die meisten Verknüpfungs- und Archivierungsoptionen nutzen in Dateien als Behelfslösung für Befehlszeilenlängen umwandeln. Weitere Informationen findest du unter
docs/ANDROID-MK.html
.
- Unterstützung für benutzerdefinierte Ausgabeverzeichnisse über
- Weitere Fehlerkorrekturen:
-
- Die
android_getCpuCount()
-Implementierung incpufeatures
wurde korrigiert. Hilfsbibliothek. Auf bestimmten Geräten, auf denen Kerne dynamisch vom System aktiviert werden, wird die Gesamtzahl der aktiven Kerne erfasst, wenn die Funktion aufgerufen wurde und nicht die Gesamtzahl der physisch verfügbaren Kerne.
- Die
Android NDK r7b (Februar 2012)
Diese Version des NDK enthält Fehlerkorrekturen für native Windows-Builds, Cygwin und viele andere Verbesserungen:
- Wichtige Fehlerkorrekturen:
-
sys/atomics.h
wurde aktualisiert, um Richtigkeitsprobleme zu vermeiden auf einigen ARM-basierten Multi-Core-Geräten. Baue deine unveränderten Quellen mit diesem Version des NDK und dieses Problem sollte vollständig beseitigt werden. Weitere Informationen finden Sie unterdocs/ANDROID-ATOMICS.html
.binutils
2.19 wurde zur Behebung von Fehlern wiederhergestellt, die erschien in NDK r7 (zubinutils
2.20.1 gewechselt).ndk-build
unter 32-Bit-Linux wurde korrigiert. Durch einen Paketfehler wird eine 64-Bit-Version erstellt. der ausführbaren Dateiawk
unterprebuilt/linux-x86/bin
in NDK r7.- Der native Windows-Build (
ndk-build.cmd
) wurde korrigiert. Andere Build-Modi waren nicht betroffen sind. Folgende Fehler wurden behoben: <ph type="x-smartling-placeholder">- </ph>
- Ein Fehler in Form einer Endlosschleife / Stapelüberlauf, der beim Versuch aufgetreten ist, wurde entfernt.
zum Aufrufen von
ndk-build.cmd
aus einem Verzeichnis, das nicht oben im Ihren Projektpfad (z. B. in einem beliebigen Unterverzeichnis davon) - Ein Problem wurde behoben, bei dem die automatisch generierten Abhängigkeitsdateien ignoriert wurden. Dieses dass durch das Aktualisieren eines Headers keine Neukompilierung von Quellen ausgelöst wurde, .
- Es wurde ein Problem behoben, bei dem Sonderzeichen in Dateien oder Pfaden mit Ausnahme von Leerzeichen und Anführungszeichen nicht richtig verarbeitet wurden.
- Ein Fehler in Form einer Endlosschleife / Stapelüberlauf, der beim Versuch aufgetreten ist, wurde entfernt.
zum Aufrufen von
- Die eigenständige Toolchain wurde korrigiert, sodass bei der Verwendung von
-lstdc++
(d.h. Verknüpfung mit der GNUlibstdc++
C++-Laufzeit). Ich sollte-lgnustl_shared
verwenden, wenn Sie eine Verknüpfung mit der gemeinsam genutzten Bibliothek herstellen möchten Version oder-lstdc++
für die statische Version.Weitere Informationen zu dieser Korrektur findest du unter
docs/STANDALONE-TOOLCHAIN.html
. gnustl_shared
in Cygwin korrigiert. Der Linker hat sich beschwert, dass er nicht finden konntelibsupc++.a
, obwohl sich die Datei am richtigen Speicherort befand.- Der Cygwin-C++-Link wurde korrigiert, wenn keine bestimmte C++-Laufzeit über
APP_STL
- Sonstige Änderungen:
-
- Wenn deine Anwendung die GNU
libstdc++
-Laufzeit verwendet, führt der Compiler die Aktivierung von Ausnahmen und RTTI nicht mehr erzwungen. Durch diese Änderung wird der Code kleiner.Wenn Sie diese Funktionen benötigen, führen Sie einen der folgenden Schritte aus:
- Aktivieren Sie Ausnahmen und/oder RTTI explizit in Ihren Modulen oder
Application.mk
(empfohlen) - Definieren Sie
APP_GNUSTL_FORCE_CPP_FEATURES
bis'exceptions'
,'rtti'
oder beide in deinemApplication.mk
. Weitere Informationen finden Sie unterdocs/APPLICATION-MK.html
.
- Aktivieren Sie Ausnahmen und/oder RTTI explizit in Ihren Modulen oder
ndk-gdb
funktioniert jetzt ordnungsgemäß, wenn Ihre Anwendung private Dienste hat in unabhängigen Prozessen ausgeführt werden. Es behebt Fehler im Hauptanwendungsprozess, erster vonps
aufgeführter Prozess, bei dem es sich normalerweise um einen Dienstprozess handelt.- Ein seltener Fehler wurde behoben, bei dem NDK r7 den Wert
LOCAL_ARM_MODE
nicht anerkennte. und immer bestimmte (aber nicht alle) Quelldateien in 32-Bit-Anweisungen kompilieren. STLport
: Aktualisiere die Quellen, sodass sie der Version der Android-Plattform entsprechen. Dieses Mit dem Update wurden einige kleinere Fehler behoben: <ph type="x-smartling-placeholder">- </ph>
- Instanziierung eines unvollständigen Typs wurde korrigiert.
- Kleinere Fehler „==“ behoben im Vergleich zu "=" Tippfehler
memmove
stattmemcpy
instring::assign
verwendet- Die Verarbeitung von
IsNANorINF
,IsINF
,IsNegNAN
und usw.
Vollständige Details finden Sie im Commit-Log.
STLport
: 5 unnötige statische Initialisierer wurden aus der Bibliothek entfernt.- Die GNU-Bibliotheken libstdc++ für Armeabi-v7a wurden versehentlich für Armeabi. Diese Änderung hatte keine Auswirkungen auf die Richtigkeit, aber die Verwendung des ABI sollte eine etwas bessere Leistung bieten.
- Die Hilfsbibliothek „
cpu-features
“ wurde aktualisiert und meldet drei optionale x86-CPU-Funktionen (SSSE3
,MOVBE
undPOPCNT
) Weitere Informationen finden Sie unterdocs/CPU-FEATURES.html
. docs/NDK-BUILD.html
wurde aktualisiert, um stattdessenNDK_APPLICATION_MK
zu erwähnen vonNDK_APP_APPLICATION_MK
, um eine benutzerdefinierteApplication.mk
-Datei auszuwählen.- Cygwin:
ndk-build
erstellt kein leeres NUL mehr Datei in der aktuellen -Verzeichnis, wenn sie aufgerufen werden. - Cygwin: Verbesserte automatische Abhängigkeitserkennung hinzugefügt. In der vorherigen Version
funktionierte in folgenden Fällen nicht richtig:
<ph type="x-smartling-placeholder">
- </ph>
- Wenn das Laufwerkpräfix „Cygwin“ nicht
/cygdrive
war. - z. B. wenn Cygwin bei Bereitstellungen ohne Laufwerk
/home
bis\\server\subdir
stattC:\Some\Dir
.
- Wenn das Laufwerkpräfix „Cygwin“ nicht
- Cygwin:
ndk-build
versucht nicht, die nativen Windows-Tools unter$NDK/prebuilt/windows/bin
mit bestimmten Versionen von Cygwin und/oder GNU Make.
- Wenn deine Anwendung die GNU
Android NDK r7 (November 2011)
Diese Version des NDK enthält neue Funktionen zur Unterstützung der Android 4.0-Plattform. sowie viele weitere Ergänzungen und Verbesserungen:
- Neue Funktionen
-
- Offizielle NDK APIs für Android 4.0 (API-Level 14) mit folgenden zusätzlichen Funktionen hinzugefügt:
native Funktionen auf der Plattform:
<ph type="x-smartling-placeholder">
- </ph>
- Native Multimedia API auf Basis von Khronos Group OpenMAX AL 1.0.1 hinzugefügt
Standard. Die neuen
<OMXAL/OpenMAXAL.h>
und<OMXAL/OpenMAXAL_Android.h>
-Header ermöglichen Anwendungs-Targeting API-Ebene 14 zur Durchführung von Multimedia-Ausgaben direkt aus nativem Code mithilfe einer neuen Android-spezifische Schnittstelle für Zwischenspeicherwarteschlangen Weitere Informationen finden Sie unterdocs/openmaxal/index.html
und http://www.khronos.org/openmax/. - Die native Audio API wurde auf Basis von Khronos Group OpenSL ES 1.0.1 aktualisiert.
Standard. Mit API-Level 14 kannst du jetzt komprimierte Audiodateien (z.B. MP3, AAC,
Vorbis) in PCM übertragen. Weitere Informationen finden Sie unter
docs/opensles/index.html
und http://www.khronos.org/opensles/.
- Native Multimedia API auf Basis von Khronos Group OpenMAX AL 1.0.1 hinzugefügt
Standard. Die neuen
- CCache-Unterstützung wurde hinzugefügt. Um große Neuerstellungen zu beschleunigen, definieren Sie
NDK_CCACHE
-Umgebungsvariable aufccache
(oder den Pfad zu Ihrccache
-Binärprogramm). Nach der Deklaration wird das NDK-Build-System verwendet beim Kompilieren einer Quelldatei CCache. Hier einige Beispiele:export NDK_CCACHE=ccache
Hinweis:CCache ist nicht im NDK-Release enthalten. Sie müssen es also installieren, bevor Sie es verwenden können. Weitere Informationen zu CCache finden Sie unter http://ccache.samba.org.
- Unterstützung für die Einstellung von
APP_ABI
aufall
, um anzugeben, dass Sie Ihre NDK-Module für alle ABIs erstellen möchten, die von Ihrem jeweiligen NDK unterstützt werden Veröffentlichung. Das bedeutet, dass eine der beiden folgenden Zeilen in IhremApplication.mk
entsprechen diesem Release:APP_ABI := all APP_ABI := armeabi armeabi-v7a x86
Dies funktioniert auch, wenn Sie
APP_ABI
beim Aufrufen vonndk-build
aus der Befehlszeile aus. So können Sie schnell prüfen, Projekt-Erstellung für alle unterstützten ABIs, ohne den Wert des ProjektsApplication.mk file
Beispiel:ndk-build APP_ABI=all
- Die Variable
LOCAL_CPP_FEATURES
wurde inAndroid.mk
hinzugefügt, die kannst du angeben, welche C++ Funktionen (RTTI oder Ausnahmen) dein Modul verwendet. Dieses stellt sicher, dass die endgültige Verknüpfung ordnungsgemäß funktioniert, wenn Sie vordefinierte Module haben, zu diesen Funktionen. Siehedocs/ANDROID-MK.html
unddocs/CPLUSPLUS-SUPPORT.html
. - Gekürzte Pfade zu Quell- und Objektdateien, die in Build-Befehlen verwendet werden. Wann?
Durch Aufrufen von
$NDK/ndk-build
aus Ihrem Projektpfad, den Pfaden zur Quelle, und Binärdateien, die an die Build-Befehle übergeben werden, kürzer, da sie relativ zum aktuellen Verzeichnis übergeben werden. Hilfreich wenn Sie Projekte mit vielen Quelldateien erstellen, um Beschränkungen für die Befehlszeilenlänge, die von Ihrem Host-Betriebssystem unterstützt wird. Die Funktionsweise bleibt unverändert wenn Siendk-build
aus einem Unterverzeichnis der Projektstruktur aufrufen oder definieren SieNDK_PROJECT_PATH
so, dass es auf ein bestimmtes Verzeichnis verweist.
- Offizielle NDK APIs für Android 4.0 (API-Level 14) mit folgenden zusätzlichen Funktionen hinzugefügt:
native Funktionen auf der Plattform:
<ph type="x-smartling-placeholder">
- Experimentelle Funktionen
-
Sie können jetzt Ihre NDK-Quelldateien unter Windows ohne Cygwin erstellen, indem Sie die Methode
ndk-build.cmd
aus der Befehlszeile Ihres Projektpfads aus. Die Das Skript verwendet genau dieselben Argumente wie das ursprünglichendk-build
-Skript. Das Windows-NDK-Paket enthält eigene vordefinierte Binärdateien für GNU Make, Awk und andere für den Build erforderliche Tools. Sie müssen in der Regel nichts weiter installieren, um eine funktionierenden Build-Systems.Wichtig:
ndk-gdb
funktioniert nicht auf Windows ausführen, Sie benötigen also noch Cygwin zum Debuggen.Diese Funktion befindet sich noch in der Testphase. Probieren Sie sie also aus und melden Sie Probleme auf der Öffentliche Fehlerdatenbank oder öffentliches Forum Alle Stichproben und Einheitentests Die mit dem NDK ausgelieferte Funktion konnte mit dieser Funktion erfolgreich kompiliert werden.
- Wichtige Fehlerkorrekturen
-
- Importierte gemeinsam genutzte Bibliotheken werden jetzt standardmäßig in der Zielinstallation installiert
Standort (
libs/<abi>
), wennAPP_MODULES
nicht definiert ist in DeinApplication.mk
. Wenn beispielsweise ein Modul der obersten Ebenefoo
ein Modulbar
importiert, dann werden sowohllibfoo.so
als auchlibbar.so
werden an den Installationsspeicherort kopiert. Bisher wurde nurlibfoo.so
wurde kopiert, es sei denn, Sie habenbar
in IhremAPP_MODULES
ebenfalls. Wenn SieAPP_MODULES
explizit definieren, bleibt unverändert. ndk-gdb
funktioniert jetzt korrekt bei Aktivitäten mit mehreren Kategorien in ihre WICHTIGSTEN Intent-Filter.- Importe statischer Bibliotheken sind jetzt ordnungsgemäß transitiv. Wenn z. B. eine oberste Ebene
Das Modul
foo
importiert die statische Bibliothekbar
, die statischezoo
ist dielibfoo.so
nun mit beiden verknüpftlibbar.a
undlibzoo.a
.
- Importierte gemeinsam genutzte Bibliotheken werden jetzt standardmäßig in der Zielinstallation installiert
Standort (
- Sonstige Änderungen
-
docs/NATIVE-ACTIVITY.HTML
: Tippfehler behoben. Das Mindest-API-Level sollte 9 und nicht 8 für native Aktivitäten.docs/STABLE-APIS.html
: Fehlende Dokumentation hinzugefügt, in der EGL als unterstützte stabile API ab API-Level 9.download-toolchain-sources.sh
: zum Herunterladen der Toolchain aktualisiert Quellen von android.googlesource.com Das ist der neue Standort für die AOSP-Server.- Eine neue C++-Supportlaufzeit namens
gabi++
wurde hinzugefügt. Weitere Details sind im aktualisiertendocs/CPLUSPLUS-SUPPORT.html
verfügbar. - Es wurde eine neue C++-Supportlaufzeit mit dem Namen
gnustl_shared
hinzugefügt, die dem entsprechenden auf die gemeinsam genutzte Bibliothek von GNU libstdc++ v3 (GPLv3-Lizenz). Weitere Informationen unterdocs/CPLUSPLUS-SUPPORT.html
- Zusätzliche Unterstützung für RTTI in den STLport C++ Laufzeiten (keine Unterstützung für Ausnahmen).
- Mehrere Dateiendungen in
LOCAL_CPP_EXTENSION
werden jetzt unterstützt. Für Beispiel, um sowohlfoo.cpp
als auchbar.cxx
als C++-Quellen zu kompilieren: Folgendes deklarieren:LOCAL_CPP_EXTENSION := .cpp .cxx
- Unerwünschte exportierte Symbole wurden aus den freigegebenen Systembibliotheken mit Linkzeit entfernt. vom NDK bereitgestellt. Dadurch wird sichergestellt, dass der mit der eigenständige Toolchain generierte Code besteht kein Risiko, versehentlich von einem instabilen ABI-Symbol abhängig zu sein (z.B. libgcc.a Symbol, das sich jedes Mal ändert, wenn die zum Erstellen der Plattform verwendete Toolchain geändert wird)
- Die EGL- und OpenGLES-Khronos-Header wurden aktualisiert, um weitere Erweiterungen zu unterstützen. Hinweis
dass dadurch die NDK-ABIs für die entsprechenden Bibliotheken nicht geändert werden.
da jede Erweiterung zur Laufzeit von der Clientanwendung geprüft werden muss.
Welche Erweiterungen verfügbar sind, hängt von Ihrem tatsächlichen Gerät und Ihren GPU-Treibern ab. und nicht die Plattformversion, auf der das Gerät läuft. Wenn sich die Kopfzeile ändert, fügen Sie einfach Konstanten und Typen, um die Verwendung von Erweiterungen zu erleichtern, mit
eglGetProcAddress()
oderglGetProcAddress()
geprüft. Die In der folgenden Liste werden die neu unterstützten Erweiterungen beschrieben:- 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 (August 2011)
Diese Version des NDK enthält im Vergleich zu r6 keine neuen Funktionen. r6b-Release behebt die folgenden Probleme in r6:
- Wichtige Fehlerkorrekturen
-
- Der Build bei Verwendung von
APP_ABI="armeabi x86"
wurde behoben. mit mehreren Architekturen. - Der Speicherort vorkonfigurierter STLport-Binärdateien im NDK-Release-Paket wurde korrigiert. Ein Fehler im Skript des Pakets hat sie an der falschen Stelle platziert.
- Fehler bei der Nutzung von
atexit()
in gemeinsam genutzten Bibliotheken mit x86standalone behoben Toolchain. - Fehler bei
make-standalone-toolchain.sh --arch=x86
behoben. Früher ist ein Fehler aufgetreten um die richtigen GNU libstdc++-Binärdateien an den richtigen Speicherort zu kopieren. - Die Warnungen der eigenständigen Toolchain-Verknüpfung wurden behoben, die über das Fehlen der Definition und
Größe für das Symbol
__dso_handle
(nur ARM). - Die Aufnahmereihenfolge von
$(SYSROOT)/usr/include
für x86-Builds wurde korrigiert. Sehen Sie sich den Fehler für erhalten Sie weitere Informationen. - Die Definitionen von
ptrdiff_t
undsize_t
in x86-spezifische Systeme, wenn sie mit der eigenständigen x86-Toolchain verwendet werden.
- Der Build bei Verwendung von
Android NDK r6 (Juli 2011)
Diese Version des NDK unterstützt das x86-ABI und andere kleinere Änderungen.
Detaillierte Informationen zu den Änderungen in dieser Version finden Sie in der
Das Dokument CHANGES.HTML
ist im NDK-Paket enthalten.
- Allgemeine Hinweise:
-
- Unterstützung für x86 ABI, mit dem Sie Maschinencode generieren können
das auf kompatiblen x86-basierten Android-Geräten ausgeführt wird. Wichtige Funktionen für x86
x86-spezifische Toolchains, Systemheader, Bibliotheken und
für die Fehlerbehebung. Weitere Informationen zur x86-Unterstützung
siehe
docs/CPU-X86.html
im NDK-Paket.Standardmäßig wird Code für ARM-basierte Geräte generiert. Sie können jedoch x86 zu Ihrem
APP_ABI
-Definition in der DateiApplication.mk
, um zu erstellen für x86-Plattformen. Mit der folgenden Zeile wird beispielsweisendk-build
angewiesen, um deinen Code für drei verschiedene ABIs zu erstellen:APP_ABI := armeabi armeabi-v7a x86
Sofern Sie sich nicht auf ARM-basierte Montagequellen verlassen, Ihre
Android.mk
-Dateien zum Erstellen von x86-Maschinencode. - Sie können eine eigenständige x86-Toolchain mit der Methode
--toolchain=x86-4.4.3
beim Aufrufen vonmake-standalone-toolchain.sh
. Weitere Informationen finden Sie unterdocs/STANDALONE-TOOLCHAIN.html
. - Mit dem neuen
ndk-stack
-Tool können Sie Stacktraces inlogcat
, die mit nativem Code generiert werden. Das Tool übersetzt Anweisungsadressen in ein lesbares Format zu bringen, das Dinge wie als Funktion, Quelldatei und Zeilennummer für jeden Stack-Frame. Weitere Informationen und ein Anwendungsbeispiel finden Sie unterdocs/NDK-STACK.html
.
- Unterstützung für x86 ABI, mit dem Sie Maschinencode generieren können
das auf kompatiblen x86-basierten Android-Geräten ausgeführt wird. Wichtige Funktionen für x86
x86-spezifische Toolchains, Systemheader, Bibliotheken und
für die Fehlerbehebung. Weitere Informationen zur x86-Unterstützung
siehe
- Sonstige Änderungen:
arm-eabi-4.4.0
, das seit NDK r5 eingestellt wurde, wurde aus der NDK-Distribution entfernt.
Android NDK r5c (Juni 2011)
Diese Version des NDK enthält im Vergleich zu r5b keine neuen Funktionen. r5c-Release behebt die folgenden Probleme in der r5b-Version:
- Wichtige Fehlerkorrekturen:
-
ndk-build
: Ein seltener Fehler, der beim Ausführen einer parallelen Ausführung aufgetreten ist, wurde behoben Builds Debug-fähiger Projekte.- Ein Tippfehler wurde behoben, durch den
LOCAL_WHOLE_STATIC_LIBRARIES
nicht funktionierte mit der neuen Toolchain korrekt ausgeführt und eine Dokumentation dafür indocs/ANDROID-MK.html
. - Es wurde ein Fehler behoben, bei dem der mit
gnustl_static
verknüpfte Code bei Ausführung auf abgestürzt ist. Plattform-Releases, die älter als API-Level 8 (Android 2.2) sind ndk-gdb
: Ein Fehler wurde behoben, der beim Debugging einen Segmentierungsfehler verursachte. Android 3.0 oder neueren Geräten.<android/input.h>
: Zwei Funktionen, die auf der API-Ebene eingeführt wurden. 9 (Android 2.3) waren falsch und wurden behoben. Dadurch funktioniert zwar die Quell-API, Binärschnittstelle zum System bleibt unverändert. Bei den falschen Funktionen fehlte einhistory_index
und die richtigen Definitionen finden Sie unten: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);
- Die ARM-Binärdatei der C-Bibliothek für API-Level 9 (Android 2.3) wurde aktualisiert, damit sie unter
neue Funktionen verknüpfen, die in dieser API-Ebene hinzugefügt wurden (z. B.
pthread_rwlock_init
.
- Kleinere Verbesserungen und Korrekturen:
-
- Objektdateien sind jetzt immer in der Reihenfolge verknüpft, in der sie in
LOCAL_SRC_FILES
Dies war zuvor nicht der Fall, da die Dateien gruppiert nach Quellerweiterungen. - Wenn
import-module
fehlschlägt, wird jetzt die Liste der Verzeichnisse ausgegeben, nach denen gesucht wurde. So lässt sich prüfen, ob dieNDK_MODULE_PATH
-Definition vom Build-System verwendet wird, korrekt ist. - Wenn
import-module
erfolgreich ist, wird jetzt das Verzeichnis ausgegeben, in dem der Modul wurde im Log gefunden (sichtbar mitNDK_LOG=1
). - Die Build-Geschwindigkeit Debug-fähiger Anwendungen bei einer sehr großen Anzahl von Anwendungen erhöht Verzeichnisse in das Projekt einzubeziehen.
ndk-gdb
: Bessere Erkennung vonadb shell
-Fehlern und verbessert Fehlermeldungen.<pthread.h>
: Die Definition von wurde korrigiert.PTHREAD_RWLOCK_INITIALIZER
für API-Level 9 (Android 2.3) und höher.- Ein Modul konnte sich selbst importieren, was zu einer Endlosschleife führte. Dieses Problem wurde behoben. GNU-Marke.
- Es wurde ein Fehler behoben, der dazu führte, dass der Build fehlschlug, wenn
LOCAL_ARM_NEON
auf true (Tippfehler inbuild/core/build-binary.mk
). - Es wurde ein Fehler behoben, der die Kompilierung von
.s
-Assembly-Dateien verhinderte. (.S
Dateien waren in Ordnung).
- Objektdateien sind jetzt immer in der Reihenfolge verknüpft, in der sie in
Android NDK r5b (Januar 2011)
Diese Version des NDK enthält im Vergleich zu r5 keine neuen Funktionen. r5b-Release behandelt die folgende Probleme in der R5-Version:
- Für die r5-Binärdateien war glibc 2.11 erforderlich, die r5b-Binärdateien werden jedoch mit einer speziellen Toolchain, die auf glibc 2.7 oder höher abzielt. Die Linux-Toolchain-Binärdateien werden jetzt auf Ubuntu 8.04 oder höher.
- Ein Compiler-Fehler in der Toolchain arm-linux-androideabi-4.4.3 wurde behoben. Die vorherige Binärdatei hat ungültige Thumbnail-Anweisungssequenzen generiert, wenn der Umgang mit signierten Zeichen.
- Fehlende Dokumentation für die „gnustl_static“ für APP_STL, mit der Sie eine Verknüpfung eine statische Bibliotheksversion von GNU libstdc++. das
- Die folgenden
ndk-build
Probleme wurden behoben: <ph type="x-smartling-placeholder">- </ph>
- Ein Fehler, der inkonsistente Abhängigkeitsdateien verursacht hat, wenn ein Kompilierungsfehler unter Windows. Dies verhinderte einen ordnungsgemäßen Build nach wurde der Fehler im Quellcode behoben.
- Ein Cygwin-spezifischer Fehler, bei dem die Android-NDK-Installation oder der Projektpfad zur Generierung ungültiger Abhängigkeitsdateien. Dadurch wurden inkrementelle Builds unmöglich ist.
- Tippfehler, der verhindert hat, dass die cpufeatures-Bibliothek richtig funktioniert mit der neuen NDK-Toolchain.
- Builds in Cygwin sind schneller, da Aufrufe von
cygpath -m
vermieden werden von GNU Make für jede Quell- oder Objektdatei, was zu Problemen mit sehr großen Quellbäumen. Falls das nicht funktioniert, definieren SieNDK_USE_CYGPATH=1
in deinem umcygpath -m
wieder zu verwenden. - Die Cygwin-Installation benachrichtigt den Nutzer nun über ungültige Installationspfade, Leerzeichen enthalten. Bisher war ein ungültiger Pfad würde eine Fehlermeldung über eine falsche Version von GNU Make ausgeben, selbst wenn das das richtige installiert wurde.
- Ein Tippfehler wurde behoben, der verhinderte, dass die Umgebungsvariable
NDK_MODULE_PATH
ordnungsgemäß funktioniert, wenn mehrere Verzeichnisse enthalten, die durch einen Doppelpunkt getrennt waren. - Das Skript
prebuilt-common.sh
enthält Korrekturen, um den Compiler auf 64-Bit zu prüfen generiertem Maschinencode statt auf das Host-Tag, ermöglicht die ordnungsgemäße Neuerstellung der 32-Bit-Toolchain auf Snow Leopard. Skripts zur Neuerstellung der Toolchain unterstützen jetzt auch mithilfe einer 32-Bit-Host-Toolchain. - Eine fehlende Deklaration für „
INET_ADDRSTRLEN
“ wurde hinzugefügt zu<netinet/in.h>
. - Fehlende Deklarationen für
IN6_IS_ADDR_MC_NODELOCAL
undIN6_IS_ADDR_MC_GLOBAL
wurden<netinet/in6.h>
hinzugefügt. - „asm“ wurde durch "__asm__" ersetzt in
<asm/byteorder.h>
zum Zulassen Kompilierung mit-std=c99
.
Android NDK r5 (Dezember 2010)
Diese Version des NDK enthält viele neue APIs, von denen die meisten in
die Entwicklung von Spielen und ähnlichen Anwendungen unterstützen, die
von nativem Code. Über die APIs haben Entwickler direkten Zugang zu Ereignissen, Audioinhalten,
Grafik- und Fensterverwaltung, Assets und Speicher. Entwickelnde können auch die
Lebenszyklus von Android-Apps in nativem Code mithilfe des neuen
Klasse NativeActivity
. Detaillierte Informationen zu den Änderungen
in diesem
veröffentlicht, lies das CHANGES.HTML
-Dokument im heruntergeladenen NDK
Paket.
- Allgemeine Hinweise:
-
- Native Aktivitäten werden jetzt unterstützt, sodass Sie die Lebenszyklus von Android-Apps in nativem Code
- Native Unterstützung für Folgendes:
<ph type="x-smartling-placeholder">
- </ph>
- Eingabesubsystem (z. B. Tastatur und Touchscreen)
- Zugriff auf Sensordaten (Beschleunigungsmesser, Kompass, Gyroskop usw.)
- Ereignisschleifen-APIs, die auf Eingaben wie Eingabe- und Sensorereignisse warten.
- Fenster- und Oberflächen-Subsystem
- Auf dem OpenSL ES-Standard basierende Audio-APIs, die die Wiedergabe und Aufzeichnung unterstützen und über die Plattform-Audioeffekte
- Zugriff auf Assets, die in einer
.apk
-Datei verpackt sind.
- Enthält eine neue Toolchain (basierend auf GCC 4.4.3), die besseren Code generiert und
auch jetzt
als eigenständiger Cross-Compiler verwendet werden, für Nutzer, die ihre Inhalte mit
./configure && make
Weitere Informationen finden Sie unter docs/STANDALONE-TOOLCHAIN.html finden Sie weitere Informationen. Die Binärdateien für GCC 4.4.0 sind immer noch bereitgestellt, aber die 4.2.1-Binärdateien wurden entfernt. - Unterstützung für vorkonfigurierte statische und gemeinsam genutzte Bibliotheken (docs/PREBUILTS.html) und Modul Exporte und Importe, um das Teilen und die Wiederverwendung von Drittanbietermodulen zu vereinfachen (docs/IMPORT-MODULE.html erläutert die Gründe).
- Stellt eine Standardimplementierung in C++ STL (basierend auf STLport) als Hilfsmodul bereit. Es kann entweder als statische oder gemeinsam genutzte Bibliothek (Details und Anwendungsbeispiele finden Sie „sources/android/stlport/README“. Vorgefertigt Binärdateien für STLport (statisch oder freigegeben) und GNU libstdc++ (nur statisch) sind ebenfalls zur Verfügung gestellt, wenn Sie diese Bibliotheken anstelle der standardmäßigen C++ STL-Implementierung zu kompilieren. C++-Ausnahmen und RTTI werden in der standardmäßigen STL-Implementierung nicht unterstützt. Weitere Informationen finden Sie unter docs/CPLUS-SUPPORT.HTML.
- Enthält Verbesserungen an der Hilfsbibliothek
cpufeatures
, die verbessert Berichterstellung des CPU-Typs (einige Geräte meldeten zuvor eine ARMv7-CPU, als das Gerät tatsächlich ARMv6). Mi. empfehlen Entwicklern, die diese Bibliothek zur Neuerstellung ihrer Anwendungen verwenden, dann bei Google Play hochladen, um von den Verbesserungen zu profitieren. - Fügt eine EGL-Bibliothek hinzu, mit der Sie OpenGL ES-Texturen und .
- Neue Beispielanwendungen hinzugefügt:
native-plasma
undnative-activity
, wie eine native Aktivität geschrieben wird. - Es wurden zahlreiche Fehlerkorrekturen und andere kleine Verbesserungen vorgenommen. docs/CHANGES.html finden Sie eine Mehr eine detaillierte Liste der Änderungen.
Android NDK r4b (Juni 2010)
- NDK r4b-Hinweise:
-
Enthält Korrekturen für verschiedene Probleme in den NDK-Build- und Debugging-Skripts, falls Sie NDK r4 verwenden, empfehlen wir, den Build NDK r4b herunterzuladen. Ausführliche Informationen Informationen zu den Änderungen in dieser Version finden Sie im CHANGES.TXT-Dokument. im heruntergeladenen NDK-Paket enthalten.
- Allgemeine Hinweise:
-
- Bietet ein vereinfachtes Build-System über den neuen
ndk-build
-Build . - Unterstützung für einfaches natives Debugging von generiertem Maschinencode in der Produktion
mit dem neuen Befehl
ndk-gdb
. - Es wurde ein neues Android-spezifisches ABI für ARM-basierte CPU-Architekturen hinzugefügt.
armeabi-v7a
Das neue ABI erweitert das bestehende ABI vonarmeabi
auf die folgenden CPU-Anweisungssatz-Erweiterungen enthalten: <ph type="x-smartling-placeholder">- </ph>
- Daumen-2-Anleitung
- FPU-Anleitung für VFP-Hardware (VFPv3-D16)
- Optionale Unterstützung für ARM Advanced SIMD (NEON) GCC-Intrinsiken und VFPv3-D32. Unterstützt von Geräten wie Verizon Droid by Motorola, Google Nexus One und andere.
- Fügt eine neue statische
cpufeatures
-Bibliothek (mit Quellen) hinzu, mit der Ihr App die CPU-Funktionen des Hostgeräts zur Laufzeit erkennen. Anwendungen können prüfen Sie auf Unterstützung für ARMv7-A, VFPv3-D32 und NEON und stellen Sie dann separate Codepfade nach Bedarf. - Fügt die Beispielanwendung
hello-neon
hinzu, die zeigt, wie diecpufeatures
, um CPU-Funktionen zu prüfen und dann eine optimierte Codepfad mit NEON-Anweisungen, wenn dies von der CPU unterstützt wird. - Ermöglicht das Generieren von Maschinencode für einen oder beide der unterstützten Anweisungssätze
vom NDK. Sie können beispielsweise sowohl ARMv5- als auch ARMv7-A-Architekturen auf der
und speichern alle Daten im endgültigen
.apk
- Um sicherzustellen, dass Ihre Anwendungen nur für Nutzer verfügbar sind, deren Geräte ausgeführt werden kann, filtert Google Play Apps jetzt basierend auf den in Ihrer Anwendung enthaltene Anweisungssatzinformationen – keine Maßnahmen erforderlich für um die Filterung zu aktivieren. Außerdem prüft das Android-System Ihre Anwendung bei der Installation aktualisiert und die Installation nur dann fortgesetzt wird, wenn der App eine Bibliothek bereitstellt, die für die CPU-Architektur des Geräts kompiliert ist.
- Unterstützung für Android 2.2, einschließlich einer neuen stabilen API für den Zugriff auf das Pixel
Zwischenspeicher von
Bitmap
-Objekten aus nativem Code
- Bietet ein vereinfachtes Build-System über den neuen
Android NDK r3 (März 2010)
- Allgemeine Hinweise:
-
- Unterstützung der nativen OpenGL ES 2.0-Bibliothek wurde hinzugefügt.
- Fügt die Beispielanwendung
hello-gl2
hinzu, die die Verwendung von veranschaulicht OpenGL ES 2.0-Vertex- und Fragment-Shader. - Die Toolchain-Binärdateien wurden für diesen Release mit GCC 4.4.0 aktualisiert. Er sollte etwas kompakteren und effizienteren Maschinencode generieren als der vorherige. (4.2.1): Das NDK stellt auch weiterhin die 4.2.1-Binärdateien bereit, die Sie optional verwenden können. um Ihren Maschinencode zu erstellen.
Android NDK r2 (September 2009)
Ursprünglich veröffentlicht als „Android 1.6 NDK, Release 1“.
- Allgemeine Hinweise:
-
- Unterstützung der nativen OpenGL ES 1.1-Bibliothek wurde hinzugefügt.
- Fügt die Beispielanwendung
san-angeles
hinzu, die 3D-Grafiken rendert über die nativen OpenGL ES-APIs verwalten und den Aktivitätslebenszyklus mit einemGLSurfaceView
-Objekt verwalten.
Android NDK r1 (Juni 2009)
Ursprünglich veröffentlicht als „Android 1.5 NDK, Release 1“.
- Allgemeine Hinweise:
-
- Umfasst Compiler-Unterstützung (GCC) für ARMv5TE-Anweisungen, einschließlich Thumb-1 Anleitung.
- Enthält Systemheader für stabile native APIs, Dokumentation und Beispiel Anwendungen.