NDK-Überarbeitungsverlauf

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.
Ä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.
Ä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.
Ä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.
Ä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).
Ä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 Sie as verwenden verwenden Sie stattdessen clang.
  • 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.
Ä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)
    Im Allgemeinen sollte sich diese Änderung nur auf Build-Systemverwalter auswirken. die nicht auf dem neuesten Stand sind. ndk-build und die Nutzer der CMake-Toolchain sind davon nicht betroffen 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.
Ä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.
Ä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//bin/armv7a-linux-androideabi26-clang++ src.cpp
               
    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 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.
Ä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.
Ä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.
Ä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 r17 libc++ ist die standardmäßige STL für CMake- und eigenständige Toolchains. Wenn Sie manuell eine andere STL enthalten, empfehlen wir dir dringend, zu libc++ 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.

Ä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:
  • 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.

  • 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). Wenn APP_PLATFORM festgelegt ist niedriger als android-14 ist, wird stattdessen android-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.
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.

Ä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.

Weitere Informationen zu den Neuerungen und Änderungen in dieser Version finden Sie in diesem Änderungsprotokoll aufgelistet.

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
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:
Downloads
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, ob make_standalone_toolchain.py Ihren Anforderungen entspricht.
  • Melden Sie Probleme an GitHub.
R12B <ph type="x-smartling-placeholder">
    </ph>
  • 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)
  • 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 mit INFO_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 und clang++.exe in der 32-Bit-Version Windows-Pakete sind in Wirklichkeit eine 64-Bit-Version. Die ausführbare 32-Bit-Datei hat den Namen clang_32.exe
  • __thread sollte in Echtzeit funktionieren.
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.
Downloads
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 zum make_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 und clang++.exe ausführbare Dateien im 32-Bit-Windows-Paket sind eigentlich 64-Bit-Dateien. Die Die ausführbare 32-Bit-Datei hat den Namen clang_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 Tags ACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAP wurde versehentlich aufgeführt und wird in der nächsten Version entfernt. Verwenden Sie ACAMERA_STATISTICS_LENS_SHADING_MAP.
Ä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)
Logo: NDK
  • Wichtige Ankündigungen <ph type="x-smartling-placeholder">
  • Ä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 in make-standalone-toolchain.sh.
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.
Clang-Sprache
  • Wichtige Ankündigungen <ph type="x-smartling-placeholder">
      </ph>
    • Wir empfehlen dringend, zu Clang zu wechseln.
    • 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.
  • 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.
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.
  • 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.
  • 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 als armv5te-linux-androideabi.
    • 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.
  • 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 und uchar.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.
Binutils
  • Ergänzungen <ph type="x-smartling-placeholder">
      </ph>
    • Neue Option hinzugefügt: --pic-veneer.
  • 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).
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
YASM
  • Änderungen <ph type="x-smartling-placeholder">
      </ph>
    • Aktualisierung von YASM auf Version 1.3.0.
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 mit dynamic_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.
Downloads
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.
  • GDB/gdbserver wurde für alle Architekturen auf Version 7.7 aktualisiert.
  • Das NDK-Paket für 32-Bit-Darwin wurde entfernt.
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_* in media/NdkMediaDrm.h korrigiert.
    • sys/ucontext.h für mips64 korrigiert.
    • Clang-Versionsprüfung für __builtin_isnan verworfen und __builtin_isinf.
    • android-21/arch-mips/usr/include/asm/reg.h“ wurde hinzugefügt und android-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 und mips64 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ür mips64. 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 und 1 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 ABI x86_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 Befehl ndk-build.cmd über gradle ausführen. (Problem 66937) zurück
  • Die Bibliotheken libatomic.a und libgomp.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ür aarch64 hinzugefügt. Die Standardverknüpfung bleibt ld.bfd. Um ld.gold explizit zu aktivieren, fügen Sie -fuse-ld=gold zum LOCAL_LDFLAGS oder APP_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 zu ndk-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.
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ügen make-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-build PIE 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.
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 Fehlerkorrekturen:
  • Folgende Fehler in der Kopfzeile und Bibliothek wurden behoben:
    • posix_memalign wurde API-Level 16 hinzugefügt. Außerdem wurde ein Prototyp stdlib.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 und gl2ext.h, dlext.h, fts.h, sgidefs.h für API-Level 21.
    • sys/user.h wurde so geändert, dass mxcsr_mask in mxcr_mask umbenannt wird, und um den Datentyp für u_ar0 zu ändern
    • von unsigned long um user_regs_struct* zu strukturieren.
    • Der Rückgabewerttyp sysconf() wurde von int in long
  • Fehler bei der Verarbeitung von thumb für LOCAL_ARM_MODE durch ndk-build behoben: in r10d, ndk-build fügt standardmäßig LOCAL_LDFLAGS+=-mthumb hinzu, es sei denn, eines der gelten die folgenden Bedingungen:
    • Du hast LOCAL_ARM_MODE auf arm gesetzt.
    • Sie führen einen Debug-Build aus (mit Einstellungen wie APP_OPTIM=debug und AndroidManifest.xml mit android: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)
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
    • Weitere Informationen finden Sie unten im Abschnitt Wichtige Fehlerkorrekturen.

  • 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.
    • 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.

  • 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 sich prebuilt/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 in samples/ an.
    • Weitere Informationen finden Sie im Intel-Leitfaden zur Portierung von ARM NEON zu Intel SSE.
  • Die Unterstützung von _FORTIFY_SOURCE in headers/libs/android-21 wurde dokumentiert. die in r10 vorkamen (als android-21 noch Android-L hieß), hatte aber keine Dokumentation.
Wichtige Fehlerkorrekturen:
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 und ASensor_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 und sys/user.h wurden allen API-Ebenen hinzugefügt. Die Der signal.h-Header enthält jetzt <sys/ucontext.h>. Sie können Entfernen Sie alle vorhandenen Definitionen von struct 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 und clock_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 und dlmalloc.
    • 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 zu int geändert: die folgenden Funktionen: strtoll_l, strtoull_l, wcstoll_l und wcstoull_l.
    • Die folgenden Funktionen wurden in der 64-Bit-Architektur wiederhergestellt: arc4random, arc4random_buf und arc4random_uniform.
    • cxa_* und die Operatoren new und delete wurden zurück verschoben an libstdc++.so. Durch diese Änderung wird das R9D-Verhalten wiederhergestellt. Vorherige Versionen von r10 Platzhalterdateien enthalten.
  • 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= in make-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.
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 und include-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)
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:
  • gdb 7.6 in GCC 4.8/4.9 wurde behoben. (Probleme 74112 und 74371)
  • GCC 4.8/4.9 für x86 wurde behoben, sodass -msse4.2 und -mpopcnt nicht mehr standardmäßig aktiviert werden. (Problem 73843)
Weitere Fehlerkorrekturen:
  • stdio.h wurde aus den include-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/ und sources/third_party/googletest/README.NDK vorgenommen. (Problem 74069)
  • Es wurden folgende Korrekturen an den Android-L-Headern vorgenommen:
    1. Den Funktionen ctype.h und wchar.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().
    2. cmsg_nxthdr wurde in __cmsg_nxthdr umbenannt.
    3. __libc_malloc_dispatch wurde entfernt.
    4. Der Prototyp von ptrace() wurde in long ptrace(int, ...); geändert.
    5. sha1.h wurde entfernt.
    6. android_dlextinfo in android/dlext.h verlängert.
    7. Annotierte __NDK_FPABI__ für Funktionen, die Gleitkomma- oder Doppelwerte in stdlib.h, time.h, wchar.h und complex.h empfangen oder zurückgeben.
Sonstige Änderungen:
  • mipsel-linux-android-4.9 und mips64el-linux-android-4.9 wurden aktualisiert, Implementierung eines neuen multilib-Verzeichnislayouts und Unterstützung für gdb-7.7
  • cpu-features wurde optimiert, sodass mehr Arm64-Funktionen erkannt werden. (Änderungsliste 100339.)
Wichtige Änderungen:
  • Drei neue ABIs mit 64-Bit hinzugefügt: arm64-v8a, x86_64 und mips64.
  • Beachten Sie Folgendes: <ph type="x-smartling-placeholder">
      </ph>
    • 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 und all64 Einstellungen für APP_ABI.
      • APP_ABI=all32 entspricht APP_ABI=armeabi,armeabi-v7a,x86,mips.
      • APP_ABI=all64 entspricht APP_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 nach Application.mk oder exportieren Sie es als über die Befehlszeile eingeben.
    • Verwenden Sie für eine eigenständige Toolchain die Option --toolchain= in der make-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 oder 4.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)
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:
  • llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef): Assertion Weights.size() >= 2 && "Need at least two branch weights!" (Problem 57381)
  • Folgender Absturz von Clang 3.3/3.4 wurde behoben:
  • 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)
Weitere Fehlerkorrekturen:
  • Feste Header:
    • 32-Bit-ssize_t wurde auf int anstelle von long int geändert.
    • WCHAR_MIN und WCHAR_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 und pread64 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:
  • include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int); (Änderungsliste 91185).
  • 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. verwendet strrchr() statt strchr(), 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.
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.
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 in libs/armeabi-v7a kopiert. Für Marken wie erwartet verhalten, können Sie nicht sowohl armeabi-v7a als auch armeabi-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 mit armeabi 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 obigen CFLAGS und LFLAGS Ihrem Makefile, um GCC oder Clang für die Verknüpfung zu aktivieren Bibliotheken in /hard.
  • Yasm-Assembler und LOCAL_ASMFLAGS hinzugefügt und EXPORT_ASMFLAGS für x86 Ziele. Das Skript ndk-build verwendet prebuilts/*/bin/yasm* zum Erstellen von LOCAL_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 oder APP_STL := c++_shared in Application.mk hinzu. Sie können den Build mit LIBCXX_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.
    Weitere Informationen finden Sie unter CPLUSPLUS-SUPPORT.html. (Problem 36496)
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
  • 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 in android/asset_manager.h für Android API-Level 13 und höher. (Problem 64988)
    • Fehlendes #include behoben in android/rect_manager.h für Android API-Level 14 und höher.
    • JNICALL zu JNI_OnLoad und „JNI_OnUnload“ in jni.h. Hinweis: JNICALL ist definiert als __NDK_FPABI__. Weitere Informationen finden Sie unter sys/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
    • 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ügt scalblnl bis x86 libm.so für APIs 18 und höher.
    • Tippfehler in sources/android/support/include/iconv.h (Problem 63806)
  • gabi++ std::unexpected() wurde korrigiert, um anzurufen std::terminate(), damit kann ein benutzerdefinierter std::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öst onSystemUiVisibilityChange 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, um ld.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 von SHELL behoben als eine Umgebungsvariable statt sie an die python.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, Die cmd.exe- und MinGW-Shells verstehen nicht, von cygwin erstellte Symlinks.
Sonstige Änderungen:
  • Ausführungsberechtigungen wurden auf alle *cmd Scripts angewendet zuvor nur für die Verwendung in der cmd.exe-Shell vorgesehen, falls verwenden Entwickler lieber ndk-build.cmd in Cygwin empfohlenes Skript für ndk-build.
  • Die Geschwindigkeit von make-standalone-toolchain.sh wurde verbessert durch Verschieben statt Kopieren, wenn das angegebene Zielverzeichnis ist nicht vorhanden.

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 in poll.h zu poll(struct pollfd *, nfds_t, int); geändert.
    • utimensat wurde libc.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 in libc.so eingeführt Level 19.
    • Fehlende clock_settime() und clock_nanosleep() bis time.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, und CLOCK_BOOTTIME_ALARM in time.h.
    • Veraltete CLOCK_REALTIME_HR und CLOCK_MONOTONIC_HR.
  • 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 ist cmd.exe, wenn LOCAL_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 Abschnitt stack:, der pc nicht enthält, eip oder ip. 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.
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 an ndk-build. Mit dieser Einstellung nimmt ndk-build folgende Aktion vor: nach NDK_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ür APP_* in Application.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 Skript ndk-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, um APP_ABI zu melden Kompilierung.
  • Das ar-Tool im deterministischen Modus verwendet (Option) -D) zum Erstellen statischer Bibliotheken. (Problem 60705)
Wichtige Änderungen:
  • include/android/*h und math.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 unter tests/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 Sie GCC_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)
Weitere Fehlerkorrekturen:
  • Fehlerkorrekturen in der Kopfzeile <ph type="x-smartling-placeholder">
      </ph>
    • ARM WCHAR_MIN und WCHAR_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 er TCP_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 und imaxdiv wurden aus der Kopfzeile entfernt inttypes.h
    • Ein Problem mit den Rückgabewerten von pthread_exit() und pthread_self() wurde behoben. (Problem 60686)
    • Fehlende Funktion mkdtemp() hinzugefügt, die bereits in bionic vorhanden ist Header stdlib.h.
  • 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ür ssax-instructions und fenv.
  • 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 unter NDK-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)
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 unter tests/device/test-openmp.
  • Die Größe von ld.mcld wurde erheblich reduziert (1,5 MB gegenüber ld.bfd 3,5 MB und ld.gold 7,5 MB), was zu einer Geschwindigkeitsverbesserung von ca.20 % führt.
  • LOCAL_CONLYFLAGS und APP_CONLYFLAGS zur Angabe hinzugefügt -Optionen nur für C, aber nicht für C++. Die vorhandene LOCAL_CFLAGS und APP_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.
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 in samples/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 Sie NDK_TOOLCHAIN_VERSION=4.8 oder unter Application.mk hinzufügen.
    • Verwenden Sie für eigenständige Builds die Option --toolchain= in make-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 ändern

    Hinweis: 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.

  • 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 der LOCAL_LDFLAGS oder APP_LDFLAGS, um MCLinker zu aktivieren.
  • Das ndk-depends-Tool, das ELF-Bibliotheksabhängigkeiten ausgibt, wurde hinzugefügt. Weitere Informationen findest du unter NDK-DEPENDS.html. (Problem 53486)
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 und libc.a wurden korrigiert, um die wait4()-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 Datei linker.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 einem bx pc- oder blx pc Hinweis zu „Daumen hoch“. (Problem 56962, Problem 36149)
  • Fehler bei MIPS gdbserver behoben, um nach DT_MIPS_RLD_MAP statt nach DT_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)
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 die ndk-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 ein backward/-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 von CPU_ABIS, nicht von APP_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 inkonsistente typedef wurde behoben. von _Unwind_Control_Block. (Problem 54426)
  • Fehler in awk-Skripts wurden behoben, um AndroidManifest.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 den prebuilts/ 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 und pr2 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)
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 in errno.h wurde verworfen und libc.so wurde eingestellt exportiert.
    • elf.h wurde so geändert, dass stdint.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 auf const void* korrigiert. (Problem 55725)
    • stdint.h wurde korrigiert, um die Kompatibilität mit C99 zu verbessern. (Änderung 46821)
    • wchar.h wurde so geändert, dass WCHAR_MAX und WCHAR_MIN
    • Die <inttypes.h>-Deklaration für die zeigerbezogenen PRI und SCN-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, dass wchat_t für alle API-Ebenen. Wenn Sie das vorherige Verhalten wiederherstellen möchten, definieren Sie die _WCHAR_IS_8BIT booleschen Variablen. (Problem 57267)
  • 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, um stlport zu unterstützen. Bibliothek zusätzlich zu gnustl, wenn Sie die Option --stl=stlport. Weitere Informationen findest du unter STANDALONE-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 zu clang und clang++, 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.
  • -mldc1-sdc1 wurde den MIPS GCC- und Clang-Compilern hinzugefügt. Compiler 8-Byte-Objekte korrekt ausrichten und die Anweisungen ldc1 und sdc1 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 von ldc1- und sdc1-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 als APP_MIN_PLATFORM_LEVEL. APP_PLATFORM_LEVEL kann niedriger ausfallen als APP_PLATFORM in jni/Application.mk, da das NDK keine für alle Ebenen. In diesem Fall wird der tatsächliche Pegel nach unten verschoben. Die APP_MIN_PLATFORM_LEVEL wird durch die android:minSdkVersion in im Manifest Ihrer App. (Problem 39752)
  • Die Methoden android_getCpuIdArm() und android_setCpuArm() wurden hinzugefügt zu cpu-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 die as/ld von GCC 4.7 verwendet wird.

    Hinweis: In GCC 4.7 wurden monotonic_clock und is_monotonic umbenannt in steady_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.
  • Build-Skripts wurden aktualisiert, sodass APP_MODULES nicht definiert und nur statisch ist. sind in Android.mk aufgeführt, erzwingt das Skript ihre Erstellung. (Problem 53502)
  • ndk-build wurde aktualisiert, sodass absolute Pfade in LOCAL_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ür libraries/gdbserver aus dem Standardwert $PROJECT/libs. Weitere Informationen findest du unter OVERVIEW.html.
  • ndk-build-Skriptstandards so geändert, dass Code mit Format-String-Schutz kompiliert wird -Wformat -Werror=format-security Sie können Zum Deaktivieren LOCAL_DISABLE_FORMAT_STRING_CHECKS=true. Weitere Informationen findest du unter ANDROID-MK.html.
  • In ndk-gdb-py wird STL-Pretty Print-Unterstützung hinzugefügt. Weitere Informationen finden Sie unter NDK-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.
Wichtige Änderungen:
  • 64-Bit-Hosttoolchain-Satz wurde hinzugefügt (Suffix des Paketnamens *-x86_64.*). Weitere Informationen Weitere Informationen finden Sie unter CHANGES.HTML und NDK-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 unter CHANGES.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 und LOCAL_SHARED_LIBRARIES Weitere Informationen findest du unter CHANGES.HTML. (Problem 39378)
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 und steady_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 in uncaught_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 und DW_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)
Weitere Fehlerkorrekturen:
  • Feste NDK-Header: <ph type="x-smartling-placeholder">
      </ph>
    • Redundante Definitionen von size_t, ssize_t und ptrdiff_t
    • Fester MIPS- und ARM-fenv.h-Header.
    • Fehler bei stddef.h wurde behoben, durch den offsetof nicht neu definiert wurde, da es bereits existiert. in der Toolchain aus.
    • elf.h wurde korrigiert, sodass Elf32_auxv_t und Elf64_auxv_t enthalten waren. (Problem 38441)
    • Die #ifdef C++-Definitionen in der OpenSLES_AndroidConfiguration.h-Headerdatei. (Problem 53163)
  • 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 der libgcc_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 und clang++ im eigenständigen NDK-Compiler wurden korrigiert, um die -cc1 und nicht -target, wenn gefunden.
  • ndk-build wurde korrigiert, um NDK_APP_OUT in Application.mk zu beobachten.
  • Fehler bei X86 libc.so und lib.a behoben, bei denen sigsetjmp fehlte und siglongjmp, die bereits in setjmp.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 der LOCAL_PATH-Definition. (Problem 42841)
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 unter CHANGES.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 das obj/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ür ld.gold wurden in GCC 4.6/4.7 aktiviert.
  • --text-reorder wurde in GCC 4.7 für ld.gold aktiviert.
  • GNU libstdc++ mit _GLIBCXX_USE_C99_MATH konfiguriert, wodurch die isinf-Script im Bionic-Header. Weitere Informationen finden Sie unter CHANGES.html
  • APP_LDFLAGS wurde den Build-Skripts hinzugefügt. Weitere Informationen finden Sie unter ANDROID-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 von pentiumpro und generic zu i686 und atom.
  • 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-Typ mingw behoben. was die parallele Build-Verarbeitung erheblich verhinderte.
    • build-gabi++.sh und build-stlport.sh wurden aktualisiert, sodass sie jetzt ausgeführt werden können aus dem NDK-Paket. (Problem 52835)
    • run-tests.sh in der Dienstprogrammsammlung MSys 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 und stlport_static.a hinzugefügt ohne Verborgenheit.
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 Variable NDK_TOOLCHAIN_VERSION=4.7. oder füge ihn Application.mk hinzu.
    • Fügen Sie für eigenständige Builds die Option --toolchain= zu make-standalone-toolchain.sh, z. B.:
      --toolchain=arm-linux-androideabi-4.7

    Hinweis:Dies ist eine experimentelle Funktion. Versuchen Sie es und Probleme melden.

  • Support für stlport-Ausnahmen über gabi++ wurde hinzugefügt. Beachten Sie, dass die neue gabi++- hängt von dlopen 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. oder libstlport_static.a mithilfe von APP_STL := stlport_static (Sie können die Option -static weiterhin mit einer eigenständigen Toolchain.) Kompilierung einer dynamischen ausführbaren Datei mithilfe von include $(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.
    Weitere Informationen findest du unter 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.

  • 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 zu sources/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
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)
Weitere Fehlerkorrekturen:
  • Fehlerbehebungen bei NDK-Header-Dateien: <ph type="x-smartling-placeholder">
      </ph>
    • Der Typ von __WINT_TYPE__ und wint_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__ in sys/cdefs.h hinzugefügt. (Problem 14627)
    • Die Überschriften in byteswap.h und dirent.h wurden neu angeordnet.
    • limits.h wurde korrigiert, sodass page.h mit PAGE_SIZE bereitgestellt wird. Einstellungen. (Problem 39983)
    • Fester Rückgabetyp von glGetAttribLocation() und glGetUniformLocation() von int bis GLint.
    • Die __BYTE_ORDER-Konstante für x86-Builds wurde korrigiert. (Problem 39824)
  • 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 und HOST_MAKE-Einstellungen.
  • Es wurde ein Problem mit ld.gold in fsck_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.
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 in lib32/.
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 Umgebungsvariable Application.mk hinzu.
    • Für eigenständige Builds --llvm-version=3.1 hinzufügen zu make-standalone-toolchain.sh und ersetzen Sie CC und CXX 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.

  • 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 den ld.bfd zu verwenden. durch Hinzufügen von LOCAL_LDFLAGS += -fuse-ld=bfd zu Android.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] und ndk-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 in APP_PLATFORM, project.properties oder default.properties-Link mit android-9 statt mit android-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 Option APP_PIE können Sie dieses Verhalten steuern. Weitere Informationen findest du unter APPLICATION-MK.html.

      Hinweis:Alle API-Ebenen über 14 sind weiterhin mit platforms/android-14 verknüpft und es wurden keine neuen platforms/android-N hinzugefügt.

    • ndk-build wurde so geändert, dass Warnungen angezeigt werden, wenn das angepasste API-Level höher ist. als android:minSdkVersion in der AndroidManifest.xml des Projekts.
  • Die Hilfsbibliothek „cpu-features“ wurde aktualisiert und enthält jetzt mehr ARM-spezifische Funktionen. Weitere Informationen findest du unter sources/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 und crt*.o richtig verknüpft ist.
    • -mfpu=vfpv3-d16 wurde ndk-build hinzugefügt anstelle von Die Option „-mfpu=vfp“ wurde in früheren Releases verwendet.
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 vordefinierten echo.exe entfernt. Der redundante \r hat dazu geführt, dass gdb.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 den typeinfo-Namen nicht zusammengeführt werden Standardeinstellung. Weitere Informationen finden Sie unter toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo (Problem 22165)
  • Problem im null-Kontext in GCC 4.6 behoben cp/mangle.c::write_unscoped_name, wobei GCC abstürzen kann, wenn der Kontext null und in TREE_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 vong++ <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 in LOCAL_SRC_FILES hat auch APP_STL verwendet. Mit APP_STL kann das Das Skript ndk-build sucht in LOCAL_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 in LOCAL_SRC_FILES wie myfile.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 ohne tag_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 neueren binutils-2.21
    • Ein Problem in der GNU-stdc++-Kompilierung mit -mthumb und -march=armv7-a, indem Sie make-standalone-toolchain.sh so ändern, dass Werte eingefügt werden headers/libs im Unterverzeichnis armv7-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 von char den falschen Operandentyp erwartet. (GCC-Problem 50099)
    • Interner Compiler-Fehler mit negativem Verschiebungsbetrag behoben. (GCC-Problem)
  • Fehler bei -fstack-protector für X86 behoben, der auch die Standardeinstellung für die ndk-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 MIPS libstlport_* 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)
  • 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, wenn APP_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 von solib-Ereignissen beschleunigt. (Problem 37677)
    • Es wurde eine Korrektur hinzugefügt, um wiederholte Versuche, solib Haltepunkte zu finden. GDB jetzt wiederholt enable_break() bei jedem Aufruf von svr4_current_sos() bis dass es erfolgreich ist. (Änderung 43563)
    • gdb wurde nicht bei Haltepunkten angehalten in dlopen-ed-Bibliotheken. (Problem 34856)
    • Fehler bei SIGILL in der dynamischen Verknüpfung beim Aufrufen von dlopen() auf dem System behoben wobei /system/bin/linker keine Symbole enthält und rtld_db_dlactivity() wird als Thumb implementiert, da sie nicht beibehalten wird LSB von sym_addr. (Problem 37147)
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 in linux/sysctl.h und linux/icmp.h, um einen Konflikt mit #define __unused in sys/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 von uint64_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 und ULONG_LONG_MAX von <pthread.h> bis <limits.h>.
  • 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, wenn STLport 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, sodass atexit() 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 von crtbegin_*.o.

    Wenn Ihr Projekt mit den Optionen -nostdlib -Wl,--no-undefined verknüpft ist, gilt Folgendes: muss eigene __dso_handle angeben, da crtbegin_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ür plt-Einträge verwendet wird, um Generieren Sie ein lesbareres Formular function@plt.
  • Die folgenden Symbole, die in GCC 4.6 libgcc.a eingeführt wurden, wurden aus die Bibliothek der X86-Plattform libc.so: __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1 und __aeabi_unwind_cpp_pr2.
  • Nicht verwendete .ctors, .dtors und .eh_frame in MIPS entfernt crt*_so.S.
  • ndk-gdb wurde so aktualisiert, dass nur die letzte Ausgabezeile für ndk-build DUMP_XXXX. Durch diese Änderung wird sichergestellt, dass Application.mk oder Android.mk gibt etwas mit der Syntax $(info ...) aus, es wird nicht in das Ergebnis von DUMP_XXXX eingefügt. Weitere Informationen
Sonstige Änderungen:
  • Die Header arch-x86 und arch-mips wurden entfernt aus platforms/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 kannst LOCAL_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-7
    • native-activity von Android-9 auf Android-10
    • native-audio von Android-9 auf Android-10
    • native-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 in crtbegin_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, das run-tests.sh und standalone/run.sh mit verschiedenen Bedingungen. Das Skript run-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 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 einmal solib-Symbole, wenn dlopen() aufgerufen wird.
  • 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 bei make ein ERRORLEVEL-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 mit gold 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 in Application.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üge LOCAL_LDLIBS += -fuse-ld=gold zu Android.mk hinzu, um sie zu aktivieren.
    • Bei Programmen, die mit -fPIE kompiliert wurden, ist das neue GDB für das Debugging erforderlich. einschließlich Binärdateien in System-Images von Android 4.1 (API-Level 16).
    • Das Tool binutils 2.21 ld 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 Werte p_align und p_flags im Abschnitt GNU_RELRO, wenn sie gültig sind. Ohne diese Korrektur werden Programme Das Debugging konnte mit -fPIE nicht durchgeführt werden. (M e info)
    • sincos()-Optimierung zur Kompatibilität mit älteren Versionen deaktiviert Plattformen.
  • 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>
      1. Deaktivieren Sie den NX-Schutz, indem Sie die Option --execstack für die Assembler und -z execstack für die Verknüpfung.
      2. Deaktivieren Sie die Härtung interner Daten, indem Sie die -z norelro und -z lazy Optionen für die Verknüpfung.
      3. 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.

  • Branding für ausführbare Android-Dateien mit dem Abschnitt .note.ABI-tag (in crtbegin_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 */
    }
Weitere Fehlerkorrekturen:
  • Ein Fehler wurde behoben, durch den die mips-linux-gnu-Verschiebung abgeschnitten wurde, um R_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 und two-libs wurden korrigiert, sodass tests-Projekt darunter kompilieren kann.
Weitere Änderungen:
  • Geänderte Speicherorte der Binärdateien: <ph type="x-smartling-placeholder">
      </ph>
    • gdbserver verschoben von toolchain/<arch-os-ver>/prebuilt/gdbserver bis prebuilt/android-<arch>/gdbserver/gdbserver
    • Präfix der x86-Toolchain von i686-android-linux- umbenannt in i686-linux-android-.
    • sources/cxx-stl/gnu-libstdc++/include und lib verschoben nach sources/cxx-stl/gnu-libstdc++/4.6 bei Kompilierung mit GCC 4.6 oder sources/cxx-stl/gnu-libstdc++/4.4.3 bei Kompilierung mit GCC 4.4.3.
    • libbfd.a und libintl.a wurden von lib/ nach lib32/ 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 Befehls clone und Verwendung von checkout nur für die Verzeichnisse verbessert, die zum Erstellen des NDK erforderlich sind Toolchain-Binärdateien.
    • build-host-gcc.sh- und build-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 Elemente AF_LINK und sockaddr_dl sind BSD-spezifisch (d.h. sie sind nicht vorhanden) unter Linux).

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 zu APP_ABI-Definition in der Datei Application.mk, um für MIPS-Plattformen. Mit der folgenden Zeile wird beispielsweise ndk-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 von make-standalone-toolchain.sh. Weitere Informationen finden Sie unter docs/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.

Wichtige Fehlerkorrekturen:
  • Ein Tippfehler in der GAbi++-Implementierung wurde behoben, bei dem das Ergebnis von dynamic_cast<D>(b) des Basisklassenobjekts b in der abgeleiteten Klasse D 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++.*.
Weitere Fehlerkorrekturen:
  • ndk-build.cmd wurde korrigiert, damit ndk-build.cmd auch jetzt korrekt funktioniert Der Nutzer hat die Umgebungsvariable SHELL neu definiert. Diese kann geändert werden. bei der Installation verschiedener Entwicklungstools in Windows-Umgebungen.

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).
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 von ndk-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 Ihrem Android.mk als true 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.

Weitere Fehlerkorrekturen:
  • Die android_getCpuCount()-Implementierung in cpufeatures 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.

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 unter docs/ANDROID-ATOMICS.html.
  • binutils 2.19 wurde zur Behebung von Fehlern wiederhergestellt, die erschien in NDK r7 (zu binutils 2.20.1 gewechselt).
  • ndk-build unter 32-Bit-Linux wurde korrigiert. Durch einen Paketfehler wird eine 64-Bit-Version erstellt. der ausführbaren Datei awk unter prebuilt/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.
  • Die eigenständige Toolchain wurde korrigiert, sodass bei der Verwendung von -lstdc++ (d.h. Verknüpfung mit der GNU libstdc++ 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 konnte libsupc++.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 deinem Application.mk. Weitere Informationen finden Sie unter docs/APPLICATION-MK.html.
  • ndk-gdb funktioniert jetzt ordnungsgemäß, wenn Ihre Anwendung private Dienste hat in unabhängigen Prozessen ausgeführt werden. Es behebt Fehler im Hauptanwendungsprozess, erster von ps 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 statt memcpy in string::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 und POPCNT) Weitere Informationen finden Sie unter docs/CPU-FEATURES.html.
  • docs/NDK-BUILD.html wurde aktualisiert, um stattdessen NDK_APPLICATION_MK zu erwähnen von NDK_APP_APPLICATION_MK, um eine benutzerdefinierte Application.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 statt C:\Some\Dir.
  • Cygwin: ndk-build versucht nicht, die nativen Windows-Tools unter $NDK/prebuilt/windows/bin mit bestimmten Versionen von Cygwin und/oder GNU Make.

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 unter docs/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/.
  • CCache-Unterstützung wurde hinzugefügt. Um große Neuerstellungen zu beschleunigen, definieren Sie NDK_CCACHE-Umgebungsvariable auf ccache (oder den Pfad zu Ihr ccache-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 auf all, 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 Ihrem Application.mk entsprechen diesem Release:
    APP_ABI := all
    APP_ABI := armeabi armeabi-v7a x86
    

    Dies funktioniert auch, wenn Sie APP_ABI beim Aufrufen von ndk-build aus der Befehlszeile aus. So können Sie schnell prüfen, Projekt-Erstellung für alle unterstützten ABIs, ohne den Wert des Projekts Application.mk file Beispiel:

    ndk-build APP_ABI=all
    
  • Die Variable LOCAL_CPP_FEATURES wurde in Android.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. Siehe docs/ANDROID-MK.html und docs/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 Sie ndk-build aus einem Unterverzeichnis der Projektstruktur aufrufen oder definieren Sie NDK_PROJECT_PATH so, dass es auf ein bestimmtes Verzeichnis verweist.
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üngliche ndk-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>), wenn APP_MODULES nicht definiert ist in Dein Application.mk. Wenn beispielsweise ein Modul der obersten Ebene foo ein Modul bar importiert, dann werden sowohl libfoo.so als auch libbar.so werden an den Installationsspeicherort kopiert. Bisher wurde nur libfoo.so wurde kopiert, es sei denn, Sie haben bar in Ihrem APP_MODULES ebenfalls. Wenn Sie APP_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 Bibliothek bar, die statische zoo ist die libfoo.so nun mit beiden verknüpft libbar.a und libzoo.a.
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 aktualisierten docs/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 unter docs/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 sowohl foo.cpp als auch bar.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() oder glGetProcAddress() 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

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 und size_t in x86-spezifische Systeme, wenn sie mit der eigenständigen x86-Toolchain verwendet werden.

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 Datei Application.mk, um zu erstellen für x86-Plattformen. Mit der folgenden Zeile wird beispielsweise ndk-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 von make-standalone-toolchain.sh. Weitere Informationen finden Sie unter docs/STANDALONE-TOOLCHAIN.html.
  • Mit dem neuen ndk-stack-Tool können Sie Stacktraces in logcat, 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 unter docs/NDK-STACK.html.
Sonstige Änderungen:
arm-eabi-4.4.0, das seit NDK r5 eingestellt wurde, wurde aus der NDK-Distribution entfernt.

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 in docs/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 ein history_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 die NDK_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 mit NDK_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 von adb 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 in build/core/build-binary.mk).
  • Es wurde ein Fehler behoben, der die Kompilierung von .s-Assembly-Dateien verhinderte. (.S Dateien waren in Ordnung).

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 Sie NDK_USE_CYGPATH=1 in deinem um cygpath -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 und IN6_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.

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 und native-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.
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 von armeabi 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 die cpufeatures, 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
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.

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 einem GLSurfaceView-Objekt verwalten.

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.