หน้านี้ให้ข้อมูลเกี่ยวกับการเปลี่ยนแปลงใน NDK เวอร์ชันเสถียรที่เผยแพร่ทั้งหมด หากต้องการดาวน์โหลด NDK เวอร์ชันเสถียรล่าสุดหรือเวอร์ชันเบต้าที่พร้อมใช้งานในปัจจุบัน โปรดดูหน้าการดาวน์โหลด NDK
ดูข้อมูลเพิ่มเติมได้ที่กลุ่ม Google android-ndk-announce และ สมัครรับข้อมูลประกาศการเปิดตัว
Android NDK r29 (ตุลาคม 2025)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- คุณดาวน์โหลดรุ่นนี้ได้ ที่นี่
 
 
Android NDK r28 (กุมภาพันธ์ 2025)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- คุณดาวน์โหลดรุ่นนี้ได้ ที่นี่
 
 
Android NDK r27 LTS (กรกฎาคม 2024)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- คุณดาวน์โหลดรุ่นนี้ได้ ที่นี่
 
 
Android NDK r26 LTS (กันยายน 2023)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- คุณดาวน์โหลดรุ่นนี้ได้ ที่นี่
 
 - ประกาศ
 - 
      
- ระบบไม่รองรับ KitKat (API 19 และ 20) อีกต่อไป
 
 
Android NDK r25 LTS (กรกฎาคม 2022)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- คุณดาวน์โหลดรุ่นนี้ได้ ที่นี่
 
 - ประกาศ
 - 
      
- รวม API ของ Android 13
 - อัปเดต LLVM เป็น clang-r450784d โดยอิงจากการพัฒนา LLVM 14
 
 
Android NDK r24 (มีนาคม 2022)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- คุณดาวน์โหลดรุ่นนี้ได้ ที่นี่
 
 - ประกาศ
 - 
      
- 
          นำ GNU Assembler (GAS) ออกแล้ว หากคุณสร้างด้วย
          
-fno-integrated-asคุณจะต้องนำแฟล็กดังกล่าวออก ดูคำแนะนำในการทำให้แอสเซมบลีเข้ากันได้กับ LLVM ได้ที่ หมายเหตุการย้ายข้อมูลของ Clang - นำ GDB ออกแล้ว โปรดใช้ LLDB แทน โปรดทราบว่า ndk-gdb ใช้ LLDB โดยค่าเริ่มต้น และ Android Studio รองรับเฉพาะ LLDB มาโดยตลอด
 - ระบบไม่รองรับ Jelly Bean (API 16, 17 และ 18) อีกต่อไป ระบบปฏิบัติการขั้นต่ำที่ NDK รองรับคือ KitKat (API ระดับ 19)
 - ระบบไม่รองรับอุปกรณ์ที่ไม่ใช่ Neon อีกต่อไป อุปกรณ์รุ่นเก่ามากเพียงไม่กี่รุ่นไม่รองรับ Neon ดังนั้นแอปส่วนใหญ่จึงไม่สังเกตเห็นการเปลี่ยนแปลงนี้ นอกเหนือจากการปรับปรุงประสิทธิภาพ
 - นำการรองรับการสร้าง RenderScript ออกแล้ว RenderScript เลิกใช้งานแล้วใน Android 12 หากยังย้ายข้อมูลแอปออกจาก RenderScript ไม่เสร็จ คุณสามารถใช้ NDK r23 LTS ได้
 
 - 
          นำ GNU Assembler (GAS) ออกแล้ว หากคุณสร้างด้วย
          
 
Android NDK r23 LTS (สิงหาคม 2021)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- ดาวน์โหลดรุ่นนี้ได้ที่นี่
 
 - ประกาศ
 - 
      
- 
          ระบบได้นำ GNU binutils ออกแล้ว ยกเว้น GNU Assembler (GAS) GAS
          จะถูกนำออกในรุ่นถัดไป หากคุณกำลังสร้างด้วย
          
-fno-integrated-asให้รายงานข้อบกพร่องหากมีสิ่งใดที่ป้องกันไม่ให้ คุณนำแฟล็กนั้นออก - 
          การรองรับ GDB สิ้นสุดแล้ว เราจะนำ GDB ออกจากการเผยแพร่ครั้งถัดไป
          โปรดใช้ LLDB แทน โปรดทราบว่า 
ndk-gdbใช้ LLDB โดยค่าเริ่มต้น - NDK r23 เป็นรุ่นสุดท้ายที่จะรองรับที่ไม่ใช่ Neon ตั้งแต่ NDK r24 เป็นต้นไป ไลบรารี armeabi-v7a ใน sysroot จะสร้างด้วย Neon อุปกรณ์รุ่นเก่ามากๆ บางรุ่นไม่รองรับ Neon ดังนั้น แอปส่วนใหญ่จึงไม่สังเกตเห็นการเปลี่ยนแปลงนี้ นอกเหนือจากการปรับปรุงประสิทธิภาพ
 - NDK รุ่นถัดไปจะไม่รองรับ Jelly Bean (API 16, 17 และ 18) อีกต่อไป ระบบปฏิบัติการขั้นต่ำที่ NDK สำหรับ r24 รองรับคือ KitKat (API ระดับ 19)
 
 - 
          ระบบได้นำ GNU binutils ออกแล้ว ยกเว้น GNU Assembler (GAS) GAS
          จะถูกนำออกในรุ่นถัดไป หากคุณกำลังสร้างด้วย
          
 
Android NDK r22b (มีนาคม 2021)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- ดาวน์โหลดรุ่นนี้ได้ที่นี่
 
 - ประกาศ
 - 
      
- 
          เราเลิกใช้งาน GNU binutils แล้วและจะนำออกในการเปิดตัว NDK
          ที่กำลังจะมาถึง โปรดทราบว่า GNU Assembler (
as) เป็นส่วนหนึ่งของสิ่งนี้ หากคุณกำลังสร้างด้วย-fno-integrated-asให้รายงานข้อบกพร่องหากมีสิ่งใดที่ป้องกันไม่ให้ คุณนำแฟล็กนั้นออก หากคุณใช้asโดยตรง ให้ใช้clangแทน - ตอนนี้ LLD เป็นโปรแกรมลิงก์เริ่มต้นแล้ว นอกจากนี้ ndk-build และไฟล์ Toolchain ของ CMake ยังย้ายไปใช้ llvm-ar และ llvm-strip ด้วย
 - ตอนนี้ ndk-gdb ใช้ lldb เป็นดีบักเกอร์แล้ว gdb เลิกใช้งานแล้วและจะ ถูกนำออกในรุ่นต่อๆ ไป หากต้องการกลับไปใช้ gdb ให้ใช้ตัวเลือก --no-lldb แต่โปรดรายงานข้อบกพร่อง โดยอธิบายเหตุผลที่คุณใช้ lldb ไม่ได้
 - 
          ตอนนี้เราได้รวมการรองรับ 
std::filesystemไว้แล้ว ปัญหาที่ทราบมี 2 รายการ- 
              ปัญหา
              1258: 
std::filesystem::perm_options::nofollowอาจ ใช้ในอุปกรณ์รุ่นเก่าไม่ได้ - 
              ปัญหา
              1260: 
std::filesystem::canonicalจะ สำเร็จอย่างไม่ถูกต้องเมื่อส่งเส้นทางที่ไม่มีอยู่จริงในอุปกรณ์รุ่นเก่า 
 - 
              ปัญหา
              1258: 
 
 - 
          เราเลิกใช้งาน GNU binutils แล้วและจะนำออกในการเปิดตัว NDK
          ที่กำลังจะมาถึง โปรดทราบว่า GNU Assembler (
 
Android NDK r21e LTS (มกราคม 2021)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- ดาวน์โหลดรุ่นนี้ได้ที่นี่
 
 - ประกาศ
 - 
      
- 
          
ระบบไม่รองรับ Windows 32 บิตอีกต่อไป ซึ่งจะไม่ส่งผลกระทบต่อผู้ใช้ส่วนใหญ่ หากยังคงต้องสร้างแอป NDK จาก Windows เวอร์ชัน 32 บิต ให้ใช้ NDK r20 ต่อไป
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ภายในเครื่องมือสำหรับนักพัฒนาแอป Android ได้ใน บล็อกโพสต์ ในหัวข้อนี้
 - 
          ตอนนี้ LLD พร้อมให้ทดสอบแล้ว
          AOSP ได้เปลี่ยนไปใช้ LLD โดยค่าเริ่มต้นแล้ว และ NDK จะทำตาม
          (ไทม์ไลน์ไม่ทราบ) ทดสอบ LLD ในแอปโดยส่ง 
-fuse-ld=lldเมื่อลิงก์ โปรดทราบว่า ปัญหา 843 จะมีผลต่อบิลด์ที่ใช้ LLD กับ binutils strip และ objcopy แทนที่จะใช้ llvm-strip และ llvm-objcopy - 
          เส้นทางการติดตั้ง Toolchain เดิมจะถูกนำออกในการเปิดตัวเวอร์ชันต่อๆ ไป
           เส้นทางเหล่านี้ล้าสมัยตั้งแต่ NDK r19 และใช้พื้นที่จำนวนมากใน NDK
           เส้นทางที่จะนำออกมีดังนี้
          
- แพลตฟอร์ม
 - sources/cxx-stl
 - sysroot
 - Toolchain (ยกเว้น toolchains/llvm)
 
make_standalone_toolchain.py(แม้ว่าสคริปต์ดังกล่าวจะไม่มีความจำเป็นตั้งแต่ r19) ดูข้อมูลเกี่ยวกับการย้ายข้อมูลออกจากเลย์เอาต์ของเครื่องมือเชนเดิมได้ที่ คู่มือผู้ดูแลระบบบิลด์ สำหรับ NDK เวอร์ชันที่คุณใช้ - Play Store จะกำหนดให้ต้องรองรับเวอร์ชัน 64 บิตเมื่ออัปโหลด APK โดยเริ่มตั้งแต่เดือนสิงหาคม 2019 เริ่มย้ายตอนนี้เลยเพื่อจะได้ไม่พลาดเมื่อถึงเวลา ดูข้อมูลเพิ่มเติมได้ที่บล็อกโพสต์นี้
 - ตอนนี้คุณสามารถดาวน์โหลด App Bundle ของ macOS ที่ลงชื่อและรับรองแล้วได้จากวิกิและเว็บไซต์ของเรา โปรดทราบว่าเนื่องจากมีเพียงแพ็กเกจเท่านั้นที่ใช้ RPATH และผ่านการรับรองได้ แพ็กเกจ NDK แบบเดิมสำหรับ macOS จึงไม่สามารถรับรองได้ SDK จะยังคงใช้แพ็กเกจแบบเดิมต่อไป เนื่องจาก App Bundle ต้องมีการเปลี่ยนแปลงเลย์เอาต์ซึ่งจะทำให้ไม่สามารถใช้งานร่วมกับ Android Studio ได้ NDK จะไม่ ถูกกักกันเมื่อดาวน์โหลดผ่าน SDK Manager ดังนั้น Gatekeeper จึง อนุญาตให้ใช้ได้ในขณะนี้ ปัจจุบัน SDK Manager เป็นวิธีที่น่าเชื่อถือที่สุด ในการรับ NDK สำหรับ macOS
 
 - 
          
 
Android NDK r20b (มิถุนายน 2019)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- ดาวน์โหลดรุ่นนี้ได้ที่นี่
 
 - ประกาศ
 - 
      
- 
          ตอนนี้ LLD พร้อมให้ทดสอบแล้ว
          AOSP อยู่ในกระบวนการเปลี่ยนไปใช้ LLD โดยค่าเริ่มต้น และ NDK จะทำตาม (ไทม์ไลน์ไม่ทราบ) ทดสอบ LLD ในแอปโดยส่ง
          
-fuse-ld=lldเมื่อลิงก์ - Play Store จะกำหนดให้ต้องรองรับเวอร์ชัน 64 บิตเมื่ออัปโหลด APK โดยเริ่มตั้งแต่เดือนสิงหาคม 2019 เริ่มย้ายตอนนี้เลยเพื่อจะได้ไม่พลาดเมื่อถึงเวลา ดูข้อมูลเพิ่มเติมได้ที่บล็อกโพสต์นี้
 - เพิ่ม API ของ Android Q
 
 - 
          ตอนนี้ LLD พร้อมให้ทดสอบแล้ว
          AOSP อยู่ในกระบวนการเปลี่ยนไปใช้ LLD โดยค่าเริ่มต้น และ NDK จะทำตาม (ไทม์ไลน์ไม่ทราบ) ทดสอบ LLD ในแอปโดยส่ง
          
 
Android NDK r19c (มกราคม 2019)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- ดาวน์โหลดรุ่นนี้ได้ที่นี่
 
 - ประกาศ
 - 
      
- 
          นักพัฒนาแอปควรเริ่มทดสอบแอปของตนด้วย LLD AOSP เปลี่ยนไปใช้ LLD โดยค่าเริ่มต้นแล้ว และ NDK จะใช้ LLD โดยค่าเริ่มต้นในการเผยแพร่ครั้งถัดไป
 เราจะนำ BFD และ Gold ออกเมื่อ LLD ผ่าน
           วงจรการเผยแพร่โดยไม่มีปัญหาสำคัญที่ยังไม่ได้รับการแก้ไข (คาดการณ์เป็น r21) ทดสอบ
           LLD ในแอปโดยส่ง 
-fuse-ld=lldเมื่อลิงก์ หมายเหตุ: ขณะนี้ lld ยังไม่รองรับสัญลักษณ์ที่บีบอัดใน Windows ปัญหา 888 นอกจากนี้ Clang ยังสร้างสัญลักษณ์ที่บีบอัดใน Windows ไม่ได้ แต่ปัญหานี้อาจเกิดขึ้นเมื่อใช้สิ่งประดิษฐ์ที่สร้างจาก Darwin หรือ Linux - Play Store จะกำหนดให้ต้องรองรับเวอร์ชัน 64 บิตเมื่ออัปโหลด APK โดยเริ่มตั้งแต่เดือนสิงหาคม 2019 เริ่มย้ายตอนนี้เลยเพื่อจะได้ไม่พลาดเมื่อถึงเวลา ดูข้อมูลเพิ่มเติมได้ที่บล็อกโพสต์นี้
 - 
          ปัญหา 780:
          Standalone
             toolchains ไม่จำเป็นอีกต่อไป ตอนนี้ระบบจะติดตั้ง Clang, binutils, sysroot
           และส่วนอื่นๆ ของ Toolchain ทั้งหมดไว้ใน
           
$NDK/toolchains/llvm/prebuilt/<host-tag>และ Clang จะค้นหาส่วนดังกล่าวโดยอัตโนมัติ แทนที่จะสร้าง เครื่องมือเชนแบบสแตนด์อโลนสำหรับ API 26 ARM ให้เรียกใช้คอมไพเลอร์โดยตรงจาก NDK แทน สำหรับ r19 ระบบจะติดตั้ง Toolchain ไปยังเส้นทางเก่าด้วยเพื่อให้ระบบ บิลด์มีโอกาสปรับให้เข้ากับเลย์เอาต์ใหม่ เส้นทางเก่าจะถูก นำออกใน r20 ระบบจะไม่นำสคริปต์$ $NDK/toolchains/llvm/prebuilt/
/bin/armv7a-linux-androideabi26-clang++ src.cpp make_standalone_toolchain.pyออก ตอนนี้ไม่จำเป็นแล้วและจะแสดงคำเตือนพร้อมข้อมูลข้างต้น แต่สคริปต์จะยังคงอยู่เพื่อรักษาเวิร์กโฟลว์ที่มีอยู่ หากคุณใช้ ndk-build, CMake หรือ Toolchain แบบสแตนด์อโลน เวิร์กโฟลว์ของคุณไม่ควรมีการเปลี่ยนแปลง การเปลี่ยนแปลงนี้มีความหมายสำหรับ ผู้ดูแลระบบการสร้างของบุคคลที่สาม ซึ่งตอนนี้ควรจะ ลบโค้ดบางอย่างที่เฉพาะเจาะจงสำหรับ Android ได้แล้ว ดูข้อมูลเพิ่มเติมได้ในคู่มือสร้าง ผู้ดูแลระบบ - นำ ndk-depends ออกแล้ว เราเชื่อว่า ReLinker เป็น วิธีแก้ปัญหาการโหลดไลบรารีเนทีฟใน Android เวอร์ชันเก่าได้ดีกว่า
 - ปัญหา 862: นำสคริปต์ Wrapper ของ GCC ที่เปลี่ยนเส้นทางไปยัง Clang ออกแล้ว เนื่องจากสคริปต์ดังกล่าวทำงานได้ไม่ดีพอที่จะใช้แทนได้
 
 - 
          นักพัฒนาแอปควรเริ่มทดสอบแอปของตนด้วย LLD AOSP เปลี่ยนไปใช้ LLD โดยค่าเริ่มต้นแล้ว และ NDK จะใช้ LLD โดยค่าเริ่มต้นในการเผยแพร่ครั้งถัดไป
 เราจะนำ BFD และ Gold ออกเมื่อ LLD ผ่าน
           วงจรการเผยแพร่โดยไม่มีปัญหาสำคัญที่ยังไม่ได้รับการแก้ไข (คาดการณ์เป็น r21) ทดสอบ
           LLD ในแอปโดยส่ง 
 
Android NDK r18b (กันยายน 2018)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- ดาวน์โหลดรุ่นนี้ได้ที่นี่
 
 - ประกาศ
 - 
      
- นำ GCC ออกแล้ว
 - 
          ตอนนี้ LLD พร้อมให้ทดสอบแล้ว
          AOSP อยู่ในกระบวนการเปลี่ยนไปใช้ LLD โดยค่าเริ่มต้น และ NDK จะทำตาม (ไทม์ไลน์ไม่ทราบ) ทดสอบ LLD ในแอปโดยส่ง
          
-fuse-ld=lldเมื่อลิงก์ - ระบบได้นำ gnustl, gabi++ และ stlport ออกแล้ว
 - ระบบได้นำการรองรับ ICS (android-14 และ android-15) ออกแล้ว แอป ที่ใช้ไฟล์ที่เรียกใช้งานได้ไม่จำเป็นต้องระบุทั้งไฟล์ที่เรียกใช้งานได้แบบ PIE และแบบที่ไม่ใช่ PIE อีกต่อไป
 - Play Store จะกำหนดให้ต้องรองรับเวอร์ชัน 64 บิตเมื่ออัปโหลด APK โดยเริ่มตั้งแต่เดือนสิงหาคม 2019 เริ่มย้ายตอนนี้เลยเพื่อจะได้ไม่พลาดเมื่อถึงเวลา ดูข้อมูลเพิ่มเติมได้ที่บล็อกโพสต์นี้
 
 
Android NDK r17c (มิถุนายน 2018)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - 
      
- ดาวน์โหลดรุ่นนี้ได้ที่นี่
 
 - ประกาศ
 - 
      
- ระบบไม่รองรับ GCC อีกต่อไป เราจะนำฟีเจอร์นี้ออกใน NDK r18
 - 
          ตอนนี้ libc++ เป็น STL เริ่มต้นสำหรับ CMake และ Toolchain แบบสแตนด์อโลนแล้ว หาก
          คุณเลือก STL อื่นด้วยตนเอง เราขอแนะนำอย่างยิ่งให้
          เปลี่ยนไปใช้ 
libc++โปรดทราบว่า ndk-build ยังคงใช้ STL เป็นค่าเริ่มต้น ดูรายละเอียดเพิ่มเติมได้ที่ บล็อกโพสต์นี้ - เราเลิกใช้งาน gnustl และ stlport แล้วและจะนำออกใน NDK r18
 - ระบบได้นำการรองรับ ARMv5 (armeabi), MIPS และ MIPS64 ออกแล้ว การพยายามสร้าง ABI เหล่านี้จะทำให้เกิดข้อผิดพลาด
 - เราจะนำการรองรับ ICS (android-14 และ android-15) ออกจาก r18
 - Play Store จะกำหนดให้ต้องรองรับเวอร์ชัน 64 บิตเมื่ออัปโหลด APK โดยเริ่มตั้งแต่เดือนสิงหาคม 2019 เริ่มย้ายตอนนี้เลยเพื่อจะได้ไม่พลาดเมื่อถึงเวลา ดูข้อมูลเพิ่มเติมได้ที่บล็อกโพสต์นี้
 
 
Android NDK r16b (ธันวาคม 2017)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - ดาวน์โหลดรุ่นนี้ได้ที่นี่
 - ประกาศ
 - 
    
- ระบบได้นำส่วนหัวที่เลิกใช้งานแล้วออก ส่วนหัวแบบรวมตอนนี้เรียกว่า "ส่วนหัว" ดูเคล็ดลับในการย้ายข้อมูลได้ที่ หมายเหตุการย้ายข้อมูลส่วนหัวแบบรวม
 - ระบบไม่รองรับ GCC อีกต่อไป แต่จะยังไม่นำออกจาก NDK และจะไม่ได้รับการพอร์ตย้อนหลังอีกต่อไป เราจะนำออกไม่ได้จนกว่า libc++ จะเสถียรพอที่จะเป็นค่าเริ่มต้น เนื่องจากบางส่วนของ gnustl ยังคงเข้ากันไม่ได้กับ Clang ระบบจะนำออกเมื่อมีการนำ STL อื่นๆ ออกใน r18
 libc++สิ้นสุดช่วงเบต้าแล้วและตอนนี้เป็น STL ที่แนะนำใน NDK ตั้งแต่ r17 เป็นต้นไปlibc++จะเป็น STL เริ่มต้นสำหรับ CMake และ Toolchain แบบสแตนด์อโลน หากคุณเลือก STL อื่นด้วยตนเอง เราขอแนะนำอย่างยิ่งให้เปลี่ยนไปใช้libc++ดูรายละเอียดเพิ่มเติมได้ที่ บล็อกโพสต์นี้- การรองรับ ARM5 (armeabi), MIPS และ MIPS64 เลิกใช้งานแล้ว โดยจะไม่ได้สร้างโดยค่าเริ่มต้นด้วย ndk-build อีกต่อไป แต่ยังคงสร้างได้หากมีการตั้งชื่ออย่างชัดเจน และจะรวมอยู่ใน "all" "all32" และ "all64" ระบบได้นำการรองรับแต่ละรายการเหล่านี้ออกใน r17 แล้ว ทั้ง CMake และ ndk-build จะแสดงคำเตือนหากคุณกำหนดเป้าหมายเป็น ABI ใดๆ เหล่านี้
 
 - API
 - 
เพิ่ม API ดั้งเดิมสำหรับ Android 8.1 ดูข้อมูลเพิ่มเติมเกี่ยวกับ API เหล่านี้ได้ที่ภาพรวมของ Native API
 
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิ่งใหม่ๆ และการเปลี่ยนแปลงในรุ่นนี้ได้ที่บันทึกการเปลี่ยนแปลงนี้
Android NDK r15c (กรกฎาคม 2017)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - ดาวน์โหลดรุ่นนี้ได้ที่นี่
 - ประกาศ
 - 
    
- ระบบจะเปิดใช้ส่วนหัวแบบรวมโดยค่าเริ่มต้น ดูวิธีใช้ส่วนหัวเหล่านี้ได้ที่ส่วนหัวแบบรวม
 - ระบบไม่รองรับ GCC อีกต่อไป โดยยังไม่ได้นำออกจาก NDK แต่จะไม่ได้รับการพอร์ตย้อนหลังอีกต่อไป เราจะนำออกไม่ได้จนกว่า libc++ จะมีความเสถียรมากพอที่จะเป็นค่าเริ่มต้น เนื่องจากบางส่วนของ gnustl ยังคงเข้ากันไม่ได้กับ Clang
 - ระบบไม่รองรับ Android 2.3 (
android-9) อีกต่อไป ตอนนี้ระดับ API ขั้นต่ำที่กำหนดเป้าหมายใน NDK คือ Android 4.0 (android-14) หากตั้งค่าAPP_PLATFORMต่ำกว่าandroid-14ระบบจะใช้android-14แทน - ตอนนี้ CMake ใน NDK รองรับการสร้างโค้ดแอสเซมบลีที่เขียนใน YASM เพื่อเรียกใช้ในสถาปัตยกรรม x86 และ x86-64 แล้ว ดูข้อมูลเพิ่มเติมได้ที่การสร้างโค้ดแอสเซมบลี
 
หมายเหตุ: ส่วนหัวที่เลิกใช้งานแล้วจะถูกนำออกในรุ่นที่กำลังจะเปิดตัว หากพบปัญหาเกี่ยวกับส่วนหัวเหล่านี้ โปรดรายงานข้อบกพร่อง
ดูเคล็ดลับในการย้ายข้อมูลได้ที่ หมายเหตุเกี่ยวกับการย้ายข้อมูลส่วนหัวแบบรวม
 - API
 - 
เพิ่ม API ดั้งเดิมสำหรับ Android 8.0 ดูข้อมูลเพิ่มเติม เกี่ยวกับ API เหล่านี้ได้ที่ภาพรวมของ Native API
 
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิ่งใหม่ๆ และการเปลี่ยนแปลงในรุ่นนี้ได้ที่บันทึกการเปลี่ยนแปลงนี้
Android NDK r14b (มีนาคม 2017)
บันทึกการเปลี่ยนแปลง- ดาวน์โหลด
 - ดาวน์โหลดรุ่นนี้ได้ที่นี่
 - ประกาศ
 - 
    
- ส่วนหัวแบบรวม: รุ่นนี้เปิดตัวส่วนหัวของแพลตฟอร์มที่ซิงค์
  และอัปเดตให้เป็นข้อมูลล่าสุดและถูกต้องอยู่เสมอด้วยแพลตฟอร์ม Android ตอนนี้การแก้ไขข้อบกพร่องในส่วนหัวเท่านั้น
  มีผลต่อ API ทุกระดับแล้ว การเปิดตัวส่วนหัวแบบรวมจะแก้ไขความไม่สอดคล้องกันใน NDK รุ่นก่อนหน้า เช่น
  
- ส่วนหัวใน M และ N เป็นส่วนหัวสำหรับ L
 - การประกาศฟังก์ชันในส่วนหัวไม่ตรงกับระดับแพลตฟอร์มอย่างถูกต้อง ส่วนหัวประกาศฟังก์ชันที่ไม่มีอยู่จริงหรือประกาศฟังก์ชันที่มีอยู่ไม่สำเร็จ
 - API ระดับเก่าหลายรายการไม่มีค่าคงที่หรือมีค่าคงที่ไม่ถูกต้องซึ่งอยู่ใน API ระดับใหม่กว่า
 
ระบบจะไม่ได้เปิดใช้ส่วนหัวแบบรวมใหม่เหล่านี้โดยค่าเริ่มต้น ดูวิธีเปิดใช้และใช้ส่วนหัวเหล่านี้ได้ที่ ส่วนหัวแบบรวม
 - การเลิกใช้งาน GCC: รุ่นนี้จะสิ้นสุดการรองรับ GCC ที่ใช้งานอยู่ เราจะยังไม่นำ GCC ออกจาก NDK แต่จะไม่มีการส่งต่อการแก้ไขข้อบกพร่องจากเวอร์ชันที่ใหม่กว่ามายังเวอร์ชันเก่าอีกต่อไป เนื่องจากบางส่วนของ gnustl ยังคง เข้ากันไม่ได้กับ Clang เราจึงจะยังไม่นำ GCC ออกจนกว่า libc++ จะเสถียร พอที่จะเป็นค่าเริ่มต้น
 
 - ส่วนหัวแบบรวม: รุ่นนี้เปิดตัวส่วนหัวของแพลตฟอร์มที่ซิงค์
  และอัปเดตให้เป็นข้อมูลล่าสุดและถูกต้องอยู่เสมอด้วยแพลตฟอร์ม Android ตอนนี้การแก้ไขข้อบกพร่องในส่วนหัวเท่านั้น
  มีผลต่อ API ทุกระดับแล้ว การเปิดตัวส่วนหัวแบบรวมจะแก้ไขความไม่สอดคล้องกันใน NDK รุ่นก่อนหน้า เช่น
  
 
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิ่งใหม่ๆ และการเปลี่ยนแปลงในรุ่นนี้ได้ที่บันทึกการเปลี่ยนแปลงนี้
Android NDK r13b (ตุลาคม 2016)
- ดาวน์โหลด
 - ดาวน์โหลดรุ่นนี้ได้ที่นี่
 - ประกาศ
 - 
    
- ระบบไม่รองรับ GCC อีกต่อไป แต่จะยังไม่นำออกจาก NDK และจะไม่ได้รับการพอร์ตย้อนหลังอีกต่อไป เราจะนำออกไม่ได้จนกว่า libc++ จะเสถียรพอที่จะเป็นค่าเริ่มต้น เนื่องจากบางส่วนของ gnustl ยังคงเข้ากันไม่ได้กับ Clang และอาจถูกนำออก หลังจากนั้น
 - เพิ่ม simpleperf เครื่องมือสร้างโปรไฟล์ CPU สำหรับ Android
 
 - r13b
 - 
    
- 
        
          การแก้ไขเพิ่มเติมสำหรับ 
__cxa_bad_castที่ขาดหายไป 
 - 
        
          การแก้ไขเพิ่มเติมสำหรับ 
 - NDK
 - 
    
- ตอนนี้ 
NDK_TOOLCHAIN_VERSIONจะใช้ Clang เป็นค่าเริ่มต้น - libc++ ได้รับการอัปเดตเป็น r263688 แล้ว
 - เราได้รีเซ็ตเป็นต้นทางที่สะอาด (เกือบ) ทั้งหมด การดำเนินการนี้จะช่วยแก้ไขข้อบกพร่องจำนวนหนึ่ง แต่เรายังคงต้องล้างข้อมูล libandroid_support ก่อนจึงจะ แนะนำให้ใช้เป็นค่าเริ่มต้น
 - 
        
make-standalone-toolchain.shเป็นเพียง Wrapper สำหรับ เครื่องมือเวอร์ชัน Python โดยมีลักษณะการทำงานที่แตกต่างกันเล็กน้อย ดูรายละเอียดได้ที่ข้อความ การคอมมิต - เราได้นำไลบรารีบางรายการสำหรับ ABI ที่ไม่รองรับออกแล้ว (mips64r2, mips32r6, mips32r2 และ x32) อาจยังมีบางคนที่ไม่ยอมย้าย
 - ปัญหาเกี่ยวกับ crtbegin_static.o ซึ่งส่งผลให้ไม่มี atexit ในเวลาลิงก์เมื่อสร้างไฟล์ที่เรียกใช้งานได้แบบคงที่สำหรับ ARM android-21 ขึ้นไปได้รับการแก้ไขแล้ว: ปัญหา 132
 - เพิ่มไฟล์ Toolchain ของ CMake ใน build/cmake/android.toolchain.cmake
 
 - ตอนนี้ 
 - ปัญหาที่ทราบ
 - 
    
- นี่ไม่ใช่รายการข้อบกพร่องที่ยังคงมีอยู่ทั้งหมด
 - Toolchain แบบสแตนด์อโลนที่ใช้ libc++ และ GCC จะใช้งานไม่ได้ ดูเหมือนว่าจะเป็น ข้อบกพร่องใน GCC ดูรายละเอียดเพิ่มเติมได้ที่ ข้อความ การส่ง
 - ยังไม่ได้เปิดเผยส่วนหัวและไลบรารี Bionic สำหรับ Marshmallow และ N แม้ว่าจะมี android-24 อยู่ก็ตาม แพลตฟอร์มเหล่านั้นยังคงเป็น ส่วนหัวและไลบรารีของ Lollipop (ไม่ใช่การถดถอยจาก r11)
 - ไม่มีเครื่องมือ RenderScript (ไม่ใช่การถดถอยจาก r11) ปัญหา 7
 
 
Android NDK r12b (มิถุนายน 2016)
- ดาวน์โหลด
 - ดาวน์โหลดรุ่นนี้ได้ที่นี่
 - ประกาศ
 - โดยค่าเริ่มต้น คำสั่ง 
ndk-buildจะใช้ Clang ใน r13 เราจะนำ GCC ออกในรุ่นถัดไป - เราจะนำสคริปต์ 
make-standalone-toolchain.shออกใน r13 ตรวจสอบว่าmake_standalone_toolchain.pyเหมาะกับความต้องการของคุณ - โปรดรายงานปัญหาไปยัง GitHub
 - เราได้แก้ไข 
ndk-gdb.pyแล้ว (ฉบับที่ 118) - 
    เราได้อัปเดต 
NdkCameraMetadataTags.hเพื่อให้ไม่มีค่า enum ที่ไม่ถูกต้องอีกต่อไป - แก้ไขข้อบกพร่องใน ndk-build ซึ่งส่งผลให้เกิดคำเตือนที่ไม่ถูกต้องสำหรับไลบรารีแบบคงที่ที่ใช้ libc++ แล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ในความคิดเห็น ที่นี่
 - ส่วนหัว OpenSLES ได้รับการอัปเดตสำหรับ android-24 แล้ว
 - NDK
 - เราได้นำการรองรับ ABI armeabi-v7a-hard ออกแล้ว ดูข้อมูลเพิ่มเติมได้ที่ คำอธิบายนี้
 - นำ Sysroot ทั้งหมดสำหรับระดับแพลตฟอร์มก่อน GB ออกแล้ว เราได้หยุดการรองรับใน r11 แต่ไม่ได้นำออกจริงๆ
 - การจัดการข้อยกเว้นเมื่อใช้ c++_shared ใน ARM32 ตอนนี้ใช้งานได้แล้วเป็นส่วนใหญ่ ตอนนี้ระบบจะลิงก์ Unwinder เข้ากับออบเจ็กต์ที่ลิงก์แต่ละรายการแทนที่จะลิงก์เข้ากับ libc++ เอง ดูข้อมูลเพิ่มเติมเกี่ยวกับ การจัดการข้อยกเว้นนี้ได้ที่ ปัญหาที่ทราบ
 - ลดจำนวนแฟล็กคอมไพเลอร์เริ่มต้นแล้ว
    (ฉบับที่ 27)
  
- ดูข้อมูลทั้งหมดเกี่ยวกับการเปลี่ยนแปลงเหล่านี้ได้ที่รายการการเปลี่ยนแปลงนี้
 
 - เพิ่มการติดตั้งใช้งาน Python ของ Toolchain แบบสแตนด์อโลน
    
build/tools/make_standalone_toolchain.py- ผู้ใช้ Windows ไม่จำเป็นต้องใช้ Cygwin เพื่อใช้ฟีเจอร์นี้อีกต่อไป
 - เราจะนำ Bash ออกใน r13 ดังนั้นโปรดทดสอบเวอร์ชันใหม่นี้
 
 -fno-limit-debug-infoเปิดใช้โดยค่าเริ่มต้นสำหรับการสร้างดีบักของ Clang การเปลี่ยนแปลงนี้จะช่วยปรับปรุงความสามารถในการแก้ไขข้อบกพร่องด้วย LLDB--build-idเปิดใช้อยู่โดยค่าเริ่มต้นแล้วในตอนนี้- ตอนนี้รหัสบิลด์จะแสดงในรายงานข้อขัดข้องเนทีฟเพื่อให้คุณระบุเวอร์ชันของโค้ดที่กำลังทำงานได้ง่ายขึ้น
 
NDK_USE_CYGPATHไม่ควรทำให้เกิดปัญหากับ libgcc อีกต่อไป (Android ปัญหา 195486)- ตอนนี้ระบบจะเปิดใช้ตัวเลือก 
-Wl,--warn-shared-textrelและ-Wl,--fatal-warningsโดยค่าเริ่มต้น หากมีการย้ายข้อความที่แชร์ แอปจะโหลดใน Android 6.0 (API ระดับ 23) ขึ้นไปไม่ได้ เราไม่อนุญาตให้ย้ายข้อความสำหรับ แอป 64 บิต - ส่วนหัวที่คอมไพล์ล่วงหน้าควรทำงานได้ดีขึ้น (ฉบับที่ 14 และ ฉบับที่ 16)
 - นำไลบรารี STL ของ ARM (ที่ไม่ใช่ Thumb) ที่เข้าถึงไม่ได้ออก
 - เพิ่มการรองรับ Vulkan ใน Android 24
 - เพิ่ม Choreographer API ลงใน android-24
 - เพิ่ม API 
libcamera2สำหรับอุปกรณ์ที่ใช้INFO_SUPPORTED_HARDWARE_LEVEL_LIMITEDขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ ลักษณะของกล้อง - Clang
 - Clang ได้รับการอัปเดตเป็น 3.8svn (r256229, บิลด์ 2812033)
       
- ไฟล์ปฏิบัติการ 
clang.exeและclang++.exeในแพ็กเกจ Windows 32 บิต เป็นไฟล์ 64 บิต ไฟล์ที่เรียกใช้งาน 32 บิตมีชื่อว่าclang_32.exe 
 - ไฟล์ปฏิบัติการ 
 - GCC
 - ซิงค์กับ GCC ของ ChromeOS ที่ @ google/gcc-4_9 r227810
 - แพตช์ Sanitizer ความครอบคลุมที่ย้อนกลับจาก ToT (r231296)
 - แก้ไข libatomic เพื่อไม่ให้ใช้ 
ifuncs(ฉบับที่ 31) - Binutils
 - ปิดเสียงข้อความแสดงข้อมูล "พบและแก้ไขข้อผิดพลาด 843419 แล้ว"
 - เพิ่มตัวเลือก 
--long-pltเพื่อแก้ไขข้อผิดพลาดของ Linker ภายในที่เกิดขึ้นเมื่อ ลิงก์ไบนารี arm32 ขนาดใหญ่ - แก้ไข Stub เวลาที่เรียกใช้ที่ไม่ถูกต้องสำหรับ AArch64 ซึ่งทำให้ระบบคำนวณที่อยู่การข้าม ไม่ถูกต้องสำหรับ DSO ขนาดใหญ่มาก
 - เปิดตัวตัวเลือกเริ่มต้น 
--no-apply-dynamicเพื่อหลีกเลี่ยงข้อบกพร่องของโปรแกรมลิงก์แบบไดนามิกสำหรับ Android รุ่นก่อนหน้า - NDK r11 KI สำหรับ 
dynamic_castใช้กับ Clang ไม่ได้ เราได้แก้ไข x86,stlport_staticและการเพิ่มประสิทธิภาพแล้ว - GDB
 - อัปเดตเป็น GDB 7.11 แล้ว ดูข้อมูลเพิ่มเติมได้ที่หน้าข่าวสารเกี่ยวกับ GDB
 - การแก้ไขข้อบกพร่องบางอย่างสำหรับ 
ndk-gdb.py - ปัญหาที่ทราบ
 - ASAN ใน x86 ยังคงใช้งานไม่ได้ ดูข้อมูลเพิ่มเติมได้ที่การสนทนาในรายการการเปลี่ยนแปลงนี้
 - การยกเลิกการยกเว้นด้วย 
c++_sharedยังคงใช้ไม่ได้กับ ARM ใน Android 2.3 (API ระดับ 9) หรือ Android 4.0 (API ระดับ 14) - ส่วนหัวและไลบรารี Bionic สำหรับ Android 6.0 (API ระดับ 23) และ Android 7.0 (API ระดับ 24) ยังไม่พร้อมใช้งานแม้ว่าจะมี android-24 อยู่ก็ตาม แพลตฟอร์มเหล่านั้นยังคงเป็นส่วนหัวและไลบรารีของ Android 5.0 (API ระดับ 21) (ไม่ใช่การถดถอยจาก r11)
 - ไม่มีเครื่องมือ RenderScript (ไม่ใช่การถดถอยจาก r11) (ฉบับที่ 7)
 - บันทึกการเปลี่ยนแปลงนี้ไม่ได้มีจุดประสงค์เพื่อเป็นรายการข้อบกพร่องที่โดดเด่นทั้งหมด
 
__thread น่าจะใช้งานได้จริงในครั้งนี้
Android NDK r12 (มิถุนายน 2016)
- ดาวน์โหลด
 - ดาวน์โหลดรุ่นนี้ได้ที่นี่
 - ประกาศ
 - โดยค่าเริ่มต้น คำสั่ง 
ndk-buildจะใช้ Clang ในรุ่นที่กำลังจะเปิดตัว เราจะนำ GCC ออกในรุ่นหลังจากนี้ - เราจะนำสคริปต์ 
make-standalone-toolchain.shออก ในการเปิดตัวรุ่นถัดไป หากใช้สคริปต์นี้ โปรดวางแผนที่จะย้ายข้อมูลไปยังmake_standalone_toolchain.pyโดยเร็วที่สุด - NDK
 - ยกเลิกการรองรับ ABI armeabi-v7a-hard ดูคำอธิบายได้ใน เอกสารประกอบ
 - นำ Sysroot ทั้งหมดสำหรับระดับแพลตฟอร์มก่อน Android 2.3 (API ระดับ 9) ออกแล้ว เราเลิกให้การสนับสนุนใน NDK r11 แต่ไม่ได้นำออกจริงๆ
 - อัปเดตการจัดการข้อยกเว้นเมื่อใช้ c++_shared ใน ARM32 เพื่อให้ส่วนใหญ่ทำงานได้ (ดูปัญหาที่ทราบ) ตอนนี้ระบบจะลิงก์ โปรแกรมคลายการเรียกใช้ฟังก์ชันเข้ากับออบเจ็กต์ที่ลิงก์แต่ละรายการแทนที่จะลิงก์เข้ากับ libc++ เอง
 - ตัดแฟล็กคอมไพเลอร์เริ่มต้นออก (ปัญหา NDK 27) คุณดูรายละเอียดของการอัปเดตนี้ได้ในการเปลี่ยนแปลง 207721
 - เพิ่มการใช้งาน Python ของ Toolchain แบบสแตนด์อโลนใน 
build/tools/make_standalone_toolchain.pyใน Windows คุณไม่จำเป็นต้องใช้ Cygwin เพื่อใช้ฟีเจอร์นี้อีกต่อไป โปรดทราบว่าเราจะนำ Bash Flavor ออก ในการเปิดตัวที่กำลังจะมีขึ้น ดังนั้นโปรดทดสอบตัวใหม่ตอนนี้ - กำหนดค่าบิลด์การแก้ไขข้อบกพร่องของ Clang ให้เปิดใช้ตัวเลือก 
-fno-limit-debug-infoโดยค่าเริ่มต้น การเปลี่ยนแปลงนี้ช่วยให้แก้ไขข้อบกพร่องด้วย LLDB ได้ดียิ่งขึ้น - เปิดใช้ 
--build-idเป็นตัวเลือกเริ่มต้น ตัวเลือกนี้ จะทําให้ตัวระบุแสดงในรายงานข้อขัดข้องดั้งเดิมเพื่อให้คุณระบุ เวอร์ชันของโค้ดที่กําลังทํางานได้ง่าย - แก้ไขปัญหาเกี่ยวกับ 
NDK_USE_CYGPATHเพื่อไม่ให้เกิดปัญหาเกี่ยวกับ libgcc อีกต่อไป (ปัญหา 195486) - เปิดใช้ตัวเลือกต่อไปนี้เป็นค่าเริ่มต้น
  
-Wl,--warn-shared-textrelและ-Wl,--fatal-warningsหากคุณมีการย้ายข้อความที่แชร์ แอปจะไม่โหลดใน Android 6.0 (API ระดับ 23) ขึ้นไป โปรดทราบว่าระบบไม่เคยอนุญาตให้ใช้การกำหนดค่านี้กับแอป 64 บิต - แก้ไขปัญหาบางอย่างเพื่อให้ส่วนหัวที่คอมไพล์ล่วงหน้าทำงานได้ดีขึ้น (ปัญหา NDK 14, ปัญหา NDK 16)
 - นำไลบรารี STL ของ ARM (ที่ไม่ใช่ Thumb) ที่เข้าถึงไม่ได้ออก
 - เพิ่มการรองรับ Vulkan ใน Android 24
 - เพิ่ม Choreographer API ลงใน android-24
 - เพิ่ม API ของ libcamera2 สำหรับอุปกรณ์ที่รองรับ
  
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITEDระดับฟีเจอร์ขึ้นไป ดูข้อมูลเพิ่มเติมได้ที่ การอ้างอิงCameraCharacteristics - Clang
 - Clang ได้รับการอัปเดตเป็น 3.8svn (r256229, บิลด์ 2812033) ไฟล์ปฏิบัติการ 
clang.exeและclang++.exeในแพ็กเกจ Windows 32 บิตเป็นไฟล์ 64 บิต ไฟล์ปฏิบัติการ 32 บิตมีชื่อว่าclang_32.exe - แก้ไข 
__threadเพื่อให้ใช้งานได้จริงในครั้งนี้ - GCC
 - ซิงค์คอมไพเลอร์กับ GCC ของ ChromeOS @ google/gcc-4_9 r227810
 - แพตช์ Sanitizer ความครอบคลุมที่ย้อนกลับจาก ToT (r231296)
 - แก้ไข 
libatomicเพื่อไม่ให้ใช้ ifuncs (ปัญหา NDK 31) - Binutils
 - ปิดเสียงข้อความข้อมูล "พบและแก้ไขข้อผิดพลาด 843419 แล้ว"
 - เพิ่มตัวเลือก 
--long-pltเพื่อแก้ไขข้อผิดพลาดของ Linker ภายใน เมื่อลิงก์ไบนารี arm32 ขนาดใหญ่ - แก้ไข Stub เวลาที่เรียกใช้ที่ไม่ถูกต้องสำหรับ 
AArch64ปัญหานี้ทำให้ระบบคำนวณที่อยู่การข้ามไม่ถูกต้องสำหรับออบเจ็กต์ที่แชร์แบบไดนามิก (DSO) ขนาดใหญ่มาก - เปิดตัวตัวเลือกเริ่มต้น 
--no-apply-dynamicเพื่อแก้ไขข้อบกพร่องของโปรแกรมลิงก์แบบไดนามิกสำหรับ Android รุ่นก่อนหน้า - แก้ไขปัญหาที่ทราบแล้วใน NDK r11 ซึ่ง 
dynamic_castไม่ทำงานกับ Clang, x86, stlport_static และการเพิ่มประสิทธิภาพ - GDB
 - อัปเดตเป็น GDB เวอร์ชัน 7.11 แล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปิดตัวนี้ได้ที่ ข่าวสาร GDB
 - แก้ไขข้อบกพร่องหลายอย่างในสคริปต์ 
ndk-gdb.py - ปัญหาที่ทราบ
 - ขณะนี้ Address Sanitizer (ASAN) ของ x86 ยังไม่ทำงาน ดูข้อมูลเพิ่มเติมได้ที่ ปัญหา 186276
 - การยกเลิกข้อยกเว้นด้วย 
c++_sharedใช้ไม่ได้กับ ARM ใน Android 2.3 (API ระดับ 9) หรือ Android 4.0 (API ระดับ 14) - ส่วนหัวและไลบรารี Bionic สำหรับ Android 6.0 (API ระดับ 23) ขึ้นไป ยังไม่พร้อมใช้งานแม้ว่าจะมี android-24 อยู่ก็ตาม แพลตฟอร์มเหล่านั้นยังคงมีส่วนหัวและไลบรารีของ Android 5.0 (API ระดับ 21) ซึ่งสอดคล้องกับ NDK r11
 - ไม่มีเครื่องมือ RenderScript ซึ่งสอดคล้องกับ NDK r11 (ปัญหา NDK 7)
 - ในไฟล์ส่วนหัวของ 
NdkCameraMetadataTags.hค่า enum ของแท็กข้อมูลเมตาของกล้องACAMERA_STATISTICS_LENS_SHADING_CORRECTION_MAPแสดงขึ้นโดยไม่ตั้งใจและจะถูกนำออกในการเผยแพร่ครั้งถัดไป ให้ใช้ค่าACAMERA_STATISTICS_LENS_SHADING_MAPแทน 
Android NDK r11c (มีนาคม 2016)
- การเปลี่ยนแปลง
 - ใช้การแก้ไขเพิ่มเติมกับ
ndk-gdb.pyสคริปต์ - เพิ่มอาร์กิวเมนต์ชื่อแพ็กเกจที่ไม่บังคับลงในตัวเลือกคำสั่ง 
ndk-gdb--attach(ปัญหาที่ 13) - แก้ไขเส้นทาง Toolchain ที่ไม่ถูกต้องสำหรับแพลตฟอร์ม Windows 32 บิต (ฉบับที่ 45)
 - แก้ไขเส้นทางแบบสัมพัทธ์สำหรับคำสั่ง 
ndk-which(ฉบับที่ 29) - แก้ไขการใช้ cygpath สำหรับคอมไพเลอร์ libgcc (ปัญหา 195486 ของ Android)
 
Android NDK r11b (มีนาคม 2016)
- NDK
 - 
      
- ประกาศสำคัญ
      
- เราได้ย้ายเครื่องมือติดตามข้อบกพร่องไปที่ GitHub แล้ว
 
 - การเปลี่ยนแปลง
        
ndk-gdb.pyได้รับการแก้ไขแล้ว โดยถดถอยลงโดยสิ้นเชิงใน r11ndk-gdbสำหรับ Mac ได้รับการแก้ไขแล้ว- เพิ่มทางลัดระดับบนสุดสำหรับเครื่องมือบรรทัดคำสั่งดังนี้
                  
ndk-dependsndk-gdbndk-stackndk-whichคำสั่งนี้ไม่มีอยู่ในรุ่นก่อนหน้าเลย
 - แก้ไข Toolchain แบบสแตนด์อโลนสำหรับ libc++ ซึ่งขาดหายไป
               
__cxxabi_config.h - แก้ไขเอกสารประกอบความช่วยเหลือสำหรับ 
--toolchainในmake-standalone-toolchain.sh 
 
 - ประกาศสำคัญ
      
 - Clang
 - 
      
- ข้อผิดพลาด
 __threadใช้ไม่ได้ ซึ่งขัดแย้งกับสิ่งที่เราได้รายงานไว้ในหมายเหตุประจำรุ่น r11 เนื่องจาก Clang เวอร์ชันที่เราจัดส่งไม่มีการแก้ไขข้อบกพร่องสำหรับ การรองรับ TLS ที่จำลอง
 
Android NDK r11 (มีนาคม 2016)
- Clang
 - 
      
- ประกาศสำคัญ
      
- เราขอแนะนำให้เปลี่ยนไปใช้ Clang
 - Clang ได้รับการอัปเดตเป็น 3.8svn (r243773, บิลด์ 2481030)
            
- เวอร์ชันนี้เป็น Clang ที่อัปสตรีมเกือบทั้งหมด
 - แพ็กเกจ NDK ที่ดาวน์โหลดได้สำหรับ Windows 64 บิตมี Clang เวอร์ชัน 32 บิต
 
 
 - การเพิ่ม
        
- ตอนนี้ Clang รองรับ TLS ที่จำลองแล้ว
            
- ตอนนี้คอมไพเลอร์รองรับ 
__threadโดยการจำลอง ELF TLS ด้วยข้อมูลเฉพาะของเธรด pthread - C++11 
thread_localใช้ได้ในบางกรณี แต่ใช้ไม่ได้ กับข้อมูลที่มีตัวทำลายที่ไม่ใช่แบบง่าย เนื่องจากกรณีเหล่านั้น ต้องได้รับการสนับสนุนจาก libc ข้อจำกัดนี้ไม่มีผลเมื่อเรียกใช้ใน Android 6.0 (API ระดับ 23) ขึ้นไป - TLS ที่จำลองยังใช้กับ Aarch64 ไม่ได้เมื่อมีการเข้าถึงตัวแปร TLS จากไลบรารีที่ใช้ร่วมกัน
 
 - ตอนนี้คอมไพเลอร์รองรับ 
 
 - ตอนนี้ Clang รองรับ TLS ที่จำลองแล้ว
            
 
 - ประกาศสำคัญ
      
 
- GCC
 - 
      
- ประกาศสำคัญ
 - ตอนนี้เราเลิกใช้งาน GCC ใน NDK แล้วและหันมาใช้ Clang แทน
            
- NDK จะไม่อัปเกรดเป็น 5.x และจะไม่ยอมรับ การพอร์ตย้อนกลับที่ไม่สำคัญ
 - การบำรุงรักษาสำหรับการคอมไพล์ที่ไม่ถูกต้องและข้อผิดพลาดของคอมไพเลอร์ภายใน ใน 4.9 จะได้รับการจัดการเป็นรายกรณี
 
 - การนำออก
         
- นำ GCC 4.8 ออก ตอนนี้เป้าหมายทั้งหมดใช้ GCC 4.9
 
 - การเปลี่ยนแปลงอื่นๆ
         
- Synchronized google/gcc-4_9 to r224707. ก่อนหน้านี้ มีการซิงค์กับ r214835
 
 
 
- NDK
 - 
      
- ประกาศสำคัญ
         
- ตัวอย่างจะไม่ได้รวมอยู่ในแพ็กเกจ NDK อีกต่อไป แต่จะพร้อมให้บริการใน GitHub แทน
 - เอกสารประกอบจะไม่อยู่ในแพ็กเกจ NDK อีกต่อไป แต่จะอยู่ในเว็บไซต์นักพัฒนาแอป Android
 
 - การเพิ่ม
          
- เพิ่ม API การติดตามแบบเนทีฟไปยัง 
android-23 - เพิ่ม API แบบหลายเครือข่ายเนทีฟไปยัง 
android-23 - เปิดใช้ libc, m และ dl เพื่อให้สัญลักษณ์ที่กำหนดเวอร์ชัน โดยเริ่มตั้งแต่ API ระดับ 21
 - เพิ่มส่วนหัวและไลบรารี Vulkan ลงใน API ระดับ N
 
 - เพิ่ม API การติดตามแบบเนทีฟไปยัง 
 - การนำออก
          
- เลิกให้การสนับสนุนสำหรับ 
_WCHAR_IS_8BIT - นำออกแล้ว
 - นำ mclinker ออกแล้ว
 - นำ Perl ออกแล้ว
 - นำสัญลักษณ์ทั้งหมดที่เวอร์ชันแพลตฟอร์มของไลบรารีเหล่านั้นไม่รองรับออกจาก libc, m และ dl ทุกเวอร์ชันของ NDK
 - ยกเลิกการรองรับ mips64r2 บางส่วน และจะนำส่วนที่เหลือออก ในอนาคต
 
 - เลิกให้การสนับสนุนสำหรับ 
 - การเปลี่ยนแปลงอื่นๆ
          
- เปลี่ยน Toolchain แบบสแตนด์อโลนของ ARM ให้เป็น arm7 โดยค่าเริ่มต้น
               
- คุณสามารถกู้คืนลักษณะการทำงานแบบเดิมได้โดยส่งตัวเลือก
                  
-targetเป็นarmv5te-linux-androideabi 
 - คุณสามารถกู้คืนลักษณะการทำงานแบบเดิมได้โดยส่งตัวเลือก
                  
 - เปลี่ยนระบบบิลด์ให้ใช้ 
-isystemสำหรับแพลตฟอร์ม รวม- คำเตือนที่ระบุว่า Bionic ไม่ทำให้การสร้างแอปหยุดทำงานอีกต่อไป
 
 - แก้ไขข้อผิดพลาด Segfault ที่เกิดขึ้นเมื่อไบนารีส่งข้อยกเว้น ผ่าน gabi++ (ปัญหา 179410)
 - เปลี่ยนเนมสเปซอินไลน์ของ libc++ เป็น 
std::__ndk1เพื่อป้องกันปัญหา ODR กับ libc++ ของแพลตฟอร์ม - ตอนนี้ไลบรารี libc++ ทั้งหมดสร้างขึ้นด้วย libc++abi
 - อัปเดตค่าเริ่มต้นของ 
APP_PLATFORMเป็น Gingerbread- โปรดทราบว่าเราจะเลิกให้การสนับสนุน Froyo และเวอร์ชันเก่ากว่าในรุ่นที่จะออกในอนาคต
 
 
 - เปลี่ยน Toolchain แบบสแตนด์อโลนของ ARM ให้เป็น arm7 โดยค่าเริ่มต้น
               
 - อัปเดตโครงสร้าง 
_Unwind_Exceptiongabi++ สำหรับ 64 บิต - เพิ่มความสามารถต่อไปนี้ลงใน cpufeatures
            
- ตรวจหา SSE4.1 และ SSE4.2
 - ตรวจหาฟีเจอร์ CPU ใน x86_64
 
 - อัปเดต libc++abi เป็นต้นทาง r231075
 - อัปเดต 
byteswap.h,endian.h,sys/procfs.h,sys/ucontext.h,sys/user.hและuchar.hจาก ToT Bionic - ซิงค์
sys/cdefs.hใน API ทุกระดับ - แก้ไข 
fegetenv and fesetenvสำหรับแขน - แก้ไขขนาด/การจัดแนวตัวชี้สิ้นสุดของ 
crtend_*สำหรับ mips64 และ x86_64 
 - ประกาศสำคัญ
         
 - Binutils
 - 
      
- การเพิ่ม
         
- เพิ่มตัวเลือกใหม่: 
--pic-veneer 
 - เพิ่มตัวเลือกใหม่: 
 - การนำออก
         
- แพ็กเกจ Windows 32 บิตไม่มี ld.gold อีกต่อไป คุณสามารถรับ ld.gold จากแพ็กเกจ Windows 64 บิตแทนได้
 
 - การเปลี่ยนแปลง
          
- แหล่งที่มาของ binutils แบบรวมระหว่าง Android กับ ChromiumOS ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ในความคิดเห็น ที่นี่
 - ปรับปรุงความน่าเชื่อถือของ Gold สำหรับ aarch64 ใช้
             
-fuse-ld=goldในเวลาลิงก์เพื่อใช้ gold แทน bfd โดยค่าเริ่มต้นจะเปลี่ยนในรุ่นถัดไป - ปรับปรุงเวลาการลิงก์สำหรับไบนารีขนาดใหญ่สำหรับแบ็กเอนด์ ARM ของ Gold (ลดเวลาการลิงก์ได้สูงสุด 50% สำหรับเบราว์เซอร์ Chrome ที่แก้ไขข้อบกพร่องได้)
 
 
 - การเพิ่ม
         
 - GDB
 - 
      
- การนำออก
         
- นำ ndk-gdb ออกเพื่อใช้ ndk-gdb.py แทน
 
 - การเปลี่ยนแปลง
          
- อัปเดต gdb เป็นเวอร์ชัน 7.10
 - ปรับปรุงประสิทธิภาพ
 - ปรับปรุงข้อความแสดงข้อผิดพลาด
 - แก้ไขเส้นทางโปรเจ็กต์แบบสัมพัทธ์
 - หยุดไม่ให้ Ctrl-C ปิด gdbserver ที่ทำงานอยู่เบื้องหลัง
 - ปรับปรุงการรองรับ Windows
 
 
 - การนำออก
         
 - YASM
 - 
      
- การเปลี่ยนแปลง
          
- อัปเดต YASM เป็นเวอร์ชัน 1.3.0
 
 
 - การเปลี่ยนแปลง
          
 - ปัญหาที่ทราบ
 - 
      
- ขณะนี้ ASAN ของ x86 ยังใช้งานไม่ได้ ดูข้อมูลเพิ่มเติมได้ใน การสนทนา ที่นี่
 - การใช้ Clang, x86, stlport_static และระดับการเพิ่มประสิทธิภาพที่สูงกว่า 
-O0จะทำให้การทดสอบล้มเหลวด้วยdynamic_castดูข้อมูลเพิ่มเติมได้ในความคิดเห็น ที่นี่ - การจัดการข้อยกเว้นมักจะล้มเหลวเมื่อใช้ c++_shared ใน ARM32 สาเหตุ หลักคือความไม่เข้ากันระหว่าง LLVM Unwinder ที่ libc++abi ใช้ สำหรับ ARM32 กับ libgcc พฤติกรรมนี้ไม่ใช่การถดถอยจาก r10e
 
 
Android NDK r10e (พฤษภาคม 2015)
- ดาวน์โหลด
 - ดาวน์โหลดรุ่นนี้ได้ที่นี่
 - การเปลี่ยนแปลงที่สำคัญ
 - 
      
- ผสานรวมวิธีแก้ปัญหาชั่วคราวสำหรับ Cortex-A53 Erratum 843419 เข้ากับ
        
aarch64-linux-android-4.9ลิงก์เกอร์ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีแก้ปัญหานี้ได้ที่ วิธีแก้ปัญหาสำหรับข้อผิดพลาด 843419 ของ cortex-a53 - เพิ่ม Clang 3.6; 
NDK_TOOLCHAIN_VERSION=clangจะเลือก Clang เวอร์ชันนั้นโดยค่าเริ่มต้น - นำ Clang 3.4 ออกแล้ว
 - นำ GCC 4.6 ออกแล้ว
 - ใช้การรองรับมัลติเธรดใน 
ld.goldสำหรับสถาปัตยกรรมทั้งหมด ตอนนี้สามารถลิงก์ได้โดยมีหรือไม่มีการรองรับมัลติเธรดก็ได้ โดยค่าเริ่มต้นคือการลิงก์โดยไม่มีการรองรับ- หากต้องการคอมไพล์ด้วยมัลติเธรด ให้ใช้ตัวเลือก 
--threads - หากต้องการคอมไพล์โดยไม่ใช้มัลติเธรด ให้ใช้ตัวเลือก 
--no-threads 
 - หากต้องการคอมไพล์ด้วยมัลติเธรด ให้ใช้ตัวเลือก 
 - อัปเกรด GDB/gdbserver เป็น 7.7 สำหรับสถาปัตยกรรมทั้งหมด
 - นำแพ็กเกจ NDK สำหรับ Darwin 32 บิตออก
 
 - ผสานรวมวิธีแก้ปัญหาชั่วคราวสำหรับ Cortex-A53 Erratum 843419 เข้ากับ
        
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
     
- แก้ไขข้อขัดข้องที่เกิดขึ้นเมื่อมีลูป OpenMP อยู่นอกเทรดหลัก
 - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ GCC 4.9 (ICE) ที่เกิดขึ้นเมื่อผู้ใช้ประกาศ
        
#pragma GCC optimize ("O0")แต่มีการระบุระดับการเพิ่มประสิทธิภาพที่แตกต่างกัน ในบรรทัดคำสั่งpragmaจะมีความสำคัญเหนือกว่า - แก้ไขข้อผิดพลาดที่เคยทำให้เกิดข้อขัดข้องพร้อมข้อความแสดงข้อผิดพลาดต่อไปนี้
in add_stores, at var-tracking.c:6000
 - ใช้การแก้ปัญหาชั่วคราวสำหรับปัญหา Clang 3.5 ที่การเวกเตอร์อัตโนมัติของ LLVM
        สร้าง 
llvm.cttz.v2i64()ซึ่งเป็นคำสั่งที่ไม่มีคำสั่งที่เทียบเท่าในชุดคำสั่ง ARM 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
     
- แก้ไขส่วนหัวและไลบรารีต่อไปนี้
 - แก้ไข 
PROPERTY_*ในmedia/NdkMediaDrm.hแล้ว - แก้ไข 
sys/ucontext.hสำหรับmips64แล้ว - ยกเลิกการตรวจสอบเวอร์ชัน Clang สำหรับ 
__builtin_isnanและ__builtin_isinf - เพิ่ม 
android-21/arch-mips/usr/include/asm/reg.hและandroid-21/arch-mips64/usr/include/asm/reg.hแล้ว - แก้ไขคำเตือนเกี่ยวกับขอบเขตของอาร์เรย์ที่ผิดพลาดซึ่ง GCC 4.9 สร้างขึ้นสำหรับ x86 และเปิดใช้คำเตือนเกี่ยวกับขอบเขตของอาร์เรย์ที่ GCC 4.9 สร้างขึ้นสำหรับ ARM อีกครั้ง ก่อนหน้านี้เราได้ปิดใช้คำเตือนสำหรับ ARM โดยไม่มีเงื่อนไข
 - แก้ไข Clang 3.5 สำหรับ 
mipsและmips64เพื่อสร้างส่วน.gcc_except_tableที่เขียนได้ จึงตรงกับลักษณะการทำงานของ GCC การเปลี่ยนแปลงนี้ช่วยให้คุณ หลีกเลี่ยงคำเตือนของลิงเกอร์ต่อไปนี้ได้.../ld: warning: creating a DT_TEXTREL in a shared object
 - ย้อนกลับการแก้ไขปัญหา 
compiler-rtที่ทำให้เกิดข้อขัดข้องเมื่อ Clang คอมไพล์สำหรับmips64ดูข้อมูลเพิ่มเติมได้ที่ปัญหา LLVM 20098 - แก้ไขข้อขัดข้องของ Clang 3.5 ที่เกิดขึ้นในความคิดเห็นที่ไม่ใช่ ASCII (ปัญหา 81440)
 - แก้ไข 
stlport collate::compareเพื่อส่งคืน-1และ1ก่อนหน้านี้ ฟังก์ชันนี้จะแสดงผลตัวเลขที่มีเครื่องหมายโดยพลการ - แก้ไข 
ndk-gdbสำหรับ ABI แบบ 64 บิต (ปัญหา 118300) - แก้ไขข้อขัดข้องที่ตัวอย่าง HelloComputeNDK สำหรับ RenderScript ทำให้เกิดใน Android 4.4 (Android API ระดับ 19) ดูข้อมูลเพิ่มเติมได้ที่หน้านี้
 - แก้ไข 
libc++ __wrap_iterสำหรับ GCC แล้ว ดูข้อมูลเพิ่มเติมได้ที่ปัญหา LLVM 22355 - แก้ไขการรองรับ 
.asmสำหรับ ABIx86_64 - ใช้การแก้ปัญหาชั่วคราวสำหรับปัญหา 
stlportของ GCC 4.8 (ปัญหา 127773) - นำตัวคั่นไดเรกทอรีต่อท้าย 
\\ออกจากเส้นทางโปรเจ็กต์ใน Windows (ปัญหา 160584) - แก้ไขข้อผิดพลาด 
no rule to make targetที่เกิดขึ้นเมื่อคอมไพล์ไฟล์.cไฟล์เดียวโดยการเรียกใช้คำสั่งndk-build.cmdจากgradle(ปัญหา 66937) - เพิ่มไลบรารี 
libatomic.aและlibgomp.aที่หายไปจาก เครื่องมือเชนของโฮสต์ต่อไปนี้aarch64-linux-android-4.9mips64el-linux-android-4.9mipsel-linux-android-4.9x86_64-4.9
 
 - การเปลี่ยนแปลงอื่นๆ
 - 
       
- เพิ่ม 
ld.goldสำหรับaarch64แล้ว Linker เริ่มต้นจะยังคงเป็นld.bfdหากต้องการเปิดใช้ld.goldอย่างชัดเจน ให้เพิ่ม-fuse-ld=goldลงในตัวแปรLOCAL_LDFLAGSหรือAPP_LDFLAGS - สร้าง Toolchain ของ MIPS และ MIPS64 ด้วย 
binutils-2.25ซึ่งช่วยปรับปรุง การรองรับ R6 - ตั้งค่า 
-fstandalone-debug(ข้อมูลการแก้ไขข้อบกพร่องแบบเต็ม) เป็นตัวเลือกเริ่มต้นสำหรับ Clang - แทนที่ 
-fstack-protectorด้วย-fstack-protector-strongสำหรับ ชุดเครื่องมือ ARM, AArch64, X86 และ X86_64 สำหรับ GCC 4.9, Clang 3.5 และ Clang 3.6 - เพิ่มสวิตช์บรรทัดคำสั่ง 
--packageลงในndk-gdbเพื่ออนุญาตให้ระบบบิลด์ ลบล้างชื่อแพ็กเกจ (ปัญหา 56189) -  เลิกใช้งาน 
-mno-ldc1-stc1สำหรับ MIPS ตัวเลือกนี้อาจใช้ไม่ได้กับตัวเลือก-fpxxและ-mno-odd-spregใหม่ หรือกับ FPXX ABI - เพิ่มการตรวจหา MIPS MSA และ R6 ลงใน 
cpu-features 
 - เพิ่ม 
 
Android NDK r10d (ธันวาคม 2014)
- การเปลี่ยนแปลงที่สำคัญ
 - 
      
- ตั้งค่า GCC 4.8 เป็นค่าเริ่มต้นสำหรับ ABI ทั้งหมดแบบ 32 บิต  เลิกใช้งาน GCC 4.6 และ
            จะนำออกในการเผยแพร่ครั้งถัดไป หากต้องการคืนค่าลักษณะการทำงานก่อนหน้า ให้เพิ่ม
            
NDK_TOOLCHAIN_VERSION=4.6ไปยัง ndk-build หรือ เพิ่ม--toolchain=arm-linux-androideabi-4.6เมื่อเรียกใช้make-standalone-toolchain.shในบรรทัดคำสั่ง GCC 4.9 จะยังคงเป็นค่าเริ่มต้นสำหรับ ABI 64 บิต - หยุดไม่ให้ Toolchain x86[_64] ทั้งหมดเพิ่ม 
-mstackrealignโดยค่าเริ่มต้น ชุดเครื่องมือ NDK จะถือว่ามีการจัดวางสแต็ก 16 ไบต์ เครื่องมือและตัวเลือกที่ใช้โดยค่าเริ่มต้น จะบังคับใช้กฎนี้ ผู้ใช้ที่เขียนโค้ดแอสเซมบลีต้องตรวจสอบว่าได้รักษาการจัดแนวสแต็ก และตรวจสอบว่าคอมไพเลอร์อื่นๆ ปฏิบัติตามกฎนี้ด้วย (ข้อบกพร่อง GCC 38496) - เพิ่มฟังก์ชัน Address Sanitizer ลงในการรองรับ Clang 3.5 สำหรับ ABI ของ ARM และ x86 ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงนี้ได้ที่โปรเจ็กต์ Address Sanitizer
 - เปิดตัวข้อกำหนดในการใช้ 
-fPIE -pieเมื่อสร้าง โดยเริ่มตั้งแต่ API ระดับ 21 ใน API ระดับ 16 ขึ้นไป ndk-build จะใช้PIEเมื่อสร้าง การเปลี่ยนแปลงนี้มีผลหลายประการ ซึ่งจะกล่าวถึงใน ปัญหาในรุ่นตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ 888 ข้อจำกัดเหล่านี้ไม่มีผลกับไลบรารีที่ใช้ร่วมกัน 
 - ตั้งค่า GCC 4.8 เป็นค่าเริ่มต้นสำหรับ ABI ทั้งหมดแบบ 32 บิต  เลิกใช้งาน GCC 4.6 และ
            จะนำออกในการเผยแพร่ครั้งถัดไป หากต้องการคืนค่าลักษณะการทำงานก่อนหน้า ให้เพิ่ม
            
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
     
- แก้ไขเพิ่มเติมที่เกี่ยวข้องกับ
            
            ข้อผิดพลาด #835769 ของ A53 ใน Linker aarch64-linux-android-4.9 ในส่วนนี้ GCC
            จะส่งตัวเลือกใหม่ 
--fix-cortex-a53-835769เมื่อมีการระบุ-mfix-cortex-a53-835769(เปิดใช้โดยค่าเริ่มต้น) ดูข้อมูลเพิ่มเติมได้ที่ข้อความ binutils และข้อความ binutils - จัดทำเอกสารการแก้ไขปัญหา libc++ 
sscanf/vsscanfค้างที่เกิดขึ้นใน API ระดับ 21 การแก้ไขนี้ได้นำมาใช้ใน r10c แล้ว (ปัญหา 77988) - แก้ไขข้อขัดข้องของ AutoFDO (
-fauto-profile) ที่เกิดขึ้นกับ GCC 4.9 เมื่อระบุ-Os(ปัญหา 77571) 
 - แก้ไขเพิ่มเติมที่เกี่ยวข้องกับ
            
            ข้อผิดพลาด #835769 ของ A53 ใน Linker aarch64-linux-android-4.9 ในส่วนนี้ GCC
            จะส่งตัวเลือกใหม่ 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
     
- แก้ไขส่วนหัวและไลบรารีต่อไปนี้
 - เพิ่ม 
posix_memalignไปยัง API ระดับ 16 นอกจากนี้ ยังเพิ่มต้นแบบในstdlib.hไปยังระดับ API 16 ถึง 19 ด้วย (ปัญหา 77861) - แก้ไข 
stdatomic.hเพื่อให้มี<atomic>สำหรับ C++11 เท่านั้น - แก้ไขส่วนหัวต่อไปนี้สำหรับการใช้งานแบบสแตนด์อโลน: 
sys/user.hและgl2ext.h,dlext.h,fts.h,sgidefs.hสำหรับ API ระดับ 21 - แก้ไข 
sys/user.hเพื่อเปลี่ยนชื่อmxcsr_maskเป็นmxcr_maskและเปลี่ยนประเภทข้อมูลสำหรับu_ar0 จาก  - เปลี่ยนประเภทค่าที่ส่งคืนของ 
sysconf()จากintเป็นlong - แก้ไขการจัดการ 
thumbของ ndk-build สำหรับLOCAL_ARM_MODE: ใน r10d, ndk-build จะเพิ่มLOCAL_LDFLAGS+=-mthumbโดยค่าเริ่มต้น เว้นแต่จะมีเงื่อนไขต่อไปนี้ อย่างใดอย่างหนึ่ง - คุณตั้งค่า 
LOCAL_ARM_MODEเท่ากับarm - คุณกำลังสร้างบิลด์สำหรับแก้ไขข้อบกพร่อง (โดยมีการตั้งค่า เช่น 
APP_OPTIM=debugและAndroidManifest.xmlที่มีandroid:debuggable="true") ซึ่งโหมด ARM เป็นค่าเริ่มต้นเพื่อรักษาความเข้ากันได้กับ Toolchain รุ่นก่อนหน้า (ปัญหา 74040) - แก้ไข 
LOCAL_SRC_FILESใน ndk-build ให้ใช้เส้นทางแบบสัมบูรณ์ของ Windows (ปัญหา 74333) - นำโค้ดที่เฉพาะเจาะจงกับ Bash ออกจาก ndk-gdb (ปัญหา 73338)
 - นำโค้ดเฉพาะของ Bash ออกจาก 
make-standalone-toolchain.sh(ปัญหา 74145) - ปรับปรุงเอกสารประกอบเกี่ยวกับการแก้ไขทรัพยากร Dependency แบบ
System.loadLibrary()Transitive (ปัญหา 41790) - แก้ไขปัญหาที่ทำให้แพ็กเกจ 64 บิตแตกไฟล์ใน Ubuntu 14.04 และ OS X 10.10 (Yosemite) ไม่ได้ (ปัญหา 78148)
 - แก้ไขปัญหาเกี่ยวกับ 
LOCAL_PCHเพื่อปรับปรุงการรองรับ Clang (ปัญหา 77575) - อธิบายคำเตือน "ต้องมีสแต็กที่เรียกใช้งานได้" จาก ld.gold (ปัญหา 79115)
 
unsigned longไปยัง struct user_regs_struct* 
Android NDK r10c (ตุลาคม 2014)
- การเปลี่ยนแปลงที่สำคัญ
 - 
      
- ทำการเปลี่ยนแปลงโครงสร้างการดาวน์โหลดดังนี้
 - ตอนนี้แต่ละแพ็กเกจมีทั้งส่วนหัว ไลบรารี และเครื่องมือแบบ 32 บิตและ 64 บิตสำหรับ แพลตฟอร์มที่เกี่ยวข้อง
 - ไม่จำเป็นต้องดาวน์โหลดไลบรารี STL ที่มีข้อมูลการแก้ไขข้อบกพร่องแยกต่างหากอีกต่อไป
 - เปลี่ยนทุกอย่างที่ก่อนหน้านี้เรียกว่า 
Android-Lเป็นการกำหนดรุ่นอย่างเป็นทางการandroid-21 - อัปเดต GCC 4.9 โดยการเปลี่ยนฐานเป็นกิ่ง 
googleของที่เก็บ GCC ความแตกต่างที่สำคัญจาก GCC 4.9 เวอร์ชันต้นทางมีดังนี้ - ตอนนี้ตัวเลือก 
-O2จะเปิดการเวกเตอร์โดยไม่มีการลูปพีล แต่มีการคลี่ที่ ดุดันมากขึ้น - การปรับปรุง FDO และ LIPO
 - เพิ่มการรองรับ Clang 3.5 ในโฮสต์ทั้งหมด: 
NDK_TOOLCHAIN_VERSION=clangตอนนี้เลือก Clang 3.5 แล้ว โปรดทราบว่า - ARM และ x86 จะใช้แอสเซมเบลอร์ในตัวโดยค่าเริ่มต้น หากการดำเนินการนี้ทำให้เกิดปัญหา ให้ใช้
  
-fno-integrated-asเป็นวิธีแก้ปัญหาชั่วคราว - Clang 3.5 จะแสดงคำเตือนเพิ่มเติมสำหรับแฟล็กที่ไม่ได้ใช้ เช่น ตัวเลือก 
-finline-functionsที่ GCC รองรับ - ทำให้เข้าสู่โหมดการแก้ไขข้อบกพร่อง ART ได้เมื่อแก้ไขข้อบกพร่องในอุปกรณ์ Android 5.0 โดยใช้ ART เป็นเครื่องเสมือนด้วยการระบุตัวเลือก 
art-onดูข้อมูลเพิ่มเติมได้ที่prebuilt/common/gdb/common.setupในไดเรกทอรีที่มี NDK - นำการรองรับ Clang 3.3 ออกแล้ว
 - เลิกใช้งาน GCC 4.6 และอาจนำออกจากรุ่นต่อๆ ไป
 - อัปเดต mclinker เป็น 2.8 พร้อมรองรับการพับโค้ดที่เหมือนกัน ("ICF") ระบุ ICF โดยใช้ตัวเลือก
  
--icf - ขยาย
arm_neon.hการรองรับใน x86 และ x86_64 เพื่อให้ครอบคลุมถึง ~93% ของ NEON Intrinsics ดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับ NEON ได้ที่- ไปที่คู่มือโปรแกรมเมอร์ NDK (
docs/Programmers_Guide/html/) แล้วดู สถาปัตยกรรมและ CPU > Neon - ดู
hello-neonตัวอย่างsamples/ที่อัปเดตแล้ว - ดูคำแนะนำของ Intel เกี่ยวกับ การพอร์ตจาก ARM NEON ไปยัง Intel SSE
 
 - ไปที่คู่มือโปรแกรมเมอร์ NDK (
 - มีการบันทึกการรองรับ 
_FORTIFY_SOURCEในheaders/libs/android-21, ซึ่งปรากฏใน r10 (เมื่อandroid-21ยังคงเรียกว่าAndroid-L) แต่ไม่มีเอกสารประกอบ 
ดูข้อมูลโดยละเอียดเพิ่มเติมได้ที่การแก้ไขข้อบกพร่องที่สำคัญด้านล่าง
เมื่อย้ายข้อมูลจากโปรเจ็กต์ที่ใช้ GCC คุณสามารถใช้
-Wno-invalid-command-line-argumentและ-Wno-unused-command-line-argumentเพื่อไม่สนใจ Flag ที่ไม่ได้ใช้จนกว่าจะตัดสินใจได้ว่าจะทำอย่างไรกับ Flag เหล่านั้นในระยะยาว - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
     
- แก้ไขข้อผิดพลาดของคอมไพเลอร์ภายในด้วย GCC4.9/aarch64 ซึ่งทำให้เกิดข้อความแสดงข้อผิดพลาดต่อไปนี้ (ปัญหา 77564)
 - แก้ไขการสร้างโค้ดที่ไม่ถูกต้องจาก GCC4.9/arm (ปัญหา 77567)
 - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ด้วย GCC4.9/mips ที่เกี่ยวข้องกับการประกอบแบบอินไลน์ (ปัญหา 77568)
 - แก้ไขโค้ดที่ไม่ถูกต้องที่ GCC4.9/arm สร้างขึ้นสำหรับ 
x = (cond) ? y : x(ปัญหา 77569) - แก้ไข GCC4.9/aarch64 และ Clang3.5/aarch64 ให้ทำงานได้โดยค่าเริ่มต้นเพื่อหลีกเลี่ยง
       
       ข้อผิดพลาดของ Cortex-A53 (835769)  ปิดใช้การแก้ปัญหาชั่วคราวโดยระบุ
       
-mno-fix-cortex-a53-835769 
internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
     
- แก้ไขส่วนหัวและไลบรารีต่อไปนี้ใน 
android-21- เพิ่มรหัสปุ่มทีวี: 
android/keycodes.h - เพิ่มค่าคงที่และฟังก์ชันเซ็นเซอร์ใหม่ 6 รายการลงใน 
android/sensor.hดังนี้ASensorManager_getDefaultSensorEx,ASensor_getFifoMaxEventCount,ASensor_getFifoReservedEventCount,ASensor_getStringType,ASensor_getReportingModeและASensor_isWakeUpSensor - แก้ไข 
stdatomic.hเพื่อปรับปรุงความเข้ากันได้กับ GCC 4.6 และรองรับ ส่วนหัว<atomic> - เพิ่ม 
sys/ucontext.hและsys/user.hลงใน API ทุกระดับ ตอนนี้ส่วนหัวsignal.hมี<sys/ucontext.h>แล้ว คุณอาจ นำคำจำกัดความของstruct ucontextที่มีอยู่ออก - เพิ่ม 
posix_memalignไปยัง API ระดับ 17, 18 และ 19 - เพิ่มฟังก์ชันต่อไปนี้ลงในสถาปัตยกรรมทั้งหมด
        
android_set_abort_message,posix_fadviseposix_fadvise64,pthread_gettid_np - เพิ่มสิทธิ์ที่จำเป็นลงใน
native-media/AndroidManifest.xmlตัวอย่าง (ปัญหา 106640) - เพิ่ม 
clock_nanosleepและclock_settimeลงใน API ระดับ 21 (ปัญหา 77372) - นำสัญลักษณ์ต่อไปนี้ออกจากสถาปัตยกรรมทั้งหมด
        
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และdlmalloc - นำฟังก์ชันต่อไปนี้ออกจากสถาปัตยกรรม 64 บิต 
basename_r,dirname_r,__isthreaded,_flush_cache(mips64) - นำฟังก์ชันต่อไปนี้ออกจากสถาปัตยกรรม 32 บิต
        
__signalfd4 - เปลี่ยนประเภทของอาร์กิวเมนต์ที่ 3 จาก 
size_tเป็นintใน ฟังก์ชันต่อไปนี้strtoll_l,strtoull_l,wcstoll_lและwcstoull_l - กู้คืนฟังก์ชันต่อไปนี้ในสถาปัตยกรรม 64 บิต: 
arc4random,arc4random_bufและarc4random_uniform - ย้าย 
cxa_*รวมถึงโอเปอเรเตอร์newและdeleteกลับไปที่libstdc++.soการเปลี่ยนแปลงนี้จะคืนค่าลักษณะการทำงานของ r9d ส่วน r10 เวอร์ชันก่อนหน้า มีไฟล์ตัวยึดตำแหน่ง 
 - เพิ่มรหัสปุ่มทีวี: 
 - กู้คืนการรองรับ MXU ใน GCC 4.8 และ 4.9 สำหรับ mips การรองรับนี้ไม่มีใน r10 และ r10b เนื่องจาก GCC เวอร์ชันเหล่านั้นคอมไพล์ด้วย binutils-2.24 ซึ่งไม่รองรับ MXU ตอนนี้ทำได้แล้ว
 - แก้ไข
--toolchain=ในmake-standalone-toolchain.shเพื่อให้ รองรับการใช้คำต่อท้ายที่ระบุเวอร์ชันของ Clang ได้อย่างถูกต้อง - แก้ไขฟังก์ชัน libc++/armeabi 
strtod() - แก้ไขเอกสาร NDK ใน 
docs/ 
 - แก้ไขส่วนหัวและไลบรารีต่อไปนี้ใน 
 - การเปลี่ยนแปลงอื่นๆ
 - 
       
- ปรับปรุง 
cpu-featuresเพื่อตรวจหาการรองรับ ARMv8 สำหรับชุดคำสั่งต่อไปนี้ AES, CRC32, SHA2, SHA1 และ PMULL/PMULL2 แบบ 64 บิต (ปัญหา 106360) - แก้ไข ndk-build เพื่อใช้ 
*-gcc-arซึ่งมีอยู่ใน GCC 4.8, GCC 4.9 และ Clang Clang ระบุไว้แทน*-arการตั้งค่านี้ช่วยปรับปรุงการรองรับ LTO - นำส่วนหัว 
include-fixed/linux/a.out.hและinclude-fixed/linux/compiler.hออกจากคอมไพเลอร์ GCC (ปัญหา 73728) - แก้ไขปัญหาที่เกี่ยวข้องกับ 
-fltoด้วย GCC 4.8 ใน Mac OS X ข้อความแสดงข้อผิดพลาด ระบุว่า - แก้ไขการพิมพ์ผิดใน 
build-binary.mk.(ปัญหา 76992) 
.../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so Symbol not found: _environ
 - ปรับปรุง 
 - ปัญหาสำคัญที่ทราบ
 - 
     
- การระบุ -Os (
-fauto-profile) ใน GCC4.9 อาจทําให้เกิดข้อขัดข้อง (ปัญหา 77571) 
 - การระบุ -Os (
 
Android NDK r10b (กันยายน 2014)
- หมายเหตุสำคัญ:
 - 
     
- เนื่องจากข้อจำกัดด้านขนาด 512 MB ในแพ็กเกจที่ดาวน์โหลดได้ รายการ 32 บิตต่อไปนี้จึงไม่อยู่ในแพ็กเกจการดาวน์โหลด NDK 32 บิต แต่จะอยู่ในระบบ 64 บิตแทน
 - ส่วนหัวของ Android-L
 - GCC 4.9
 - ปัจจุบัน NDK รองรับเฉพาะ Renderscript แบบ 32 บิตที่มี Android 4.4 (API ระดับ 19) คุณไม่สามารถสร้าง HelloComputeNDK (ตัวอย่าง Renderscript เพียงตัวอย่างเดียว) ด้วยการผสมผสาน Renderscript (32 หรือ 64 บิต) และ Android เวอร์ชันอื่นๆ
 - หากต้องการคอมไพล์ native-codec คุณต้องใช้แพ็กเกจ NDK แบบ 64 บิต ซึ่งเป็นที่ตั้งของส่วนหัวทั้งหมดของ Android-L
 
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
     
- นำ 
stdio.hออกจากไดเรกทอรีinclude-fixed/ของ GCC ทุกเวอร์ชัน (ปัญหา 73728) - นำไฟล์ส่วนหัวที่ซ้ำกันออกจากแพ็กเกจ Windows ในไดเรกทอรี 
platforms/android-L/arch-*/usr/include/linux/netfilter*/แล้ว (ปัญหา 73704) - แก้ไขปัญหาที่ทำให้ Clang สร้าง HelloComputeNDK ไม่ได้
 - แก้ไข atexit (ปัญหา 66595)
 - ทำการแก้ไขต่างๆ ในเอกสารใน 
docs/และsources/third_party/googletest/README.NDK(ปัญหา 74069) - ทำการแก้ไขส่วนหัวของ Android-L ดังนี้
 - เพิ่มฟังก์ชันต่อไปนี้ใน 
ctype.hและwchar.h:dn_expand(),grantpt(),inet_nsap_addr(),inet_nsap_ntoa(),insque(),nsdispatch(),posix_openpt(),__pthread_cleanup_pop(),__pthread_cleanup_push(),remque(),setfsgid(),setfsuid(),splice(),tee(),twalk()(ปัญหา 73719) และฟังก์ชัน*_l()42 รายการ - เปลี่ยนชื่อ 
cmsg_nxthdrเป็น__cmsg_nxthdrแล้ว - นำ 
__libc_malloc_dispatchออกแล้ว - เปลี่ยนต้นแบบ 
ptrace()เป็นlong ptrace(int, ...); - นำ 
sha1.hออกแล้ว - ขยายเวลา 
android_dlextinfoในandroid/dlext.h __NDK_FPABI__ที่มีคำอธิบายประกอบสำหรับฟังก์ชันที่รับหรือแสดงค่าประเภท Float หรือ Double ในstdlib.h,time.h,wchar.hและcomplex.h
 - นำ 
 - การเปลี่ยนแปลงอื่นๆ
 - 
     
- อัปเดต 
mipsel-linux-android-4.9และmips64el-linux-android-4.9โดยใช้โครงสร้างไดเรกทอรีแบบมัลติลิบใหม่ และรองรับ gdb-7.7 - ปรับปรุง 
cpu-featuresเพื่อตรวจหาฟีเจอร์ arm64 เพิ่มเติม (รายการเปลี่ยนแปลง 100339) 
 - อัปเดต 
 
Android NDK r10 (กรกฎาคม 2014)
- การเปลี่ยนแปลงที่สำคัญ
 - 
      
- เพิ่ม ABI ใหม่ 3 รายการ ซึ่งเป็นแบบ 64 บิตทั้งหมด ได้แก่ arm64-v8a, x86_64 และ mips64 โปรดทราบว่า
 - GCC 4.9 เป็นคอมไพเลอร์เริ่มต้นสำหรับ ABI แบบ 64 บิต ปัจจุบัน Clang เป็นเวอร์ชัน 3.4
NDK_TOOLCHAIN_VERSION=clangอาจใช้ไม่ได้กับ arm64-v8a และ mips64 - Android-L เป็นระดับแรกที่รองรับ 64 บิต โปรดทราบว่า API ระดับนี้เป็น API ระดับชั่วคราวและใช้ได้กับ L-preview เท่านั้น หมายเลขระดับ API จริงจะมาแทนที่ใน รุ่น L
 - รุ่นนี้มี
all32และall64การตั้งค่าสำหรับAPP_ABIAPP_ABI=all32มีค่าเท่ากับAPP_ABI=armeabi,armeabi-v7a,x86,mipsAPP_ABI=all64มีค่าเท่ากับAPP_ABI=arm64-v8a,x86_64,mips64APP_ABI=allเลือก ABI ทั้งหมด
 - GNU libstdc++ ใหม่ใน Android-L มี
<tr1/cmath>ก่อนที่จะกำหนดฟังก์ชันทางคณิตศาสตร์ของคุณเอง ให้ตรวจสอบ_GLIBCXX_USE_C99_MATH_TR1เพื่อดูว่ามีฟังก์ชันที่มีชื่อนั้นอยู่แล้วหรือไม่ เพื่อหลีกเลี่ยงข้อผิดพลาด "การกำหนดหลายรายการ" จาก โปรแกรมลิงก์ - เราได้อัปเดตไลบรารี cpu-features สำหรับเคอร์เนล ARMv8 แล้ว ไลบรารี cpu-features ที่มีอยู่อาจตรวจไม่พบ NEON ในแพลตฟอร์ม ARMv8 คอมไพล์โค้ดของคุณอีกครั้งด้วยเวอร์ชันใหม่
 - เพิ่ม
platforms/android-L/ไดเรกทอรี API ใหม่ แอปประกอบด้วย - อัปเดตส่วนหัว Bionic ซึ่งไม่มีการเปลี่ยนแปลงตั้งแต่ Android API ระดับ 3 (Cupcake) ถึง 19 (KitKat) เวอร์ชันใหม่นี้สำหรับระดับ L จะต้องซิงค์กับ AOSP
 - API สื่อใหม่และตัวอย่างโคเดกแบบเนทีฟ
 - อัปเดตส่วนหัว 
Android.hสำหรับ SLES/OpenSLES เพื่อให้รองรับ รูปแบบเสียงแบบจุดลอยตัวที่มีความแม่นยำเดียวใน AudioPlayer - ส่วนขยาย GLES 3.1 และ AEP สำหรับ 
libGLESv3.so. - อัปเดตส่วนหัว GLES2 และ GLES3 เป็นเวอร์ชัน Khronos อย่างเป็นทางการล่าสุด
 - เพิ่มคอมไพเลอร์ GCC 4.9 ลงใน ABI แบบ 32/64 บิต GCC 4.9 เป็นคอมไพเลอร์เริ่มต้น (เพียงตัวเดียว) สำหรับ ABI แบบ 64 บิต ดังที่ได้กล่าวไว้ก่อนหน้านี้ สำหรับ ABI แบบ 32 บิต คุณต้องเปิดใช้ GCC 4.9 อย่างชัดแจ้ง เนื่องจาก GCC 4.6 ยังคงเป็นค่าเริ่มต้น
 - สำหรับ ndk-build ให้เปิดใช้การสร้าง GCC 4.9 แบบ 32 บิตโดยการเพิ่ม
NDK_TOOLCHAIN_VERSION=4.9ไปยังApplication.mkหรือส่งออกเป็น ตัวแปรสภาพแวดล้อมจากบรรทัดคำสั่ง - สำหรับ Toolchain แบบสแตนด์อโลน ให้ใช้ตัวเลือก 
--toolchain=ในสคริปต์make-standalone-toolchain.shเช่น--toolchain=arm-linux-androideabi-4.9. - อัปเกรด GDB เป็นเวอร์ชัน 7.6 ใน GCC 4.8/4.9 และ x86* เนื่องจาก GDB ยังคงเป็นเวอร์ชัน GDB-7.3.x ใน
GCC 4.6 (ค่าเริ่มต้นสำหรับ ARM และ MIPS) คุณจึงต้องตั้งค่า
NDK_TOOLCHAIN_VERSION=4.8หรือ4.9เพื่อให้ ndk-gdb เลือก GDB 7.6 - เพิ่ม
-mssse3ตัวเลือกการสร้างเพื่อให้รองรับ SSSE3 และตั้งค่าให้เป็นค่าเริ่มต้นสำหรับ ABI x86 (อัปเกรดจาก SSE3) รูปภาพที่ Google เผยแพร่ไม่มีคำสั่ง SSSE3 - อัปเดต GCC จาก 4.8 เป็น 4.8.3
 - ปรับปรุงการรองรับ EH ของ ARM libc++ โดยเปลี่ยนจาก gabi++ เป็น libc++abi ดูรายละเอียดได้ที่ส่วน "การรองรับ C++" ในเอกสารประกอบ โปรดทราบว่า
 - ตอนนี้การทดสอบทั้งหมด ยกเว้นการทดสอบภาษา ผ่านสำหรับ Clang 3.4 และ GCC 4.8 แล้ว ดูข้อมูลเพิ่มเติมได้ที่ส่วน "การรองรับ C++" ในเอกสารประกอบ
 - ไลบรารี libc++ สำหรับ X86 และ MIPS libc++ ยังคงใช้ gabi++
 - ตอนนี้ GCC 4.7 ขึ้นไปใช้ <atomic> ได้แล้ว
 - คุณต้องเพิ่ม 
-fno-strict-aliasingหากใช้<list>เนื่องจาก__list_imp::_end_ ละเมิด กฎ TBAA (ปัญหา 61571) - ตั้งแต่ GCC 4.6 เป็นต้นไป LIBCXX_FORCE_REBUILD:=true จะไม่สร้าง libc++ ใหม่ การสร้างใหม่ ต้องใช้คอมไพเลอร์อื่น โปรดทราบว่าเรายังไม่ได้ทดสอบ Clang 3.3
 - ตอนนี้ mclinker เป็นเวอร์ชัน 2.7 และรองรับ Linux aarch64 แล้ว
 - เพิ่มการรองรับส่วนหัวที่คอมไพล์ล่วงหน้าสำหรับส่วนหัวที่ระบุโดย 
LOCAL_PCH(ปัญหา 25412) 
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
     
- แก้ไข libc++ เพื่อให้คอมไพล์ 
std::feofฯลฯ ได้แล้ว (ปัญหา 66668) - แก้ไขการเรียกใช้ไลบรารีอะตอมของ Clang 3.3/3.4 ที่ทำให้เกิดข้อขัดข้องในการทดสอบ libc++ บางรายการสำหรับ ABI armeabi
 - แก้ไขข้อขัดข้องของ Clang 3.4 ที่เกิดขึ้นเมื่ออ่านส่วนหัวที่คอมไพล์ล่วงหน้า (ปัญหา 66657)
 - แก้ไขการยืนยัน 
-O3ของ Clang 3.3/3.4 ใน - แก้ไขข้อขัดข้องต่อไปนี้ของ Clang 3.3/3.4
 
llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode* llvm::MDBuilder::createBranchWeights(llvm::ArrayRef(ปัญหา 57381)): Assertion Weights.size() >= 2 && "Need at least two branch weights!" Assertion failed: (!Fn && "cast failed but able to resolve overload expression!!"), function CheckCXXCStyleCast, file Volumes/data/ndk-toolchain/src/llvm-3.3/llvm/tools/clang/lib/Sema/SemaCast.cpp, line 2018(ปัญหา 66950) - แก้ไข libc++ เพื่อให้คอมไพล์ 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
     
- ส่วนหัวที่ตรึงไว้
 - แก้ไข 
ssize_t32 บิตเป็นintแทนlong int - แก้ไข 
WCHAR_MINและWCHAR_MAXเพื่อให้ใช้ เครื่องหมายที่เหมาะสมตามสถาปัตยกรรมที่ใช้ - X86/MIPS: signed.
 - ARM: ไม่ได้ลงนาม
 - หากต้องการบังคับให้ X86/MIPS ใช้ค่าเริ่มต้นเป็นแบบไม่มีการลงนาม ให้ใช้
-D__WCHAR_UNSIGNED__ - หากต้องการบังคับให้ 
wchar_tเป็น 16 บิต ให้ใช้-fshort-wchar - นำสัญลักษณ์ที่ไม่มีอยู่ออกจาก 32 บิต 
libc.soและเพิ่มpread64pwrite64ftruncate64สำหรับ API ระดับ 12 ขึ้นไปของ Android (ปัญหา 69319) ดูข้อมูลเพิ่มเติมได้ที่ข้อความคอมมิตที่มาพร้อมกับรายการการเปลี่ยนแปลงของ AOSP 94137 - แก้ไขคำเตือน GCC เกี่ยวกับการกำหนด 
putcharใหม่ ข้อความเตือนระบุว่า - แก้ไข 
make-standalone-toolchain.sh --stl=libc++เพื่อให้ - สำเนา 
cxxabi.h(ปัญหา 68001) - ทำงานในไดเรกทอรีอื่นที่ไม่ใช่ไดเรกทอรีการติดตั้ง NDK (ปัญหา 67690 และ 68647)
 - แก้ไข GCC/Windows เพื่อใส่เครื่องหมายคำพูดให้กับอาร์กิวเมนต์เมื่อจำเป็นเท่านั้นสำหรับการสร้างกระบวนการใน โปรแกรมภายนอก การเปลี่ยนแปลงนี้จะช่วยลดโอกาสที่จะเกินขีดจำกัดความยาว 32,000 ตัวอักษร
 - แก้ไขปัญหาที่ทำให้ปรับ
APP_PLATFORMตัวแปรสภาพแวดล้อมไม่ได้ - แก้ไขการใช้งาน 
IsSystemLibrary()ใน crazy_linker เพื่อให้ใช้strrchr()แทนstrchr()ในการค้นหาชื่อฐานจริงของเส้นทางไลบรารี - แก้ไขปัญหาที่ native-audio สร้างในโหมดแก้ไขข้อบกพร่องไม่ได้
 - แก้ไขปัญหาที่ gdb พิมพ์ตัวเลขทศนิยมที่มากเกินไปไม่ได้ (ปัญหา 69203)
 - แก้ไขปัญหาที่ Clang 3.4 ไม่สามารถคอมไพล์กับ 
-Wl,-shared(ซึ่งต่างจาก-sharedที่ ไม่มีปัญหาในการคอมไพล์) ปัญหาคือ Clang เพิ่ม-pieสำหรับเป้าหมาย Android หากไม่มีทั้ง-sharedและ-staticลักษณะการทำงานนี้ซึ่งไม่ถูกต้องทำให้ Linker แจ้งว่า-sharedและ-pieอยู่ร่วมกันไม่ได้ 
include/stdio.h:236:5: warning: conflicts with previous declaration here [-Wattributes] int putchar(int);(รายการการเปลี่ยนแปลง 91185) - การเปลี่ยนแปลงอื่นๆ
 - 
     
- เพิ่ม 
arm_neon.hลงใน Toolchain ของ x86 เพื่อให้ตอนนี้สามารถจำลอง Neon ได้ประมาณ 47% ปัจจุบันยังไม่รองรับประเภท 64 บิต ดูข้อมูลเพิ่มเติมได้ที่ส่วนการรองรับฟังก์ชันภายในของ ARM Neon ในเอกสารประกอบ x86 - พอร์ตการเพิ่มประสิทธิภาพ ARM/GOT_PREL (มีอยู่ใน GCC 4.6 ที่สร้างจากสาขา Google ของ GCC) ไปยัง
ARM GCC 4.8/4.9  การเพิ่มประสิทธิภาพนี้บางครั้งจะลดจำนวนคำสั่งเมื่อเข้าถึงตัวแปรส่วนกลาง  ตัวอย่างเช่น ดูสคริปต์ build.sh ใน
$NDK/tests/build/b14811006-GOT_PREL-optimization/ - เพิ่มเวอร์ชัน ARM สำหรับ STL gabi++, stlport และ libc++ ตอนนี้ทั้ง 3 รายการมีทั้งโหมด it และ Thumb
 - ตอนนี้คุณสามารถเรียกใช้สคริปต์ make-standalone-toolchain.sh ด้วย
--toolchain=x86_64-linux-android-4.9ซึ่งเทียบเท่ากับ--toolchain=x86_64-4.9 
 - เพิ่ม 
 
Android NDK r9d (มีนาคม 2014)
- การเปลี่ยนแปลงที่สำคัญ
 - 
      
- เพิ่มการรองรับคอมไพเลอร์ Clang 3.4 ตอนนี้ตัวเลือก
NDK_TOOLCHAIN_VERSION=clangจะเลือก Clang 3.4 GCC 4.6 ยังคงเป็นคอมไพเลอร์เริ่มต้น - เพิ่ม 
APP_ABI=armeabi-v7a-hardพร้อม ตัวเลือก Multilib เพิ่มเติม-mfloat-abi=hardตัวเลือกเหล่านี้ใช้กับ ARM GCC 4.6/4.8 และ Clang 3.3/3.4 (ซึ่งใช้แอสเซมเบลอร์ ลิงก์เกอร์ และไลบรารีของ 4.8) เมื่อใช้ตัวเลือกเหล่านี้ โปรดทราบถึงการเปลี่ยนแปลงต่อไปนี้ -  เมื่อเรียกใช้สคริปต์ 
ndk-buildให้เพิ่มตัวเลือกต่อไปนี้สำหรับเป้าหมาย armeabi-v7a ระบบจะคัดลอกไลบรารีที่สร้างไปยังTARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1 TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
libs/armeabi-v7aหากต้องการให้ make ทำงานตามที่คาดไว้ คุณจะระบุทั้งarmeabi-v7aและarmeabi-v7a-hardเป็นเป้าหมายของ make ไม่ได้ (เช่น ในบรรทัด APP_ABI=) การทำเช่นนี้จะทำให้ระบบไม่สนใจรายการใดรายการหนึ่ง โปรดทราบว่าAPP_ABI=allยังคงเทียบเท่ากับarmeabi armeabi-v7a x86 mips make-standalone-toolchain.shสคริปต์จะคัดลอก ไลบรารีเพิ่มเติมภายใต้ไดเรกทอรี/hardเพิ่มCFLAGSและLFLAGSข้างต้นลงใน makefile เพื่อให้ GCC หรือ Clang ลิงก์กับ ไลบรารีใน/hardได้- เพิ่มแอสเซมเบลอร์ yasm รวมถึงแฟล็ก 
LOCAL_ASMFLAGSและEXPORT_ASMFLAGSสำหรับเป้าหมาย x86 สคริปต์ndk-buildใช้prebuilts/*/bin/yasm*เพื่อสร้างLOCAL_SRC_FILESที่มี นามสกุล.asm - อัปเดต MClinker เป็น 2.6.0 ซึ่งเพิ่ม
-gc-sectionsการรองรับ - เพิ่มการรองรับ libc++ เวอร์ชันทดลอง (ต้นทาง r201101)  ใช้ฟีเจอร์ใหม่นี้
โดยทำตามขั้นตอนต่อไปนี้
        
- เพิ่ม 
APP_STL := c++_staticหรือAPP_STL := c++_sharedในApplication.mkคุณอาจสร้างใหม่จากแหล่งที่มาผ่านLIBCXX_FORCE_REBUILD := true - เรียกใช้ 
make-standalone-toolchain.sh --stl=libc++เพื่อสร้างเครื่องมือเชนแบบสแตนด์อโลนที่มีส่วนหัว/ไลบรารี libc++ 
CPLUSPLUS-SUPPORT.html(ปัญหา 36496) - เพิ่ม 
 
 - เพิ่มการรองรับคอมไพเลอร์ Clang 3.4 ตอนนี้ตัวเลือก
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
     
- แก้ไขการส่งที่ไม่ได้ดักจับจากตัวแฮนเดิลข้อยกเว้นที่ไม่คาดคิด สำหรับ GCC 4.6/4.8 ARM EABI (ปัญหา GCC 59392)
 - แก้ไข GCC 4.8 เพื่อให้ตอนนี้สามารถแก้ไขการ เชี่ยวชาญบางส่วนของเทมเพลตที่มี อาร์กิวเมนต์เทมเพลตที่ไม่ใช่ประเภทซึ่งขึ้นอยู่กับเทมเพลตอื่นได้อย่างถูกต้อง (ปัญหา GCC 59052)
 - เพิ่มโมดูลลงใน Python ที่สร้างไว้ล่วงหน้า (ปัญหา 59902):
               
- Mac OS X: 
zlib,bz2,_curses,_curses_panel,_hashlib,_ssl - Linux: 
zlib,nis,crypt,_cursesและ_curses_panel 
 - Mac OS X: 
 - แก้ไข gdbserver ของ x86 และ MIPS
event_getmsg_helper - แก้ไขปัญหามากมายในเครื่องมือ RenderScript NDK ซึ่งรวมถึง ปัญหาเกี่ยวกับความเข้ากันได้ในอุปกรณ์รุ่นเก่าและ C++ Reflection
 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
     
- การแก้ไขส่วนหัว
         
- แก้ไขปัญหาการขาดหายไปของ 
#include <sys/types.h>ในandroid/asset_manager.hสำหรับ Android API ระดับ 13 ขึ้นไป (ปัญหา 64988) - แก้ไขปัญหาการขาดหายไปของ 
#includeในandroid/rect_manager.hสำหรับ Android API ระดับ 14 ขึ้นไป - เพิ่ม 
JNICALLไปยังJNI_OnLoadและJNI_OnUnloadในjni.hแล้ว โปรดทราบว่าJNICALLมีการกำหนดเป็น__NDK_FPABI__ดูข้อมูลเพิ่มเติมได้ที่sys/cdefs.h - อัปเดตส่วนหัวต่อไปนี้เพื่อให้รวมได้ โดยไม่ต้อง รวมการอ้างอิงด้วยตนเอง (ปัญหา 64679)
 - เพิ่ม 
sys/cachectl.hสำหรับสถาปัตยกรรมทั้งหมด ตอนนี้ผู้พัฒนา MIPS สามารถรวมส่วนหัวนี้แทนการเขียน#ifdef __mips__ได้แล้ว - แก้ไข
platforms/android-18/include/android/input.hโดยการเพิ่ม__NDK_FPABI__ลงในฟังก์ชันที่รับหรือแสดงผล ค่า float หรือ double - แก้ไข MIPS 
struct statซึ่งตั้งค่าไม่ถูกต้อง เป็นคู่ของ MIPS 64 บิตสำหรับ Android API ระดับ 12 ขึ้นไป การตั้งค่าที่ไม่ถูกต้องนี้เป็นการถดถอยที่เกิดขึ้นในรุ่น r9c - กำหนด 
__PTHREAD_MUTEX_INIT_VALUE,__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE, และ__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUEสำหรับ Android API ระดับ 9 และต่ำกว่า - เพิ่ม 
scalbln,scalblnfและscalblnlลงใน x86libm.soสำหรับ API 18 ขึ้นไป - แก้ไขการพิมพ์ผิดใน
sources/android/support/include/iconv.h(ปัญหา 63806) 
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
 - แก้ไขปัญหาการขาดหายไปของ 
 - แก้ไข gabi++ 
std::unexpected()to callstd::terminate()เพื่อให้ ตัวแฮนเดิลstd::terminate()ที่ผู้ใช้กำหนดมีโอกาสได้ทำงาน - แก้ไข gabi++ เพื่อจับ 
std::nullptr - ตัวอย่างคงที่ Teapot และ MoreTeapots
         
- แก้ไขปัญหาเกี่ยวกับชิป Tegra 2 และ 3 โดยเปลี่ยนตัวแปร specular ให้ใช้ความแม่นยำระดับกลาง ตอนนี้ค่าสำหรับกำลังสะท้อนสามารถน้อยกว่า 1.0 ได้แล้ว
 - เปลี่ยนตัวอย่างเพื่อให้การกดปุ่มปรับระดับเสียงจะคืนค่า
โหมดสมจริงและทำให้
SYSTEM_UI_FLAG_IMMERSIVE_STICKYไม่ถูกต้อง การหมุนหน้าจอจะไม่ ทริกเกอร์onSystemUiVisibilityChangeและจะไม่คืนค่า โหมดสมจริง 
 - แก้ไขสคริปต์ 
ndk-buildเพื่อเพิ่ม-rpath-link=$SYSROOT/usr/libและ-rpath-link=$TARGET_OUTเพื่อใช้ld.bfdในการ ลิงก์ไฟล์ที่เรียกใช้งานได้ (ปัญหา 64266) - นำ 
-Bsymbolicออกจากบิลด์ STL ทั้งหมด - แก้ไข
ndk-gdb-py.cmdโดยตั้งค่าSHELLเป็น ตัวแปรสภาพแวดล้อม แทนการส่งไปยังpython.exeซึ่งไม่สนใจการตั้งค่า (ปัญหา 63054) - แก้ไขสคริปต์ 
make-standalone-toolchain.shเพื่อให้ตัวเลือก--stl=stlportคัดลอกส่วนหัว gabi++ แทนที่จะ สร้างลิงก์สัญลักษณ์ เนื่องจากเชลล์cmd.exeและ MinGW ไม่เข้าใจ ลิงก์สัญลักษณ์ที่สร้างโดย cygwin 
 - การแก้ไขส่วนหัว
         
 - การเปลี่ยนแปลงอื่นๆ
 - 
     
- ใช้สิทธิ์การดำเนินการกับสคริปต์ 
*cmdทั้งหมด ที่ก่อนหน้านี้มีไว้สำหรับใช้ในเชลล์cmd.exeเท่านั้น ในกรณีที่ นักพัฒนาซอฟต์แวร์ต้องการใช้ndk-build.cmdใน cygwin แทนสคริปต์ndk-buildที่แนะนำ - ปรับปรุงความเร็วของ
make-standalone-toolchain.shสคริปต์โดยการย้ายแทนการคัดลอกหากไม่มีไดเรกทอรีปลายทางที่ระบุ 
 - ใช้สิทธิ์การดำเนินการกับสคริปต์ 
 
Android NDK r9c (ธันวาคม 2013)
รุ่นนี้เป็นการแก้ไขข้อบกพร่องเท่านั้น
- การแก้ไขข้อบกพร่องที่สำคัญ
 - 
     
- แก้ไขปัญหาเกี่ยวกับ GCC 4.8 ARM ซึ่งมีการกู้คืนตัวชี้สแต็กเร็วเกินไป ปัญหานี้ทำให้ตัวชี้เฟรมเข้าถึงตัวแปรในเฟรมสแต็กได้อย่างไม่น่าเชื่อถือ (ปัญหา GCC 58854)
 - แก้ไขปัญหาเกี่ยวกับ libstdc++ ของ GCC 4.8 ซึ่งมีข้อบกพร่องใน std::nth_element ที่ทำให้เกิดการสร้างโค้ดที่ทำให้เกิด ข้อผิดพลาดในการแบ่งส่วนแบบสุ่ม (ปัญหา 62910)
 - แก้ไข ICE ของ GCC 4.8 ใน cc1/cc1plus ด้วย
-fuse-ld=mcldเพื่อไม่ให้เกิดข้อผิดพลาดต่อไปนี้อีกcc1: internal compiler error: in common_handle_option, at opts.c:1774
 - แก้ไข
-mhard-floatการรองรับ__builtinฟังก์ชันทางคณิตศาสตร์ โปรดติดตามปัญหา 61784 เพื่อดูข้อมูลล่าสุดเกี่ยวกับการแก้ไขปัญหาสำหรับ-mhard-floatด้วย STL 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
     
- การแก้ไขส่วนหัว
         
- เปลี่ยนต้นแบบของ 
pollเป็นpoll(struct pollfd *, nfds_t, int);ในpoll.h - เพิ่ม 
utimensatไปยังlibc.soสำหรับ Android API ระดับ 12 และ 19 ตอนนี้ไลบรารีเหล่านี้รวมอยู่ใน Android API ระดับ 12 ถึง 19 ทั้งหมดแล้ว - เปิดตัว 
futimensในlibc.soสำหรับ Android API ระดับ 19 - เพิ่ม 
clock_settime()และclock_nanosleep()ที่ขาดหายไปลงในtime.hสำหรับ Android API ระดับ 8 ขึ้นไป - เพิ่ม 
CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,และCLOCK_BOOTTIME_ALARMในtime.h. - นำ 
CLOCK_REALTIME_HRและCLOCK_MONOTONIC_HR.ที่ล้าสมัยออกแล้ว 
 - เปลี่ยนต้นแบบของ 
 - ในตัวอย่าง Teapot, MoreTeapots และ
source/android/ndk_helperให้ทำดังนี้- เราได้เปลี่ยนให้ใช้ ABI แบบฮาร์ดโฟลตสำหรับ armeabi-v7a แล้ว
 - อัปเดตให้ใช้โหมดสมจริงใน Android API ระดับ 19 ขึ้นไป
 - แก้ไขปัญหาเกี่ยวกับ 
Check_ReleaseStringUTFCharsใน/system/lib/libdvm.soที่ทำให้เกิดข้อขัดข้องในอุปกรณ์ x86 
 - แก้ไขปัญหา
ndk-buildล้มเหลวที่เกิดขึ้นใน cygwin เมื่อมีการอ้างอิงแพ็กเกจ NDK ผ่านลิงก์สัญลักษณ์ - แก้ไข
ndk-build.cmdที่ล้มเหลวซึ่งเกิดขึ้นใน Windowscmd.exeเมื่อLOCAL_SRC_FILESมีเส้นทางแบบสัมบูรณ์ (ปัญหา 69992) - แก้ไขสคริปต์ 
ndk-stackเพื่อดำเนินการต่อแม้ว่าจะแยกวิเคราะห์เฟรมไม่ได้ เนื่องจากไม่พบกิจวัตร ชื่อไฟล์ หรือหมายเลขบรรทัด ในกรณีใดก็ตาม เหล่านี้ ระบบจะพิมพ์?? - แก้ไขสแต็ก 
ndk-stackสำหรับเป้าหมาย windows-x64_64 เพื่อไม่ให้ จับคู่บรรทัดเฟรมกับบรรทัดในส่วนstack:ที่ไม่มีpc,eipหรือipอย่างไม่ถูกต้องอีกต่อไป เช่นI/DEBUG ( 1151): #00 5f09db68 401f01c4 /system/lib/libc.so
 - แก้ไข gabi++ เพื่อให้มีลักษณะดังนี้
     
- ไม่ใช้ malloc() เพื่อจัดสรรออบเจ็กต์ C++ thread-local
 - หลีกเลี่ยงการหยุดชะงักใน gabi++ ในกรณีที่ libc.debug.malloc เป็น ค่าที่ไม่ใช่ 0 ในการสร้างแพลตฟอร์ม Android สำหรับ userdebug/eng
 
 
 - การแก้ไขส่วนหัว
         
 - การเปลี่ยนแปลงอื่นๆ
 - 
     
- เพิ่ม 
LOCAL_EXPORT_LDFLAGSแล้ว - เปิดตัว
NDK_PROJECT_PATH=nullสำหรับการใช้งานใน ระบบบิลด์แบบผสานรวมที่ส่งตัวเลือกไปยังndk-buildอย่างชัดเจน การตั้งค่านี้ทำให้ndk-buildไม่พยายามค้นหาNDK_PROJECT_PATH.และยังป้องกันไม่ให้ตัวแปร รับการตั้งค่าเริ่มต้นจาก NDK_PROJECT_PATH ด้วย ด้วยเหตุนี้ ตอนนี้คุณต้องระบุตัวแปรต่อไปนี้อย่างชัดเจน (พร้อมค่าเริ่มต้น หากมี)NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG(ไม่บังคับ ค่าเริ่มต้นคือ 0) และAPP_*อื่นๆ ที่อยู่ในApplication.mk - ตอนนี้คุณระบุ 
APP_ABIในรายการที่คั่นด้วยคอมมาได้แล้ว เช่นAPP_ABI := "armeabi,armeabi-v7a"
 - มอบความสามารถในการสร้าง STL ทั้งหมดใหม่พร้อมข้อมูลการแก้ไขข้อบกพร่องในแพ็กเกจแยกต่างหากที่ไม่บังคับชื่อ 
android-ndk-r9c-cxx-stl-libs-with-debugging-info.zipโดยใช้ตัวเลือก-gตัวเลือกนี้ ช่วยให้สคริปต์ndk-stackแสดงการดัมพ์สแต็กได้ดีขึ้นใน STL การเปลี่ยนแปลงนี้ไม่น่าจะส่งผลต่อโค้ด/ขนาดของไฟล์สุดท้ายที่ลบข้อมูลที่ไม่จำเป็นออกแล้ว hello-jniตัวอย่างที่ปรับปรุงแล้วเพื่อรายงานAPP_ABIที่ การคอมไพล์- ใช้เครื่องมือ 
arในโหมด Deterministic (ตัวเลือก-D) เพื่อสร้างไลบรารีแบบคงที่ (ปัญหา 60705) 
 - เพิ่ม 
 
Android NDK r9b (ตุลาคม 2013)
- การเปลี่ยนแปลงที่สำคัญ
 - 
      
- อัปเดต 
include/android/*hและmath.hสำหรับระดับ API ของ Android ทั้งหมดจนถึง 18 รวมถึงเพิ่มระดับ 13, 15, 16 และ 17 ดูข้อมูลเกี่ยวกับ API ที่เพิ่มได้ในข้อความคอมมิตสำหรับการเปลี่ยนแปลง 68012 และ 68014 (ปัญหา 47150, 58528 และ 38423) - เพิ่มการรองรับ Android API ระดับ 19 ซึ่งรวมถึงการเชื่อมโยง Renderscript
 - เพิ่มการรองรับ 
-mhard-floatใน ABI armeabi-v7a ที่มีอยู่ ดูข้อมูลเพิ่มเติมและข้อจำกัดปัจจุบันเกี่ยวกับ Clang ได้ที่tests/device/hard-float/jni/Android.mk - ย้ายข้อมูลจาก GNU Compiler Collection (GCC) 4.8 เป็น 4.8.2 และเพิ่มการรองรับสีสำหรับการวินิจฉัย
           หากต้องการเปิดใช้สีวินิจฉัย ให้ตั้งค่า 
-fdiagnostics-color=auto,-fdiagnostics-color=always,หรือส่งออกGCC_COLORSตามที่แสดงด้านล่าง ดูข้อมูลเพิ่มเติมได้ที่ GCC Language Independent OptionsGCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
 - เพิ่มตัวอย่างใหม่ 2 รายการเพื่อสาธิตฟีเจอร์ OpenGL ES 3.0 ได้แก่ Teapot และ MoreTeapots ตัวอย่างเหล่านี้ทำงานในอุปกรณ์ที่ใช้ Android 4.1 (API ระดับ 16) ขึ้นไป
 - เลิกรองรับ GCC 4.7 และ Clang 3.2 ซึ่งจะนำออกในการเปิดตัวครั้งถัดไป
 
 - อัปเดต 
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
      
- แก้ไขปัญหาที่ ARM GCC 4.6 
thumb2สร้างตารางการข้ามแบบสัมพัทธ์ 16 บิตไม่สำเร็จ (ปัญหาเกี่ยวกับ GCC) - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ (ICE) ใน GCC 4.8 บน
          
g++.dg/cpp0x/lambda/lambda-defarg3.C(การเปลี่ยนแปลง 62770 ปัญหา GCC) - แก้ไขปัญหาเกี่ยวกับไฟล์ที่เรียกใช้งานได้ 32 บิตของ Windows 
*-gdb.exeที่เปิดไม่สำเร็จ (ปัญหา 58975) - แก้ไข ICE ของ GCC 4.8 เมื่อสร้างไลบรารี Bullet ข้อความแสดงข้อผิดพลาดมีดังนี้
          
 (ปัญหา 58916, ปัญหาเกี่ยวกับ GCC)internal compiler error: verify_flow_info failed
 - แก้ไขบิลด์ GDB/ARM เพื่อข้าม
ARM.exidxข้อมูลสำหรับการคลายในโค้ดบทนำ และ เพิ่มคำสั่ง (set arm exidx-unwinding) เพื่อควบคุมการคลายสแต็กที่อิงตาม exidx (ปัญหา 55826) - แก้ไขปัญหาคอมไพเลอร์ Clang 3.3 MIPS ที่มีการนำรีจิสเตอร์ HI และ LO กลับมาใช้ใหม่ อย่างไม่ถูกต้อง
 - แก้ไขปัญหาเกี่ยวกับ MIPS 4.7 ICE ใน 
dbx_reg_numberข้อความแสดงข้อผิดพลาดมีดังนี้ (GCC Patch)external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
 
 - แก้ไขปัญหาที่ ARM GCC 4.6 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
      
- การแก้ไขส่วนหัว
          
- แก้ไข 
WCHAR_MINและWCHAR_MAXของ ARM ให้ไม่มีการลงนามตาม ข้อกำหนด (เวอร์ชัน X86/MIPS มีการลงนาม) กำหนด_WCHAR_IS_ALWAYS_SIGNEDto restore old behavior (ปัญหา 57749) - แก้ไข 
include/netinet/tcp.hให้มี enum สถานะTCP_INFO(ปัญหา 38881) - แก้ไขมาโคร 
cdefs_elh.h_C_LABEL_STRINGเพื่อหยุดการสร้าง คำเตือนในชุดเครื่องมือ GCC 4.8 เมื่อใช้โหมด c++11 (ปัญหา 58135 ปัญหา 58652) - นำฟังก์ชันที่ไม่มีอยู่จริง 
imaxabsและimaxdivออกจากส่วนหัวinttypes.h - แก้ไขปัญหาเกี่ยวกับค่าที่ส่งคืนของ 
pthread_exit()และpthread_self()(ปัญหา 60686) - เพิ่มฟังก์ชัน 
mkdtemp()ที่ขาดหายไป ซึ่งมีอยู่ในส่วนหัวbionicstdlib.hอยู่แล้ว 
 - แก้ไข 
 - แก้ไขปัญหาการสร้าง 
samples/gles3jniด้วย Clang ใน Android API ระดับ 11 - แก้ไข MCLinker เพื่ออนุญาตให้ใช้ตัวเลือกต่อไปนี้หลายครั้ง
          
-gc-sectionsและ--eh-frame-hdr - แก้ไข MCLinker เพื่อยอมรับตัวเลือก 
--no-warn-mismatch - แก้ไข
cpu-featuresเพื่อไม่ให้ถือว่าอุปกรณ์ VFPv4 ทั้งหมดรองรับ IDIV ตอนนี้ตัวเลือกนี้จะเพิ่มเฉพาะ IDIV ลงในอุปกรณ์ที่อยู่ในรายการที่อนุญาต ซึ่งรวมถึง Nexus 4 (ปัญหา 57637) - แก้ไขปัญหาที่ 
android_native_app_glue.cบันทึกข้อผิดพลาดในการดำเนินการก่อนส่งเหตุการณ์อย่างไม่ถูกต้อง - แก้ไขการดำเนินการทั้งหมดใน 
gabi++terminate และ unexpected_handler ให้เป็น thread-safe - แก้ไขปัญหาหลายประการเกี่ยวกับตัวเลือก 
-integrated-asของ Clang เพื่อให้ผ่านการทดสอบสำหรับssax-instructionsและfenv - แก้ไขคอมไพเลอร์ GCC 4.6/4.7/4.8 เพื่อส่งตัวเลือก Linker 
--eh-frame-hdrแม้ สำหรับไฟล์ปฏิบัติการแบบคงที่ ดูข้อมูลเพิ่มเติมได้ที่ แพตช์ GCC - แก้ไขเครื่องหมายอัญประกาศเดี่ยวที่ไม่จำเป็นใน 
CPU-ARCH-ABIS.htmlดูข้อมูลเพิ่มเติมได้ที่NDK-DEPENDS.html(ปัญหา 60142) - แก้ไขเครื่องหมายคำพูดที่ไม่จำเป็นในเอาต์พุต ndk-build ใน Windows (ปัญหา 60649)
 - แก้ไข Clang 3.3 เพื่อคอมไพล์การดำเนินการแบบอะตอมในตัวของ ARM เช่น
          
__atomic_fetch_add,__atomic_fetch_subและ__atomic_fetch_or - แก้ไข ICE ของ Clang 3.3 ด้วย 
vfprintfที่ปรับแต่งแล้ว (ปัญหาเกี่ยวกับ Clang) 
 - การแก้ไขส่วนหัว
          
 - การเปลี่ยนแปลงอื่นๆ
 - 
      
- เปิดใช้ OpenMP สำหรับการสร้าง GCC ทั้งหมด หากต้องการใช้ฟีเจอร์นี้ ให้เพิ่มแฟล็กต่อไปนี้ลงในการตั้งค่าบิลด์
          
 ดูตัวอย่างโค้ดได้ที่LOCAL_CFLAGS += -fopenmp LOCAL_LDFLAGS += -fopenmp
tests/device/test-openmp - ลดขนาดของ 
ld.mcldลงอย่างมาก (1.5 MB เทียบกับld.bfd3.5 MB และld.gold7.5 MB) ซึ่งส่งผลให้ความเร็วเพิ่มขึ้นประมาณ 20% - เพิ่ม 
LOCAL_CONLYFLAGSและAPP_CONLYFLAGSเพื่อระบุ ตัวเลือกที่ใช้ได้กับ C เท่านั้น แต่ใช้กับ C++ ไม่ได้ นอกจากนี้ยังใช้LOCAL_CFLAGSและAPP_CFLAGSที่มีอยู่สำหรับการคอมไพล์ C++ ด้วย (เพื่อประหยัดเวลาในการ ระบุตัวเลือกส่วนใหญ่ 2 ครั้ง) ดังนั้นตัวเลือกต่างๆ เช่น-std=gnu99อาจล้มเหลวใน การสร้าง g++ โดยมีคำเตือน และการสร้าง clang++ โดยมีข้อผิดพลาด - เพิ่มฟังก์ชันตัวช่วยอาร์เรย์ 
gabi++ - แก้ไขบิลด์ GCC เพื่อให้สร้างไฟล์ 
libgcc.aทั้งหมดด้วย-funwind-tablesเพื่อให้สแต็กสามารถคลายการบล็อกก่อนหน้านี้ ได้ เช่น__aeabi_idiv0 - เพิ่มการรองรับ Ingenic MXU ใน MIPS GCC4.6/4.7/4.8 ด้วย
-mmxuตัวเลือกใหม่ - ขยาย MIPS GCC4.6/4.7/4.8 
-mldc1-sdc1เพื่อควบคุม ldxc1/sdxc1 ด้วย - เพิ่มลิงก์ที่น่าสนใจ ดูข้อมูลเพิ่มเติมได้ที่
          
sources/android/crazy_linker/README.TXT - แก้ไข 
bitmap-plasmaให้วาดเต็มหน้าจอแทนที่จะเป็นพื้นที่ขนาด 200x200 พิกเซล - ลดขนาด Toolchain ของ Linux และ Darwin ลง 25% โดยการสร้างลิงก์สัญลักษณ์ไปยังไฟล์ที่เหมือนกัน
 
 - เปิดใช้ OpenMP สำหรับการสร้าง GCC ทั้งหมด หากต้องการใช้ฟีเจอร์นี้ ให้เพิ่มแฟล็กต่อไปนี้ลงในการตั้งค่าบิลด์
          
 
Android NDK r9 (กรกฎาคม 2013)
- การเปลี่ยนแปลงที่สำคัญ
 - 
        
- เพิ่มการรองรับ Android 4.3 (API ระดับ 18) ดูข้อมูลเพิ่มเติมได้ที่
            
STABLE-APIS.htmlและตัวอย่างโค้ดใหม่ในsamples/gles3jni/README - เพิ่มส่วนหัวและไลบรารีสำหรับ OpenGL ES 3.0 ซึ่งรองรับโดย Android 4.3 (API ระดับ 18) ขึ้นไป
 - เพิ่มคอมไพเลอร์ GNU Compiler Collection (GCC) 4.8 ลงใน NDK เนื่องจาก GCC 4.6 ยังคงเป็น
            ค่าเริ่มต้น คุณจึงต้องเปิดใช้ตัวเลือกนี้อย่างชัดแจ้ง
            
- สำหรับบิลด์ 
ndk-buildให้ส่งออกNDK_TOOLCHAIN_VERSION=4.8หรือ เพิ่มในApplication.mk - สำหรับการสร้างแบบสแตนด์อโลน ให้ใช้ตัวเลือก 
--toolchain=ในmake-standalone-toolchain.shเช่น
--toolchain=arm-linux-androideabi-4.8 
หมายเหตุ:
-Wallเป็นผู้เปิดใช้ตัวเลือก-Wunused-local-typedefsอย่าลืมเพิ่ม__attribute__((unused))หากคุณใช้การยืนยันที่คอมไพล์ เช่นsources/cxx-stl/stlport/stlport/stl/config/features.hบรรทัดที่ 311 ดูข้อมูลเพิ่มเติมได้ที่ เปลี่ยน 55460หมายเหตุ: ในการเผยแพร่ GCC 4.7 ขึ้นไป คอมไพเลอร์ ARM จะสร้างโค้ดการเข้าถึงที่ไม่ได้จัดแนวโดย ค่าเริ่มต้นสำหรับเป้าหมายการสร้าง ARMv6 ขึ้นไป คุณอาจต้องเพิ่ม
-mno-unaligned-accessตัวเลือกการสร้างเมื่อสร้างสำหรับเคอร์เนลที่ไม่รองรับ ฟีเจอร์นี้ - สำหรับบิลด์ 
 - เพิ่มการรองรับ Clang 3.3 ตอนนี้
NDK_TOOLCHAIN_VERSION=clangตัวเลือกการสร้าง จะเลือก Clang 3.3 โดยค่าเริ่มต้นหมายเหตุ: ทั้ง GCC 4.4.3 และ Clang 3.1 เลิกใช้งานแล้ว และจะนำออกจาก NDK รุ่นถัดไป
 - อัปเดต GNU Project Debugger (GDB) เพื่อรองรับ Python 2.7.5
 - เพิ่ม MCLinker เพื่อรองรับโฮสต์ Windows เนื่องจาก 
ld.goldเป็นค่าเริ่มต้นเมื่อพร้อมใช้งาน คุณจึงต้องเพิ่ม-fuse-ld=mcldในLOCAL_LDFLAGSหรือAPP_LDFLAGSเพื่อเปิดใช้ MCLinker - เพิ่มเครื่องมือ 
ndk-dependsที่พิมพ์การอ้างอิงไลบรารี ELF ดูข้อมูลเพิ่มเติมได้ที่NDK-DEPENDS.html(ปัญหา 53486) 
 - เพิ่มการรองรับ Android 4.3 (API ระดับ 18) ดูข้อมูลเพิ่มเติมได้ที่
            
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
- แก้ไขปัญหาที่อาจเกิดขึ้นในการจัดการเหตุการณ์ใน 
android_native_app_glue(ปัญหา 41755) - แก้ไขบิลด์ ARM/GCC-4.7 เพื่อสร้างการจัดแนวที่เพียงพอสำหรับคำสั่งโหลดและจัดเก็บ NEON, VST และ VLD (ปัญหา GCC 57271)
 - แก้ไขข้อผิดพลาดของคอมไพเลอร์ภายใน (ICE) ของ GCC 4.4.3/4.6/4.7 สำหรับค่าดัชนีลบคงที่ ในสตริงลิเทอรัล (ปัญหา 54623)
 - แก้ไขข้อผิดพลาดในการแบ่งส่วน GCC 4.7 สำหรับการเริ่มต้นค่าคงที่ด้วยที่อยู่ออบเจ็กต์ (ปัญหา 56508)
 - แก้ไขข้อผิดพลาดในการแบ่งส่วน ARM ของ GCC 4.6 สำหรับค่า 
-Oเมื่อใช้ Boost 1.52.0 (ปัญหา 42891) - แก้ไข 
libc.soและlibc.aเพื่อรองรับฟังก์ชันwait4()(ปัญหา 19854) - อัปเดตไฟล์ x86 libc.so และ libc.a ให้มีฟังก์ชัน 
clone() - แก้ไขข้อบกพร่อง 
LOCAL_SHORT_COMMANDSที่linker.listไฟล์ว่างเปล่า หรือไม่ได้ใช้ - แก้ไขการสร้าง GCC MIPS ใน Mac OS ให้ใช้คำสั่ง CFI ซึ่งหากไม่มีคำสั่งนี้
            
ld.mcld --eh-frame-hdrจะล้มเหลวบ่อยครั้ง - แก้ไขข้อผิดพลาดของคอมไพเลอร์ภายใน Clang 3.2 X86/MIPS ใน 
llvm/lib/VMCore/Value.cpp(เปลี่ยน 59021) - แก้ไขข้อขัดข้องของโปรแกรมแอสเซมเบลอร์ Windows 64 บิตของ GCC 4.7 (ข้อผิดพลาด: 
out of memory allocating 4294967280 bytes) - อัปเดตสคริปต์ 
ndk-gdbเพื่อให้การดำเนินการ--startหรือ--launchรอเซิร์ฟเวอร์ GNU Debug Server เพื่อให้สามารถเข้าถึงจุดพักที่ตั้งค่าไว้ ในช่วงต้นของเส้นทางการดำเนินการ (เช่น จุดพักในโค้ด JNI) ได้อย่างน่าเชื่อถือมากขึ้น (ปัญหา 41278)หมายเหตุ: ฟีเจอร์นี้ต้องใช้ jdb และจะแสดงคำเตือนเกี่ยวกับเบรกพอยต์ที่รอดำเนินการ ระบุ
--nowaitเพื่อคืนค่าลักษณะการทำงานก่อนหน้า - แก้ไขการขัดข้องของ GDB เมื่อรายการไลบรารีว่างเปล่า
 - แก้ไขข้อขัดข้องของ GDB เมื่อใช้คำสั่ง 
stepiที่ผ่านมาbx pcหรือblx pcคำสั่ง Thumb (ปัญหา 56962, ปัญหา 36149) - แก้ไข MIPS 
gdbserverเพื่อค้นหาDT_MIPS_RLD_MAPแทนDT_DEBUG(ปัญหา 56586) - แก้ไขการขึ้นต่อกันแบบวงกลมในสคริปต์ ndk-build เช่น หาก A->B และ B->B ระบบจะนำ B ออกจากการบิลด์ (ปัญหา 56690)
 
 - แก้ไขปัญหาที่อาจเกิดขึ้นในการจัดการเหตุการณ์ใน 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
        
- แก้ไข
ndk-buildสคริปต์เพื่อให้คุณระบุเวอร์ชันของ Clang เป็น ตัวเลือกบรรทัดคำสั่งได้ (เช่นNDK_TOOLCHAIN_VERSION=clang3.2) ก่อนหน้านี้มีเพียง การระบุเวอร์ชันเป็นตัวแปรสภาพแวดล้อมเท่านั้นที่ใช้ได้ - แก้ไขขนาด gabi++ ของ 
_Unwind_Exceptionให้เป็น 24 สําหรับเป้าหมายการสร้าง MIPS เมื่อ ใช้คอมไพเลอร์ Clang (เปลี่ยน 54141) - แก้ไขสคริปต์ 
ndk-buildเพื่อให้แน่ใจว่าระบบจะนำไลบรารีที่สร้างขึ้นออกจากโปรเจ็กต์ที่มีไลบรารีแบบคงที่ที่สร้างไว้ล่วงหน้าเมื่อใช้คำสั่งndk-build clean(การเปลี่ยนแปลง 54461 การเปลี่ยนแปลง 54480) - แก้ไขตัวเลือก 
NDK_ANALYZE=1ให้มีรายละเอียดน้อยลง - แก้ไข 
gnu-libstdc++/Android.mkเพื่อรวมเส้นทางbackward/สำหรับบิลด์ ที่ใช้ความเข้ากันได้แบบย้อนหลัง (ปัญหา 53404) - แก้ไขปัญหาที่ 
stlport newแสดงค่าแบบสุ่มในบางครั้ง - แก้ไข 
ndk-gdbให้ตรงกับลำดับของCPU_ABISไม่ใช่APP_ABIS(ปัญหา 54033) - แก้ไขปัญหาที่การสร้าง NDK 64 บิตใน MacOSX เลือกเส้นทางที่ไม่ถูกต้องสำหรับ คอมไพเลอร์ (ปัญหา 53769)
 - แก้ไขสคริปต์บิลด์เพื่อตรวจหา Windows Vista 64 บิต (ปัญหา 54485)
 - แก้ไขข้อผิดพลาด x86 
ntonl/swap32:invalid 'asm': operand number out of range(ปัญหา 54465, การเปลี่ยนแปลง 57242) - แก้ไข 
ld.goldเพื่อผสานรวมอักษรสตริง - แก้ไข 
ld.goldเพื่อจัดการการจัดแนวสัญลักษณ์ขนาดใหญ่ - อัปเดต 
ld.goldเพื่อเปิดใช้ตัวเลือก--sort-section=name - แก้ไข GCC 4.4.3/4.6/4.7 เพื่อระงับตัวเลือก 
-export-dynamicสำหรับ โปรแกรมที่ลิงก์แบบคงที่ GCC จะไม่เพิ่ม.interpสำหรับโปรแกรมที่ลิงก์แบบคงที่อีกต่อไป - แก้ไขข้อผิดพลาดในการคอมไพล์ GCC 4.4.3 
stlportเกี่ยวกับtypedefของ_Unwind_Control_Blockที่ไม่สอดคล้องกัน (ปัญหา 54426) - แก้ไขสคริปต์ 
awkเพื่อจัดการไฟล์AndroidManifest.xmlที่สร้างใน Windows ซึ่งอาจมีอักขระ\rต่อท้ายและทำให้เกิดข้อผิดพลาดในการสร้าง (ปัญหา 42548) - แก้ไข 
make-standalone-toolchain.shเพื่อตรวจสอบไดเรกทอรีprebuilts/เพื่อตรวจหาว่าโฮสต์เป็นแบบ 32 บิตหรือ 64 บิต - แก้ไขตัวเลือก 
-integrated-asของ Clang 3.2 - แก้ไขข้อมูลตัวแฮนเดิลของโมเดลขนาดกะทัดรัด Clang 3.2 ARM EHABI 
pr1และpr2 - เพิ่มตัวเลือก 
-mllvm -arm-enable-ehabiของ Clang เพื่อแก้ไขข้อผิดพลาดของ Clang ต่อไปนี้clang: for the -arm-enable-ehabi option: may only occur zero or one times!
 - แก้ไขการสร้างที่ไม่สำเร็จเมื่อไม่มีองค์ประกอบ 
uses-sdkในไฟล์ Manifest ของแอปพลิเคชัน (ปัญหา 57015) 
 - แก้ไข
 - การเปลี่ยนแปลงอื่นๆ
 - 
        
- การแก้ไขส่วนหัว
            
- แก้ไขส่วนหัวเพื่อให้ 
__set_errnoเป็นฟังก์ชันแบบอินไลน์ เนื่องจากระบบเลิกใช้งาน__set_errnoในerrno.hแล้ว และlibc.soไม่ได้ส่งออกอีกต่อไป - แก้ไข 
elf.hเพื่อรวมstdint.h(ปัญหา 55443) - แก้ไข 
sys/un.hให้รวมอยู่โดยไม่ขึ้นอยู่กับส่วนหัวอื่นๆ (ปัญหา 53646) - เราได้แก้ไข API ตระกูล 
MotionEvent_getHistoricalทั้งหมดเพื่อให้ใช้const AInputEvent* motion_eventได้ (ปัญหา 55873) - แก้ไข
malloc_usable_sizeเพื่อใช้const void*(ปัญหา 55725) - แก้ไข stdint.h ให้เข้ากันได้กับ C99 มากขึ้น (การเปลี่ยนแปลง 46821)
 - แก้ไข 
wchar.hเพื่อไม่ให้กำหนดWCHAR_MAXและWCHAR_MINใหม่ - แก้ไขการประกาศ 
<inttypes.h>สำหรับมาโครPRIและSCNที่เกี่ยวข้องกับพอยน์เตอร์ (ปัญหา 57218) - เปลี่ยนส่วนหัว 
sys/cdefs.hเพื่อให้__WCHAR_TYPE__เป็นแบบ 32 บิต สำหรับ API ระดับต่ำกว่า 9 ซึ่งหมายความว่าwchat_tจะเป็นแบบ 32 บิตสำหรับ API ทุกระดับ หากต้องการคืนค่าลักษณะการทำงานก่อนหน้า ให้กำหนด_WCHAR_IS_8BITตัวแปรบูลีน (ปัญหา 57267) 
 - แก้ไขส่วนหัวเพื่อให้ 
 - เพิ่มการจัดรูปแบบใน NDK 
docs/และแก้ไขเอกสารประกอบอื่นๆ - เพิ่มการรองรับเทคนิคการเก็บถาวรแบบบางเมื่อสร้างไลบรารีแบบคงที่ (ปัญหา 40303)
 - อัปเดตสคริปต์ 
make-standalone-toolchain.shเพื่อรองรับไลบรารีstlportนอกเหนือจากgnustlเมื่อคุณระบุตัวเลือก--stl=stlportดูข้อมูลเพิ่มเติมได้ที่STANDALONE-TOOLCHAIN.html - อัปเดต
make-standalone-toolchain.shสคริปต์เพื่อให้ตัวเลือก--llvm-version=สร้างสคริปต์$TOOLCHAIN_PREFIX-clangและ$TOOLCHAIN_PREFIX-clang++นอกเหนือจากclangและclang++เพื่อหลีกเลี่ยงการใช้คำจำกัดความของ clang และ clang++ ของโฮสต์โดยไม่ตั้งใจ - เพิ่ม 2 แฟล็กเพื่อเปิดใช้การเพิ่มประสิทธิภาพ 2 รายการอีกครั้งใน Clang ต้นทาง แต่ปิดใช้ใน
              NDK เพื่อให้เข้ากันได้ดีขึ้นกับโค้ดที่คอมไพล์โดย GCC ดังนี้
            
- เพิ่ม
-fcxx-missing-return-semanticsแฟล็กเพื่อเปิดใช้missing return semantics อีกครั้งใน Clang 3.2 ขึ้นไป โดยปกติแล้ว เส้นทางทั้งหมดควรสิ้นสุดด้วยคำสั่ง return สำหรับฟังก์ชันที่ส่งคืนค่า หากไม่เป็นเช่นนั้น Clang จะแทรก คำสั่งที่ไม่ได้กำหนด (หรือดักจับในโหมดแก้ไขข้อบกพร่อง) ในเส้นทางที่ไม่มีคำสั่ง return หากคุณมั่นใจว่าโค้ดถูกต้อง ให้ใช้แฟล็กนี้เพื่อให้ตัวเพิ่มประสิทธิภาพใช้ประโยชน์จากลักษณะการทำงานที่ไม่ได้กำหนด หากไม่แน่ใจ โปรดอย่าใช้ฟีเจอร์นี้ ผู้โทรอาจยังคงได้รับค่าที่ไม่ถูกต้องแบบสุ่ม แต่ เครื่องมือเพิ่มประสิทธิภาพจะไม่ใช้ประโยชน์จากค่าดังกล่าวและจะทำให้โค้ดของคุณแก้ไขข้อบกพร่องได้ยากขึ้น - เพิ่ม
-fglobal-ctor-const-promotionแฟล็กเพื่อเปิดใช้ การเลื่อนระดับตัวแปรส่วนกลางที่มีตัวสร้างแบบคงที่ให้เป็นค่าคงที่อีกครั้ง เมื่อใช้แฟล็กนี้ การเพิ่มประสิทธิภาพตัวแปรส่วนกลางของ LLVM จะพยายามประเมินตัวแปรส่วนกลาง ด้วยตัวสร้างแบบคงที่และเลื่อนระดับตัวแปรเหล่านั้นเป็นค่าคงที่ส่วนกลาง แม้ว่าการเพิ่มประสิทธิภาพนี้จะถูกต้อง แต่ก็อาจทำให้โค้ดที่คอมไพล์โดย GCC ไม่สามารถใช้งานร่วมกันได้ เช่น โค้ดอาจทำconst_castเพื่อส่งค่าคงที่ไปยังตัวแปรที่เปลี่ยนแปลงได้ และแก้ไข ใน GCC ตัวแปรอยู่ในโหมดอ่าน/เขียนและโค้ดจะทำงานโดย ไม่ตั้งใจ ใน Clang ตัวแปร const จะอยู่ในหน่วยความจำแบบอ่านอย่างเดียวและอาจทำให้แอปพลิเคชันขัดข้อง 
 - เพิ่ม
 - เพิ่ม 
-mldc1-sdc1ลงในคอมไพเลอร์ MIPS GCC และ Clang โดยค่าเริ่มต้น คอมไพเลอร์ จะจัดแนวออบเจ็กต์ขนาด 8 ไบต์อย่างเหมาะสมและปล่อยคำสั่งldc1และsdc1เพื่อย้ายออบเจ็กต์ หากแอปใช้ตัวจัดสรรที่กำหนดเองซึ่งไม่ได้สอดคล้องกับขอบเขต 8 ไบต์ของออบเจ็กต์ใหม่ในลักษณะเดียวกับตัวจัดสรรเริ่มต้นเสมอ แอปอาจขัดข้องเนื่องจากการดำเนินการldc1และsdc1ในหน่วยความจำที่ไม่ได้จัดแนว ในกรณีนี้ ให้ใช้แฟล็ก-mno-ldc1-sdc1เพื่อแก้ปัญหา - ลดระดับความรุนแรงของเหตุการณ์จากคำเตือนเป็นข้อมูล หาก 
APP_PLATFORM_LEVELมากกว่าAPP_MIN_PLATFORM_LEVELAPP_PLATFORM_LEVELอาจต่ำกว่าAPP_PLATFORMในjni/Application.mkเนื่องจาก NDK ไม่มี ส่วนหัวสำหรับทุกระดับ ในกรณีนี้ ระดับจริงจะเลื่อนลง โดยAPP_MIN_PLATFORM_LEVELจะระบุโดยandroid:minSdkVersionใน ไฟล์ Manifest ของแอปพลิเคชัน (ปัญหา 39752) - เพิ่มเมธอด 
android_getCpuIdArm()และandroid_setCpuArm()ลงในcpu-features.cการเพิ่มนี้ช่วยให้ดึงข้อมูล ARM CPUID ได้ง่ายขึ้น (ปัญหา 53689) - แก้ไข 
ndk-buildเพื่อใช้as/ldของ GCC 4.7 สำหรับการคอมไพล์ Clangหมายเหตุ: ใน GCC 4.7 เราได้เปลี่ยนชื่อ
monotonic_clockและis_monotonicเป็นsteady_clockและis_steadyตามลำดับ - เพิ่มคำเตือนใหม่ต่อไปนี้ลงในสคริปต์ 
ndk-build- เพิ่มคำเตือนหากมีการใช้ 
LOCAL_LDLIBS/LDFLAGSในโมดูลไลบรารีแบบคงที่ - เพิ่มคำเตือนหากการกำหนดค่าไม่มีโมดูลที่จะสร้าง
 - เพิ่มคำเตือนสำหรับไลบรารีที่ไม่ใช่ของระบบที่ใช้ใน
                
LOCAL_LDLIBS/LDFLAGSของไลบรารีที่ใช้ร่วมกันหรือโมดูลที่เรียกใช้งานได้ 
 - เพิ่มคำเตือนหากมีการใช้ 
 - อัปเดตสคริปต์บิลด์เพื่อให้หากไม่ได้กำหนด 
APP_MODULESและมีเพียงไลบรารีแบบคงที่ที่แสดงในAndroid.mkสคริปต์จะบังคับสร้างไลบรารีทั้งหมด (ปัญหา 53502) - อัปเดต 
ndk-buildเพื่อรองรับเส้นทางแบบสัมบูรณ์ในLOCAL_SRC_FILES - นำไฟล์ที่เรียกใช้งานได้ของ 
*-gdbtuiออก ซึ่งเป็นไฟล์ที่ซ้ำกับไฟล์ที่เรียกใช้งานได้ของ*-gdbโดยเปิดใช้ตัวเลือก-tui - อัปเดตสคริปต์บิลด์เพื่อเตือนคุณเมื่อส่วนหน้าของคอมไพเลอร์ Edison Design Group (EDG)
            
_STLP_HAS_INCLUDE_NEXTกลับมาเปิดอีกครั้ง (ปัญหา 53646) - เพิ่มตัวแปรสภาพแวดล้อม 
NDK_LIBS_OUTเพื่ออนุญาตให้ลบล้างเส้นทางสำหรับlibraries/gdbserverจากค่าเริ่มต้น$PROJECT/libsดูข้อมูลเพิ่มเติมได้ที่OVERVIEW.html - เปลี่ยนค่าเริ่มต้นของสคริปต์ ndk-build เพื่อคอมไพล์โค้ดที่มีการป้องกันสตริงรูปแบบ
            
-Wformat -Werror=format-securityคุณตั้งค่าLOCAL_DISABLE_FORMAT_STRING_CHECKS=trueเพื่อปิดใช้ได้ ดูข้อมูลเพิ่มเติมได้ที่ANDROID-MK.html - เพิ่มการรองรับการแสดงผล STL อย่างสวยงามใน 
ndk-gdb-pyดูข้อมูลเพิ่มเติมได้ที่NDK-GDB.html - เพิ่มการทดสอบตามเฟรมเวิร์ก googletest
 - เพิ่มการแจ้งเตือนลงในสคริปต์บิลด์ของ Toolchain ซึ่งจะแจ้งเตือนหากเชลล์ปัจจุบัน
            ไม่ใช่ 
bash 
 - การแก้ไขส่วนหัว
            
 
Android NDK r8e (มีนาคม 2013)
- การเปลี่ยนแปลงที่สำคัญ
 - 
        
- เพิ่มชุดเครื่องมือโฮสต์ 64 บิต (คำต่อท้ายชื่อแพ็กเกจ 
*-x86_64.*) ดูข้อมูลเพิ่มเติมได้ที่CHANGES.HTMLและNDK-BUILD.html - เพิ่มคอมไพเลอร์ Clang 3.2 GCC 4.6 ยังคงเป็นค่าเริ่มต้น ดูข้อมูลเกี่ยวกับการใช้คอมไพเลอร์ Clang ได้ที่ 
CHANGES.HTML - เพิ่มเครื่องมือวิเคราะห์โค้ดแบบคงที่สำหรับโฮสต์ Linux/MacOSX ดูข้อมูลเกี่ยวกับการใช้
            เครื่องมือวิเคราะห์ได้ที่ 
CHANGES.HTML - เพิ่ม MCLinker สำหรับโฮสต์ Linux/MacOSX เป็นฟีเจอร์ทดลอง 
ld.goldLinker เป็นค่าเริ่มต้นเมื่อพร้อมใช้งาน คุณจึงต้องเปิดใช้โดยชัดแจ้ง ดูข้อมูลเพิ่มเติมได้ที่CHANGES.HTML - อัปเดต ndk-build ให้ใช้การจัดเรียงโทโพโลยีสำหรับการอ้างอิงโมดูล ซึ่งหมายความว่าบิลด์จะจัดเรียงลำดับของไลบรารีที่ระบุใน
            
LOCAL_STATIC_LIBRARIES,LOCAL_WHOLE_STATIC_LIBRARIESและLOCAL_SHARED_LIBRARIESโดยอัตโนมัติ ดูข้อมูลเพิ่มเติมได้ที่CHANGES.HTML(ปัญหา 39378) 
 - เพิ่มชุดเครื่องมือโฮสต์ 64 บิต (คำต่อท้ายชื่อแพ็กเกจ 
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
- แก้ไขสคริปต์บิลด์เพื่อสร้างเชนเครื่องมือทั้งหมดใน 
-O2Toolchain ในรุ่นก่อนหน้า สร้างขึ้นอย่างไม่ถูกต้องโดยไม่มีการเพิ่มประสิทธิภาพ - แก้ไขสคริปต์บิลด์ที่สร้าง Clang/llvm สำหรับ MacOSX ในแบบ 64 บิตโดยไม่มีเงื่อนไข
 - ข้อผิดพลาดของคอมไพเลอร์ภายใน GCC 4.6/4.7:
            
gen_thumb_movhi_clobber at config/arm/arm.md:5832(ปัญหา 52732) - แก้ไขปัญหาการบิลด์ที่ GCC/ARM 4.6/4.7 ลิงก์โค้ดโดยใช้ฟังก์ชันในตัวแบบอะตอม 64 บิตไม่ได้ (ปัญหา 41297)
 - แก้ไขข้อผิดพลาดเกี่ยวกับการใช้งาน DIV ของ Linker ใน GCC 4.7 ที่ไม่ตรงกัน (ปัญหาเกี่ยวกับ Sourceware)
 - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ GCC 4.7 
build_data_member_initialization, at cp/semantics.c:5790 - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ GCC 4.7 
redirect_eh_edge_1, at tree-eh.c:2214(ปัญหา 52909) - แก้ไขข้อผิดพลาดในการแบ่งส่วน GCC 4.7 (ปัญหาเกี่ยวกับ GCC)
 - แก้ไข
<chrono>ความละเอียดของนาฬิกาและเปิดใช้steady_clockแล้ว (ปัญหา 39680) - แก้ไข Toolchain เพื่อเปิดใช้ 
_GLIBCXX_HAS_GTHREADSสำหรับ GCC 4.7 libstdc++ (ปัญหา 41770 ปัญหา 41859) - แก้ไขปัญหาที่โค้ด X86 MXX/SSE ลิงก์ไม่สำเร็จเนื่องจากไม่มี
            
posix_memalign(เปลี่ยน 51872) - แก้ไขข้อผิดพลาดในการแบ่งส่วน GCC4.7/X86 ใน 
i386.c, ฟังก์ชันdistance_non_agu_define_in_bb()(เปลี่ยน 50383) - แก้ไข GCC4.7/X86 เพื่อคืนค่าลักษณะการทำงานของ 
cmovก่อนหน้า (ปัญหาเกี่ยวกับ GCC) - แก้ไขการจัดการค่าที่แสดงผล NULL ของ 
setlocale()ใน libstdc++/GCC4.7 (ปัญหา 46718) - แก้ไขการอ้างอิงรันไทม์ 
ld.goldที่ไม่ได้กำหนดไว้สำหรับ__exidx_startและ__exidx_start_endแล้ว (การเปลี่ยนแปลง 52134) - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ Clang 3.1 เมื่อใช้ไลบรารี Eigen (ปัญหา 41246)
 - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ Clang 3.1 รวมถึง 
<chrono>ในโหมด C++11 (ปัญหา 39600) - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ Clang 3.1 เมื่อสร้างโค้ดออบเจ็กต์สำหรับเมธอด
            ที่เรียกใช้ 
rvalueที่เริ่มต้นแบบสม่ำเสมอ (ปัญหา 41387) - แก้ไขการปรับแนวสแต็ก Clang 3.1/X86 (การเปลี่ยนแปลง 52154)
 - แก้ไขปัญหาเกี่ยวกับ SIGILL ของ GNU Debugger (GDB) เมื่อทำการแก้ไขข้อบกพร่องใน Android 4.1.2 (ปัญหา 40941)
 - แก้ไขปัญหาที่ GDB ตั้งค่า
source:lineเบรกพอยต์ไม่ได้เมื่อสัญลักษณ์ มี เส้นทางไฟล์แบบอ้อมที่ยาว (ปัญหา 42448) - แก้ไข GDB 
read_program_headerสำหรับไฟล์ปฏิบัติการ MIPS PIE (เปลี่ยน 49592) - แก้ไขข้อผิดพลาดในการแบ่งกลุ่ม 
STLportในuncaught_exception()แล้ว (การเปลี่ยนแปลง 50236) - แก้ไขข้อผิดพลาดของบัส 
STLportในการจัดการข้อยกเว้นเนื่องจากการเข้าถึงที่ไม่สอดคล้องกันของDW_EH_PE_udata2,DW_EH_PE_udata4และDW_EH_PE_udata8 - แก้ไขปัญหาการเรียกซ้ำแบบไม่มีที่สิ้นสุดของ Gabi++ ด้วยตัวดำเนินการ 
nothrow new[](ปัญหา 52833) - แก้ไขการชดเชยที่ไม่ถูกต้องของ Gabi++ ไปยังตัวชี้ตัวแฮนเดิลข้อยกเว้น (การเปลี่ยนแปลง 53446)
 - นำออบเจ็กต์ที่ซ้ำซ้อนของ Gabi++ ที่ไม่มีค่าใช้จ่ายออก (การเปลี่ยนแปลง 53447)
 
 - แก้ไขสคริปต์บิลด์เพื่อสร้างเชนเครื่องมือทั้งหมดใน 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
        
- ส่วนหัว NDK ที่แก้ไขแล้ว
            
- นำคำจำกัดความที่ซ้ำซ้อนของ 
size_t,ssize_tและptrdiff_tออก - ส่วนหัว MIPS และ ARM 
fenv.hแบบคงที่ - แก้ไข 
stddef.hเพื่อไม่ให้กำหนดoffsetofใหม่เนื่องจากมีอยู่แล้ว ใน Toolchain - แก้ไข 
elf.hให้มีElf32_auxv_tและElf64_auxv_t(ปัญหา 38441) - แก้ไขคำจำกัดความ 
#ifdefC++ ในไฟล์ส่วนหัวOpenSLES_AndroidConfiguration.h(ปัญหา 53163) 
 - นำคำจำกัดความที่ซ้ำซ้อนของ 
 - แก้ไข 
STLportให้ยกเลิกหลังจากเกิดข้อผิดพลาดเนื่องจากหน่วยความจำไม่พอแทนที่จะปิดโดยไม่มีการแจ้งเตือน - แก้ไขส่วนหัวของระบบและ Gabi++ เพื่อให้คอมไพล์กับ API ระดับ 8 และต่ำกว่าได้
 - แก้ไข 
cpufeaturesเพื่อไม่ให้แยกวิเคราะห์/proc/self/auxv(ปัญหา 43055) - แก้ไข
ld.goldเพื่อไม่ให้ขึ้นอยู่กับ libstdc++ ของโฮสต์และในแพลตฟอร์ม Windows เพื่อไม่ให้ขึ้นอยู่กับไลบรารีlibgcc_sjlj_1.dll - แก้ไข Clang 3.1 ซึ่งปล่อยรายการรีจิสเตอร์ที่ไม่สอดคล้องกันใน 
.vsaveและทำให้แอสเซมเบลอร์ล้มเหลว (เปลี่ยน 49930) - แก้ไข Clang 3.1 เพื่อให้คอมไพล์ libgabi++ ได้และผ่านการทดสอบ 
test-stlportสำหรับเป้าหมายการสร้าง MIPS (การเปลี่ยนแปลง 51961) - แก้ไข Clang 3.1 ให้เปิดใช้ข้อยกเว้นโดยค่าเริ่มต้นสำหรับ C++ เท่านั้น ไม่ใช่สำหรับ C
 - แก้ไขปัญหาหลายอย่างใน Clang 3.1 เพื่อให้ผ่านการทดสอบข้อยกเว้นของ GNU ส่วนใหญ่
 - แก้ไขสคริปต์ 
clangและclang++ในคอมไพเลอร์ NDK แบบสแตนด์อโลนเพื่อตรวจหา-cc1และไม่ระบุ-targetเมื่อพบ - แก้ไข 
ndk-buildเพื่อสังเกตNDK_APP_OUTที่ตั้งค่าไว้ในApplication.mk - แก้ไข X86 
libc.soและlib.aที่ไม่มีฟังก์ชันsigsetjmpและsiglongjmpซึ่งประกาศไว้แล้วในsetjmp.h(ปัญหา 19851) - แก้ไข libstdc++ ของ GCC 4.4.3/4.6/4.7 ให้ทำงานร่วมกับ Clang ใน C++ 11 ได้ (ปัญหา Clang)
 - แก้ไขเส้นทาง cygwin ในอาร์กิวเมนต์ที่ส่งไปยัง 
HOST_AWK - แก้ไขคำเตือนสคริปต์ 
ndk-buildในหน้าต่างเมื่อเรียกใช้จาก JNI ของโปรเจ็กต์ ไดเรกทอรี (ปัญหา 40192) - แก้ไขปัญหาที่สคริปต์ 
ndk-buildไม่สร้างหาก Makefile มี ช่องว่างต่อท้ายในคำจำกัดความของLOCAL_PATH(ปัญหา 42841) 
 - ส่วนหัว NDK ที่แก้ไขแล้ว
            
 - การเปลี่ยนแปลงอื่นๆ
 - 
        
- เปิดใช้การรองรับการทำงานแบบหลายเธรดใน Toolchain ของ GCC/MIPS
 - อัปเดตตัวช่วยการจัดการข้อยกเว้นของ GCC 
__cxa_begin_cleanupและ__cxa_type_matchให้มีระดับการมองเห็นเริ่มต้นจากระดับการมองเห็นซ่อนก่อนหน้าใน GNU libstdc++ ดูข้อมูลเพิ่มเติมได้ที่CHANGES.HTML - อัปเดตสคริปต์บิลด์เพื่อให้ตอนนี้ไลบรารีแบบคงที่ Gabi++ และ STLport สร้างขึ้นด้วย การมองเห็นที่ซ่อนอยู่ ยกเว้นตัวช่วยการจัดการข้อยกเว้น
 - อัปเดตบิลด์เพื่อให้ 
STLportสร้างขึ้นสำหรับ ARM ในโหมด Thumb - เพิ่มการรองรับ 
std::set_new_handlerใน Gabi++ (ปัญหา 52805) - เปิดใช้
FUTEXการเรียกใช้ระบบใน GNU libstdc++ - อัปเดต 
ndk-buildเพื่อไม่ให้คัดลอกไลบรารีแบบคงที่ที่สร้างไว้ล่วงหน้าไปยังไดเรกทอรีobj/local/<abi>/ของโปรเจ็กต์อีก (ปัญหา 40302) - นำ 
__ARM_ARCH_5*__ออกจากสคริปต์ ARMtoolchains/*/setup.mk(ปัญหา 21132) - สร้างไลบรารี GNU libstdc++ เพิ่มเติมใน Thumb สำหรับ ARM
 - เปิดใช้จุดลอยตัว MIPS 
madd/msub/nmadd/nmsub/recip/rsqrtคำสั่งที่มี FPU 32 บิต - เปิดใช้เครื่องมือเพิ่มประสิทธิภาพลูป Graphite ใน GCC 4.6 และ 4.7 เพื่อให้เพิ่มประสิทธิภาพได้มากขึ้น
            
-fgraphite,-fgraphite-identity,-floop-block,-floop-flatten,-floop-interchange,-floop-strip-mine,-floop-parallelize-all, และ-ftree-loop-linear(ข้อมูล) - เปิดใช้ 
pollyสำหรับ Clang 3.1 ในโฮสต์ Linux และ Max OS X แบบ 32 บิต ซึ่งจะวิเคราะห์ และเพิ่มประสิทธิภาพการเข้าถึงหน่วยความจำ (ข้อมูล) - เปิดใช้ 
-fltoใน GCC 4.7, 4.6, Clang 3.2 และ Clang 3.1 บน Linux (Clang LTO ผ่าน LLVMgold.so) ระบบไม่รองรับเป้าหมายคอมไพเลอร์ MIPS เนื่องจากld.goldไม่พร้อมใช้งาน - เปิดใช้ 
--pluginและ--plugin-optสำหรับld.goldใน GCC 4.6/4.7 - เปิดใช้ 
--text-reorderสำหรับld.goldใน GCC 4.7 - กำหนดค่า GNU libstdc++ ด้วย 
_GLIBCXX_USE_C99_MATHซึ่งยกเลิกการกำหนดสคริปต์isinfในส่วนหัวของ Bionic ดูข้อมูลเพิ่มเติมได้ที่CHANGES.html - เพิ่ม 
APP_LDFLAGSลงในสคริปต์บิลด์แล้ว ดูข้อมูลเพิ่มเติมได้ที่ANDROID-MK.html - อัปเดตสคริปต์บิลด์เพื่อให้ 
NDK_LOG=0ปิดใช้NDK_LOGได้ - อัปเดตสคริปต์บิลด์เพื่ออนุญาตให้ 
NDK_HOST_32BIT=0ปิดใช้เครื่องมือ 32 บิตของสภาพแวดล้อมสำหรับนักพัฒนาซอฟต์แวร์โฮสต์ - เปลี่ยนแฟล็ก GCC/X86 เริ่มต้น 
-march=และ-mtune=จากpentiumproและgenericเป็นi686และatom - สคริปต์การสร้าง Toolchain ที่ได้รับการปรับปรุง
            
- แก้ไขเงื่อนไขการแข่งขันใน 
build-gcc.shสำหรับประเภทบิลด์mingwซึ่งทำให้การประมวลผลบิลด์แบบขนานจำนวนมากไม่สามารถดำเนินการได้ - อัปเดต 
build-gabi++.shและbuild-stlport.shเพื่อให้เรียกใช้ได้จากแพ็กเกจ NDK (ปัญหา 52835) - แก้ไข 
run-tests.shในคอลเล็กชันยูทิลิตีMSys - ปรับปรุงเครื่องมือเชนโฮสต์ 64 บิตและการรองรับการสร้างข้ามของแคนาดา
 - อัปเดตสคริปต์ 
build-mingw64-toolchain.shเป็นเวอร์ชันล่าสุด - เพิ่มตัวเลือกในการสร้าง 
libgnustl_static.aและstlport_static.aโดยไม่มีระดับการเข้าถึงที่ซ่อนอยู่ 
 - แก้ไขเงื่อนไขการแข่งขันใน 
 
 
Android NDK r8d (ธันวาคม 2012)
- การเปลี่ยนแปลงที่สำคัญ
 - 
        
- เพิ่มคอมไพเลอร์ GNU Compiler Collection (GCC) 4.7 ลงใน NDK คอมไพเลอร์ GCC 4.6
            ยังคงเป็นค่าเริ่มต้นอยู่ ดังนั้นคุณต้องเปิดใช้เวอร์ชันใหม่อย่างชัดเจนโดยทำดังนี้
            
- สำหรับ 
ndk-buildให้ส่งออกตัวแปรNDK_TOOLCHAIN_VERSION=4.7หรือเพิ่มลงในApplication.mk - สําหรับบิลด์แบบสแตนด์อโลน ให้เพิ่มตัวเลือก 
--toolchain=ไปยังmake-standalone-toolchain.shเช่น--toolchain=arm-linux-androideabi-4.7
 
หมายเหตุ: ฟีเจอร์นี้ยังอยู่ในช่วงการทดลอง โปรดลองใช้และรายงานปัญหา
 - สำหรับ 
 - เพิ่ม
stlportการรองรับข้อยกเว้นผ่าน gabi++ โปรดทราบว่า gabi++ ใหม่ ขึ้นอยู่กับdlopenและโค้ดที่เกี่ยวข้อง ซึ่งหมายความว่า- คุณจะสร้างไฟล์ปฏิบัติการ static โดยใช้ตัวเลือก 
-staticหรือรวมlibstlport_static.aโดยใช้APP_STL := stlport_staticไม่ได้อีกต่อไป (คุณยังใช้ตัวเลือก-staticได้ ด้วยชุดเครื่องมือแบบสแตนด์อโลน) การคอมไพล์ไฟล์ที่ปฏิบัติการได้แบบไดนามิกโดยใช้include $(BUILD_EXECUTABLE)จะยังคงทำงานได้เนื่องจากคอมไพเลอร์ จะเพิ่มตัวเลือก-ldlโดยอัตโนมัติ - หากโปรเจ็กต์ลิงก์โดยใช้ 
-nostdlibและ {-Wl,--no-undefined} คุณ ต้องรวมตัวเลือก-ldlด้วยตนเอง 
CPLUSPLUS-SUPPORT.htmlหมายเหตุ: ฟีเจอร์นี้อยู่ในขั้นทดลองและทำงานได้ดีกว่ากับคอมไพเลอร์ GCC 4.6/4.7 มากกว่า GCC 4.4.3 หรือ Clang 3.1 โปรดลองใช้และรายงานปัญหา
 - คุณจะสร้างไฟล์ปฏิบัติการ static โดยใช้ตัวเลือก 
 - เพิ่ม
-mstack-protector-guard=ตัวเลือกสำหรับ x86 เพื่อเลือกระหว่าง เส้นทางเริ่มต้นส่วนกลางที่เข้ากันได้กับไลบรารี C ของ Android เวอร์ชันเก่า (bionic) และเส้นทาง tls ใหม่ (%gs:20) สำหรับ-fstack-protector,-fstack-protector-allและ-fstack-protector-strongที่ใช้คอมไพเลอร์ GCC 4.6 และเวอร์ชันที่สูงกว่าหมายเหตุ: การตั้งค่า
-mstack-protector-guardเองไม่ได้ เปิดใช้ตัวเลือก-fstack-protector*ใดๆ - เพิ่มฟังก์ชัน 
android_setCpu()ในsources/android/cpufeatures/cpu-features.cสำหรับใช้เมื่อตรวจหาอัตโนมัติผ่าน/procไม่ได้ใน Android 4.1 ขึ้นไป (ปัญหาใน Chromium 164154) 
 - เพิ่มคอมไพเลอร์ GNU Compiler Collection (GCC) 4.7 ลงใน NDK คอมไพเลอร์ GCC 4.6
            ยังคงเป็นค่าเริ่มต้นอยู่ ดังนั้นคุณต้องเปิดใช้เวอร์ชันใหม่อย่างชัดเจนโดยทำดังนี้
            
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
- แก้ไขการสร้างไฟล์ออบเจ็กต์ที่ไม่จำเป็นใหม่เมื่อใช้สคริปต์ 
ndk-build(ปัญหา 39810) - แก้ไขการลิงก์ที่ไม่สำเร็จใน NDK เวอร์ชัน 8c สำหรับ Mac OS X 10.6.x ซึ่งทำให้เกิดข้อผิดพลาดต่อไปนี้
            
            
 ปัญหานี้เกิดจากการสร้างบน Mac OS X 10.7 ซึ่งสร้างไบนารีที่ไม่ เข้ากันได้กับ Mac OS 10.6.x และ NDKdyld: lazy symbol binding failed: Symbol not found: _memmem Referenced from: ...../arm-linux-androideabi/bin/ld Expected in: /usr/lib/libSystem.B.dylib
 - นำ
-x c++ตัวเลือกออกจากสคริปต์การสร้างแบบสแตนด์อโลนของ Clang++ (ปัญหา 39089) - แก้ไขปัญหาการใช้ตัวเลือก 
NDK_TOOLCHAIN_VERSION=clang3.1ใน Cygwin (ปัญหา 39585) - แก้ไข
make-standalone-toolchain.shสคริปต์เพื่ออนุญาตให้สร้าง Standalone Toolchain โดยใช้สภาพแวดล้อม Cygwin หรือ MinGW โดยสามารถใช้ชุดเครื่องมือที่ได้ ในสภาพแวดล้อม Cygwin, MingGW หรือ CMD.exe (ปัญหา 39915, ปัญหา 39585) - เพิ่มตัวเลือก 
SL_IID_ANDROIDBUFFERQUEUESOURCEที่ขาดหายไปในบิลด์ android-14 สำหรับ ARM และ X86 (ปัญหา 40625) - แก้ไขการตรวจหา CPU x86 สำหรับฟีเจอร์ 
ANDROID_CPU_X86_FEATURE_MOVBE(ปัญหา 39317) - แก้ไขปัญหาที่ทำให้ Standard Template Library (STL) ใช้แหล่งที่มาของ C++
            ที่ไม่มีนามสกุลไฟล์ 
.cppไม่ได้ - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ GCC 4.6 ARM ที่ reload1.c:1061 (ปัญหา 20862)
 - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ ARM ใน GCC 4.4.3 ที่ emit-rtl.c:1954 (ปัญหา 22336)
 - แก้ไขข้อผิดพลาดของคอมไพเลอร์ภายใน GCC 4.4.3 ARM ที่ postreload.c:396 (ปัญหา 22345)
 - แก้ไขปัญหาเกี่ยวกับ GCC 4.6/4.7 ที่ข้ามฟังก์ชัน Lambda (ปัญหา 35933)
 
 - แก้ไขการสร้างไฟล์ออบเจ็กต์ที่ไม่จำเป็นใหม่เมื่อใช้สคริปต์ 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
        
- การแก้ไขไฟล์ส่วนหัวของ NDK
            
- แก้ไข 
__WINT_TYPE__และwint_tให้เป็นประเภทเดียวกัน - แก้ไขการพิมพ์ผิดใน 
android/bitmap.h(ปัญหา 15134) - แก้ไขการพิมพ์ผิดใน 
errno.h - เพิ่มการตรวจสอบว่ามี 
__STDC_VERSION__ในsys/cdefs.h(ปัญหา 14627) - จัดระเบียบส่วนหัวใหม่ใน 
byteswap.hและdirent.h - แก้ไข
limits.hให้รวมpage.hซึ่งมีPAGE_SIZEการตั้งค่า (ปัญหา 39983) - เปลี่ยนประเภทการคืนสินค้าแบบคงที่ของ 
glGetAttribLocation()และglGetUniformLocation()จากintเป็นGLint - แก้ไขค่าคงที่ 
__BYTE_ORDERสำหรับบิลด์ x86 (ปัญหา 39824) 
 - แก้ไข 
 - แก้ไขสคริปต์ 
ndk-buildเพื่อไม่ให้เขียนทับ-Osด้วย-O2สำหรับบิลด์ ARM - แก้ไขสคริปต์บิลด์เพื่อให้เขียนทับการตั้งค่า 
HOST_AWK,HOST_SEDและHOST_MAKEได้ - แก้ไขปัญหาสำหรับ 
ld.goldในบิลด์fsck_msdosที่ลิงก์ออบเจ็กต์ที่สร้างโดย คอมไพเลอร์ C/C++ ของ Intel (ICC) - รองรับ ARM EHABI แบบคงที่ใน Clang เพื่อให้เป็นไปตามข้อกำหนด
 - แก้ไข GNU Debugger (GDB) เพื่อลดเวลาที่ใช้ในการเดินตามแผนที่ลิงก์ของเป้าหมาย
            ระหว่าง
solibเหตุการณ์ (ปัญหา 38402) - แก้ไขปัญหาที่ไม่มีไฟล์ 
libgcc.aเมื่อลิงก์ไลบรารีที่แชร์ 
 - การแก้ไขไฟล์ส่วนหัวของ NDK
            
 - การเปลี่ยนแปลงอื่นๆ
 - 
        
- ย้อนกลับฟังก์ชันอะตอมในตัว 64 บิตสำหรับ ARM ไปยัง GCC 4.6
 - เพิ่มเอกสารประกอบสำหรับเวลาในการตอบสนองของเอาต์พุตเสียง พร้อมกับเอกสารประกอบอื่นๆ และ การแก้ไข
 - แก้ไขบิลด์การแก้ไขข้อบกพร่องด้วย Clang เพื่อให้ฟังก์ชันที่ไม่ใช่ฟังก์ชัน void จะส่งสัญญาณ 
SIGILLสำหรับเส้นทางที่ไม่มีคำสั่ง return - อัปเดต 
make-standalone-toolchain.shเพื่อยอมรับคำต่อท้าย-clang3.1ซึ่งเทียบเท่ากับการเพิ่ม--llvm-version=3.1ลงในทูลเชน GCC 4.6 - อัปเดต URL การรายงานข้อบกพร่องของ GCC และ Clang เป็น https://source.android.com/source/report-bug s.html
 - เพิ่มการรองรับ ARM ELF ใน 
llvm-objdump - ระงับคำเตือนถือว่าอินพุต c เป็น c++ สำหรับการสร้าง Clang
 - อัปเดตบิลด์เพื่อให้สร้างเฉพาะ 
libiberty.aเวอร์ชัน 32 บิตและวางไว้ในlib32/ 
 
Android NDK r8c (พฤศจิกายน 2012)
- การเปลี่ยนแปลงที่สำคัญ
 - 
        
- เพิ่มคอมไพเลอร์ Clang 3.1 ลงใน NDK GNU Compiler Collection (GCC) 4.6 ยังคงเป็นค่าเริ่มต้น ดังนั้นคุณต้องเปิดใช้ตัวเลือกคอมไพเลอร์ Clang อย่างชัดเจนดังนี้
            
- สำหรับ 
ndk-buildให้ส่งออกNDK_TOOLCHAIN_VERSION=clang3.1หรือ เพิ่มการตั้งค่าตัวแปรสภาพแวดล้อมนี้ลงในApplication.mk - สําหรับบิลด์แบบสแตนด์อโลน ให้เพิ่ม 
--llvm-version=3.1tomake-standalone-toolchain.shและแทนที่CCและCXXใน Makefile ด้วย<tool-path>/bin/clangและ<tool-path>/bin/clang++ดูรายละเอียดได้ที่STANDALONE-TOOLCHAIN.html 
หมายเหตุ: ฟีเจอร์นี้ยังอยู่ในช่วงการทดลอง โปรดลองใช้และรายงานปัญหา
 - สำหรับ 
 - เพิ่ม Gold Linker 
ld.goldสำหรับ Toolchain ของ Windows Gold linker ยังเป็นค่าเริ่มต้นสำหรับ ARM และ X86 ในโฮสต์ทั้งหมดด้วย คุณอาจลบล้างเพื่อใช้ld.bfdLinker โดยการเพิ่มLOCAL_LDFLAGS += -fuse-ld=bfdไปยังAndroid.mkหรือโดยการ ส่ง-fuse-ld=bfdไปยังบรรทัดคำสั่ง g++/clang++ ที่ทำการลิงก์ - เพิ่มการตรวจสอบช่องว่างในเส้นทาง NDK ไปยังสคริปต์ 
ndk-build[.cmd]และndk-gdbเพื่อป้องกันข้อผิดพลาดในการสร้างที่วินิจฉัยได้ยาก - เราได้ทำการเปลี่ยนแปลงการจัดการระดับ API ดังนี้
            
- แก้ไขตรรกะการสร้างเพื่อให้โปรเจ็กต์ที่ระบุ 
android-10ผ่านandroid-13ในAPP_PLATFORM,project.propertiesหรือdefault.propertiesลิงก์กับandroid-9แทนที่จะเป็นandroid-14 - อัปเดตบิลด์เพื่อให้คอมไพล์ไฟล์ที่เรียกใช้งานได้ซึ่งใช้ android-16 (Jelly Bean) ขึ้นไป
                ด้วยตัวเลือก 
-fPIEสำหรับไฟล์ที่เรียกใช้งานได้แบบอิสระ (PIE)APP_PIEตัวเลือกใหม่ช่วยให้คุณควบคุมลักษณะการทำงานนี้ได้ ดูรายละเอียดได้ที่APPLICATION-MK.htmlหมายเหตุ: API ระดับที่สูงกว่า 14 ทั้งหมดจะยังคงลิงก์กับ
platforms/android-14และไม่มีการเพิ่มplatforms/android-Nใหม่ - แก้ไข 
ndk-buildเพื่อแสดงคำเตือนหากระดับ API ที่ปรับแล้วสูงกว่าandroid:minSdkVersionในAndroidManifest.xmlของโปรเจ็กต์ 
 - แก้ไขตรรกะการสร้างเพื่อให้โปรเจ็กต์ที่ระบุ 
 - อัปเดต
cpu-featuresไลบรารีตัวช่วยให้มีฟีเจอร์เฉพาะ ARM มากขึ้น ดูรายละเอียดได้ที่sources/android/cpufeatures/cpu-features.h - แก้ไข long double ในแพลตฟอร์ม X86 ให้มีขนาด 8 ไบต์ ตอนนี้ประเภทข้อมูลนี้มีขนาดเท่ากับ ประเภทข้อมูลเลขทศนิยมอย่างละเอียด แต่ยังคงถือว่าเป็นประเภทข้อมูลที่แตกต่างกัน
 - บิลด์ที่อัปเดตสำหรับ 
APP_ABI=armeabi-v7a- แก้ไขประเภทบิลด์นี้เพื่อส่งพารามิเตอร์ 
-march=armv7-aไปยัง Linker การเปลี่ยนแปลงนี้ช่วยให้มั่นใจได้ว่าไลบรารีและcrt*.oเฉพาะ v7 จะลิงก์อย่างถูกต้อง - เพิ่ม 
-mfpu=vfpv3-d16ไปยังndk-buildแทนตัวเลือก-mfpu=vfpที่ใช้ในรุ่นก่อนหน้า 
 - แก้ไขประเภทบิลด์นี้เพื่อส่งพารามิเตอร์ 
 
 - เพิ่มคอมไพเลอร์ Clang 3.1 ลงใน NDK GNU Compiler Collection (GCC) 4.6 ยังคงเป็นค่าเริ่มต้น ดังนั้นคุณต้องเปิดใช้ตัวเลือกคอมไพเลอร์ Clang อย่างชัดเจนดังนี้
            
 
- การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
- แก้ไขปัญหาที่การเรียกใช้ 
make-standalone-toolchain.shที่มีสิทธิ์ระดับรูท ทำให้ผู้ใช้บางรายเข้าถึงเครื่องมือแบบสแตนด์อโลนไม่ได้ (ปัญหา 35279)- ไฟล์และไฟล์ที่เรียกใช้งานได้ทั้งหมดในแพ็กเกจการเผยแพร่ NDK จะได้รับการตั้งค่าให้มีสิทธิ์อ่านและ เรียกใช้สำหรับทุกคน
 - ตอนนี้ระบบจะรักษาความเป็นเจ้าของ/กลุ่มของ 
libstdc++.aไว้เมื่อคัดลอก 
 - นำ 
\rที่ซ้ำซ้อนออกจากecho.exeที่สร้างไว้ล่วงหน้าของ Windows\rที่ซ้ำกันทำให้gdb.setupทำงานไม่สำเร็จใน GNU Debugger (GDB) เนื่องจาก กลายเป็นส่วนหนึ่งของเส้นทางอย่างไม่ถูกต้อง (ปัญหา 36054) - แก้ไขการสร้างแบบคู่ขนานของ Windows ที่บางครั้งล้มเหลวเนื่องจากปัญหาด้านเวลาในการ
          
host-mkdir(ปัญหา 25875) - แก้ไข GCC 4.4.3 GNU 
libstdc++ให้ไม่ผสานชื่อtypeinfoโดย ค่าเริ่มต้น ดูรายละเอียดเพิ่มเติมได้ที่toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo(ปัญหา 22165) - แก้ไขปัญหาใน
nullบริบทใน GCC 4.6cp/mangle.c::write_unscoped_nameซึ่ง GCC อาจขัดข้องเมื่อบริบทเป็นnullและมีการอ้างอิงในTREE_CODE - แก้ไขข้อขัดข้องของ GCC 4.4.3 ในคำจำกัดความประเภทเฉพาะของ ARM NEON สำหรับ Float (ปัญหา 34613)
 - แก้ไขการใช้งาน
STLportภายใน_IteWrapper::operator*()ซึ่งมีการส่งคืนตำแหน่งสแต็กที่ล้าสมัยซึ่งมีค่าที่ยกเลิกการอ้างอิง และทำให้เกิด ข้อขัดข้องขณะรันไทม์ (ปัญหา 38630) - การแก้ไขเฉพาะ ARM
            
- แก้ไข ARM GCC 4.4.3/4.6 
g++เพื่อไม่ให้แสดงคำเตือนว่าการดัดแปลง <va_list> มีการเปลี่ยนแปลงใน GCC 4.4 ไม่จำเป็นต้องใช้วิธีแก้ปัญหาเบื้องต้นโดยใช้สวิตช์-Wno-psabiเพื่อหลีกเลี่ยงคำเตือนนี้อีกต่อไป - แก้ไขปัญหาเมื่อโปรเจ็กต์ที่มีคำต่อท้าย 
.armหรือ.neonในLOCAL_SRC_FILESใช้APP_STLด้วย เมื่อใช้APP_STLสคริปต์ndk-buildจะค้นหาไฟล์ C++ ในLOCAL_SRC_FILESก่อน เพิ่มเส้นทาง STLheader/libไปยังการคอมไพล์ แก้ไขndk-buildเป็น กรองคำต่อท้าย.armและ.neonออกก่อนการค้นหา ไม่เช่นนั้นรายการ ในLOCAL_SRC_FILESเช่นmyfile.cpp.arm.neonจะไม่คอมไพล์เป็นโค้ด C++ - แก้ไข 
binutils-2.21/ld.bfdให้สามารถลิงก์ออบเจ็กต์จาก Binutils เวอร์ชันเก่าโดยไม่ต้องใช้tag_FP_archซึ่งทำให้เกิดข้อความแสดงข้อผิดพลาด assertion fail ใน GNU Binutils (ปัญหา 35209) - นำคำเตือน Unknown EABI object attribute 44 ออกเมื่อ
              
binutils-2.19/ldลิงก์ออบเจ็กต์ที่สร้างไว้ล่วงหน้าโดยbinutils-2.21เวอร์ชันใหม่กว่า - แก้ไขปัญหาในการคอมไพล์ GNU 
stdc++ด้วยทั้ง-mthumbและ-march=armv7-aโดยการแก้ไขmake-standalone-toolchain.shเพื่อสร้างheaders/libsในไดเรกทอรีย่อยarmv7-a/thumb(ปัญหา 35616) - แก้ไขข้อผิดพลาด unresolvable R_ARM_THM_CALL relocation (ปัญหา 35342)
 - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ที่ 
reload1.c:3633ซึ่งเกิดจากแบ็กเอนด์ของ ARM ที่คาดหวังตัวถูกดำเนินการผิดประเภทเมื่อขยายเครื่องหมายจากchar(ปัญหา GCC 50099) - แก้ไขข้อผิดพลาดภายในของคอมไพเลอร์ที่มีจำนวนการเลื่อนเป็นค่าลบ (ปัญหาเกี่ยวกับ GCC)
 
 - แก้ไข ARM GCC 4.4.3/4.6 
 - แก้ไข 
-fstack-protectorสำหรับ X86 ซึ่งเป็นค่าเริ่มต้นสำหรับndk-buildเป้าหมาย ABI ของ x86 ด้วย - การแก้ไขเฉพาะ MIPS
            
- แก้ไข
STLportเอนเดียนเนสโดยตั้งค่า_STLP_LITTLE_ENDIANเป็น 1 เมื่อ คอมไพล์ MIPSlibstlport_* - แก้ไขปัญหา GCC 
__builtin_unreachableเมื่อคอมไพล์ LLVM (ปัญหา GCC 54369) - แก้ไขข้อบกพร่องที่ย้อนกลับมาสำหรับ
cc1กระบวนการคอมไพล์ที่ใช้ CPU 100% (ปัญหา GCC 50380) 
 - แก้ไข
 - การแก้ไขเฉพาะ GNU Debugger มีดังนี้
            
- ปิดใช้การรองรับ Python ใน gdb-7.x ที่บิลด์ มิฉะนั้นฟังก์ชัน gdb-7.x configure
              อาจเลือกเวอร์ชัน Python ที่พร้อมใช้งานในโฮสต์และบิลด์
              
gdbโดยมีการขึ้นต่อกันแบบฮาร์ดโค้ดกับ Python เวอร์ชันที่เฉพาะเจาะจง (ปัญหา 36120) - แก้ไขแล้ว
ndk-gdbเมื่อAPP_ABIมีallและไม่ตรงกับสถาปัตยกรรมที่รู้จัก (ปัญหา 35392) - แก้ไขการรองรับชื่อเส้นทาง Windows โดยคงอักขระ 
:ไว้หากดูเหมือนว่าจะเป็นส่วนหนึ่งของเส้นทาง Windows ที่ขึ้นต้นด้วยอักษรไดรฟ์ (GDB Issue 12843) - แก้ไขการเพิ่มการรองรับเบรกพอยท์ฮาร์ดแวร์สำหรับ ARM ใน 
gdbserver(ปัญหา GDB) - เพิ่มการแก้ไขเพื่ออ่านเฉพาะ 
solibsปัจจุบันเมื่อลิงก์เกอร์สอดคล้องกัน การเปลี่ยนแปลงนี้จะช่วยให้การจัดการเหตุการณ์solibเร็วขึ้น (ปัญหา 37677) - เพิ่มการแก้ไขเพื่อให้พยายามค้นหา
solibเบรกพอยต์ซ้ำๆ ได้ ตอนนี้ GDB จะลองใหม่enable_break()ทุกครั้งที่เรียกใช้svr4_current_sos()จนกว่า จะสำเร็จ (การเปลี่ยนแปลง 43563) - แก้ไขปัญหาที่ 
gdbจะไม่หยุดที่จุดพักที่วางไว้ในไลบรารีdlopen-ed(ปัญหา 34856) - แก้ไข 
SIGILLในโปรแกรมลิงก์แบบไดนามิกเมื่อเรียกใช้dlopen()ในระบบ ที่/system/bin/linkerถูกลบสัญลักษณ์ออกและrtld_db_dlactivity()ได้รับการติดตั้งใช้งานเป็นThumbเนื่องจากไม่ได้เก็บรักษาLSBของsym_addr(ปัญหา 37147) 
 - ปิดใช้การรองรับ Python ใน gdb-7.x ที่บิลด์ มิฉะนั้นฟังก์ชัน gdb-7.x configure
              อาจเลือกเวอร์ชัน Python ที่พร้อมใช้งานในโฮสต์และบิลด์
              
 
 - แก้ไขปัญหาที่การเรียกใช้ 
 
- การแก้ไขข้อบกพร่องอื่นๆ
 - 
        
- ส่วนหัว NDK ที่แก้ไขแล้ว
            
- แก้ไข
arch-mips/include/asm/*ที่ถูกนำออกจากเคอร์เนลเดิมอย่างไม่ถูกต้อง (เปลี่ยน 43335) - แทนที่ข้อมูลสมาชิกโครงสร้าง 
__unusedด้วย__linux_unusedในlinux/sysctl.hและlinux/icmp.hเพื่อหลีกเลี่ยงความขัดแย้งกับ#define __unusedในsys/cdefs.h - แก้ไข 
fenv.hสำหรับฟังก์ชัน C ที่แนบมากับ__BEGIN_DECLSและ__END_DECLS - นำฟังก์ชันที่ยังไม่ได้ใช้งานใน 
malloc.hออก - แก้ไขคำจำกัดความ 
stdint.hของuint64_tสำหรับคอมไพเลอร์ ANSI (ฉบับที่ 1952) - แก้ไขมาโครตัวประมวลผลล่วงหน้าคงที่ใน 
<arch>/include/machine/* - แทนที่ 
link.hสำหรับ MIPS ด้วยเวอร์ชันใหม่ที่รองรับทุกแพลตฟอร์ม - นำ 
linux-unistd.hออกแล้ว - ย้ายมาโครที่เฉพาะเจาะจง GLibc 
LONG_LONG_MIN,LONG_LONG_MAXและULONG_LONG_MAXจาก<pthread.h>ไปยัง<limits.h> 
 - แก้ไข
 - แก้ไขบัฟเฟอร์ล้นใน 
ndk-stack-parser - แก้ไข 
_STLP_USE_EXCEPTIONSเมื่อไม่ได้กำหนดไว้ เพื่อละเว้นการประกาศทั้งหมด และการใช้งาน__Named_exceptionการคอมไพล์และการใช้การตั้งค่า__Named_exceptionจะเกิดขึ้นเมื่อได้รับอนุญาตให้ใช้ข้อยกเว้นเท่านั้นSTLport - แก้ไขการสร้างแพ็กเกจ NDK ที่ใช้ได้เฉพาะใน Linux โดยไม่ต้องสร้างโค้ด Windows ด้วย ใช้
          การตั้งค่าต่อไปนี้เพื่อทำการบิลด์ประเภทนี้
          
./build/tools/make-release.sh --force --systems=linux-x86
 - แก้ไข 
libc.soเพื่อไม่ให้ส่งออกatexit()และ__do_handlerระบบจะส่งออกสัญลักษณ์เหล่านี้สำหรับการสร้าง ARM โดยเวอร์ชันระบบของไลบรารี C เพื่อ รองรับไลบรารีเนทีฟเดิม โค้ดที่ NDK สร้างขึ้นไม่ควรอ้างอิงโดยตรง แต่ไลบรารีที่แชร์หรือไฟล์ที่เรียกใช้งานได้แต่ละรายการควรฝังสัญลักษณ์เวอร์ชันของตัวเอง ซึ่งcrtbegin_*.oเป็นผู้จัดหาให้หากโปรเจ็กต์ลิงก์กับตัวเลือก
-nostdlib -Wl,--no-undefinedคุณ ต้องระบุ__dso_handleของคุณเองเนื่องจากcrtbegin_so.oไม่ได้ลิงก์ใน กรณีนี้ เนื้อหาของ__dso_handleไม่สำคัญ ดังที่แสดงในโค้ดตัวอย่างต่อไปนี้extern "C" { extern void *__dso_handle __attribute__((__visibility__ ("hidden"))); void *__dso_handle; }
 - แก้ไขตัวถอดรหัสสัญลักษณ์สำหรับ ARM ที่ใช้ใน 
objdumpสำหรับรายการpltเพื่อ สร้างรูปแบบที่อ่านง่ายขึ้นfunction@plt - นำสัญลักษณ์ต่อไปนี้ซึ่งเปิดตัวใน GCC 4.6 
libgcc.aออกจาก ไลบรารีแพลตฟอร์ม X86libc.so:__aeabi_idiv0,__aeabi_ldiv0,__aeabi_unwind_cpp_pr1และ__aeabi_unwind_cpp_pr2 - นำ 
.ctors,.dtorsและ.eh_frameที่ไม่ได้ใช้ออกใน MIPScrt*_so.S - อัปเดต 
ndk-gdbเพื่อให้ใช้เฉพาะบรรทัดสุดท้ายของเอาต์พุตสำหรับndk-buildDUMP_XXXXการเปลี่ยนแปลงนี้ช่วยให้มั่นใจได้ว่าหากApplication.mkหรือAndroid.mkพิมพ์บางอย่างด้วยไวยากรณ์$(info ...)จะไม่มีการแทรก ลงในผลลัพธ์ของDUMP_XXXX(ข้อมูลเพิ่มเติม) 
 - ส่วนหัว NDK ที่แก้ไขแล้ว
            
 
- การเปลี่ยนแปลงอื่นๆ
 - 
        
- นำส่วนหัว 
arch-x86และarch-mipsออกจากplatforms/android-[3,4,5,8]แล้ว ส่วนหัวเหล่านั้นไม่สมบูรณ์เนื่องจาก ABI ทั้ง X86 และ MIPS รองรับเฉพาะ API 9 ขึ้นไป - เส้นทางการรวม C++ ที่ง่ายขึ้นในแพ็กเกจแบบสแตนด์อโลน ดังที่แสดงด้านล่าง
          (ปัญหา 35279)
<path>/arm-linux-androideabi/include/c++/4.6.x-google to: <path>/include/c++/4.6/
 - แก้ไข 
ndk-buildเพื่อให้รู้จักนามสกุลไฟล์ C++ เพิ่มเติมโดยค่าเริ่มต้น.cc .cp .cxx .cpp .CPP .c++ .Cคุณยังคงใช้LOCAL_CPP_EXTENSIONเพื่อ เขียนทับการตั้งค่าส่วนขยายเหล่านี้ได้ - แก้ไขปัญหาใน 
samples/san-angelesที่ทำให้เกิดหน้าจอสีดำหรือเฟรมค้างเมื่อเปิดแอปอีกครั้ง - แทนที่ API ที่เลิกใช้งานแล้วในตัวอย่าง NDK
          (ปัญหา 20017)
            
hello-gl2จาก Android 5 ถึง Android 7native-activityจาก android-9 เป็น android-10native-audioจาก android-9 เป็น android-10native-plasmaจาก android-9 เป็น android-10
 - เพิ่มการสร้างแบรนด์ใหม่สำหรับไฟล์ปฏิบัติการของ Android ด้วยรูปแบบที่ง่ายขึ้นในส่วน
          
.note.android.ident(กำหนดไว้ในcrtbegin_static/dynamic.o) เพื่อให้ เครื่องมือแก้ไขข้อบกพร่องสามารถดำเนินการตามนั้นได้ สมาชิกและค่าของโครงสร้างมีการกําหนดดังนี้static const struct { int32_t namesz; /* = 8, sizeof ("Android") */ int32_t descsz; /* = 1 * sizeof(int32_t) */ int32_t type; /* = 1, ABI_NOTETYPE */ char name[sizeof "Android"]; /* = "Android" */ int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ }
ตัวเลือกการสร้างแบรนด์ก่อนหน้าในส่วน
.note.ABI-tagจะเลิกใช้งานแล้ว - เพิ่มสคริปต์ใหม่ 
run-tests-all.shซึ่งเรียกใช้run-tests.shและstandalone/run.shโดยมีเงื่อนไขต่างๆ สคริปต์run-tests.shจะทำงาน โดยไม่มีตัวเลือก--abiและได้รับการปรับปรุงให้คอมไพล์การทดสอบส่วนใหญ่สำหรับ ABI ที่รองรับทั้งหมด และเรียกใช้ในอุปกรณ์ที่เชื่อมต่อทั้งหมด 
 - นำส่วนหัว 
 
Android NDK r8b (กรกฎาคม 2012)
ฟีเจอร์หลักของรุ่นนี้คือชุดเครื่องมือ GNU Compiler Collection (GCC) 4.6 ใหม่และ GNU Debugger (GDB) 7.3.x ซึ่งเพิ่มการรองรับการแก้ไขข้อบกพร่องสำหรับอิมเมจระบบ Android 4.1 (API ระดับ 16)
- การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
- แก้ไข
LOCAL_SHORT_COMMANDSในสภาพแวดล้อม Mac OS, Windows Cygwin สำหรับ ไลบรารีแบบคงที่ การสร้างไฟล์รายการจะเร็วขึ้น และระบบจะไม่สร้างไฟล์รายการใหม่เพื่อหลีกเลี่ยงการสร้างโปรเจ็กต์ซ้ำ - แก้ไขปัญหาหลายอย่างใน 
ndk-gdbดังนี้- อัปเดตเครื่องมือเพื่อส่งแฟล็ก 
-e,-dและ-sไปยัง adb ให้สอดคล้องกันมากขึ้น - อัปเดตเครื่องมือให้ยอมรับชื่อซีเรียลของอุปกรณ์ที่มีการเว้นวรรค
 - อัปเดตเครื่องมือเพื่อดึงข้อมูล 
/system/bin/linkเพื่อให้gdbในโฮสต์สามารถตั้งค่าเบรกพอยต์ใน__dl_rtld_db_dlactivityและรับทราบกิจกรรมของ Linker (เช่น สแกนสัญลักษณ์solibอีกครั้งเมื่อมีการเรียกใช้dlopen()) 
 - อัปเดตเครื่องมือเพื่อส่งแฟล็ก 
 - แก้ไข 
ndk-build cleanใน Windows ซึ่งไม่สามารถนำ./libs/*/lib*.soออกได้ - แก้ไข 
ndk-build.cmdเพื่อให้แสดงผลERRORLEVELที่ไม่ใช่ 0 เมื่อmakeล้มเหลว - แก้ไข 
libc.soเพื่อหยุดการส่งออกสัญลักษณ์__exidx_startและ__exidx_endอย่างไม่ถูกต้อง - แก้ไข 
SEGVเมื่อคลายสแต็กที่ผ่านมา__libc_initสำหรับ ARM และ MIPS 
 - แก้ไข
 
- การเปลี่ยนแปลงที่สำคัญ
 - 
        
- เพิ่ม Toolchain GCC 4.6 (
binutils2.21 พร้อมgoldและ GDB 7.3.x) เพื่อให้ใช้ร่วมกับ Toolchain GCC 4.4.3 เดิม (binutils2.19 และ GDB 6.6) ได้- ตอนนี้ GCC 4.6 เป็นชุดเครื่องมือเริ่มต้นแล้ว คุณตั้งค่า 
NDK_TOOLCHAIN_VERSION=4.4.3ในApplication.mkเพื่อเลือกต้นฉบับได้ - การรองรับ Linker 
goldใช้ได้เฉพาะสถาปัตยกรรม ARM และ x86 ในโฮสต์ Linux และ Mac OS การรองรับนี้จะปิดใช้อยู่โดยค่าเริ่มต้น เพิ่มLOCAL_LDLIBS += -fuse-ld=goldในAndroid.mkเพื่อเปิดใช้ - โปรแกรมที่คอมไพล์ด้วย 
-fPIEต้องใช้GDBใหม่สำหรับการแก้ไขข้อบกพร่อง รวมถึงไบนารีในอิมเมจระบบ Android 4.1 (API ระดับ 16) - เครื่องมือ 
binutils2.21ldมีการแก้ไขที่ย้อนกลับมาจาก เวอร์ชัน 2.22 ดังนี้- แก้ไข 
ld --gc-sectionsซึ่งเก็บข้อมูลอ้างอิงที่ไม่ได้ใช้งานไปยัง ไลบรารีภายนอกอย่างไม่ถูกต้อง (ข้อมูลเพิ่มเติม) - แก้ไขคำสั่ง ARM 
stripเพื่อรักษาp_alignและp_flagsเดิมไว้ในส่วนGNU_RELROหากถูกต้อง หากไม่มีการแก้ไขนี้ โปรแกรมที่สร้างด้วย-fPIEจะดีบักไม่ได้ (ข้อมูลเพิ่มเติม) 
 - แก้ไข 
 - ปิดใช้การเพิ่มประสิทธิภาพ 
sincos()เพื่อความเข้ากันได้กับแพลตฟอร์มรุ่นเก่า 
 - ตอนนี้ GCC 4.6 เป็นชุดเครื่องมือเริ่มต้นแล้ว คุณตั้งค่า 
 - อัปเดตตัวเลือกบิลด์เพื่อเปิดใช้บิต Never eXecute (NX) และการป้องกัน 
relro/bind_nowโดยค่าเริ่มต้น- เพิ่ม 
--noexecstackให้กับแอสเซมเบลอร์และ-z noexecstackให้กับลิงเกอร์ ซึ่งให้การป้องกัน NX จากการโจมตีแบบบัฟเฟอร์โอเวอร์โฟลว์โดยการเปิดใช้บิต NX ในสแต็กและ ฮีป - เพิ่ม 
-z relroและ-z nowลงใน Linker เพื่อเพิ่มความแข็งแกร่งให้กับส่วนข้อมูลภายใน หลังจากลิงก์เพื่อป้องกันช่องโหว่ด้านความปลอดภัยที่เกิดจากความเสียหายของหน่วยความจำ (ข้อมูลเพิ่มเติม: 1, 2) - คุณปิดใช้ฟีเจอร์เหล่านี้ได้โดยใช้ตัวเลือกต่อไปนี้
                
- ปิดใช้การป้องกัน NX โดยตั้งค่าตัวเลือก 
--execstackสำหรับแอสเซมเบลอร์และ-z execstackสำหรับลิงเกอร์ - ปิดใช้การเพิ่มความปลอดภัยของข้อมูลภายในโดยการตั้งค่าตัวเลือก 
-z norelroและ-z lazyสำหรับ Linker - ปิดใช้การป้องกันเหล่านี้ใน NDK 
jni/Android.mkโดยตั้งค่าตัวเลือกต่อไปนี้LOCAL_DISABLE_NO_EXECUTE=true # disable "--noexecstack" and "-z noexecstack" DISABLE_RELRO=true # disable "-z relro" and "-z now"
 
ดูรายละเอียดเพิ่มเติมได้ที่
docs/ANDROID-MK.html - ปิดใช้การป้องกัน NX โดยตั้งค่าตัวเลือก 
 
 - เพิ่ม 
 - เพิ่มการสร้างแบรนด์สำหรับไฟล์ปฏิบัติการของ Android ด้วยส่วน 
.note.ABI-tag(ในcrtbegin_static/dynamic.o) เพื่อให้เครื่องมือแก้ไขข้อบกพร่องทำงานได้อย่างเหมาะสม โครงสร้าง สมาชิกและค่ามีการกําหนดดังนี้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 */ }
 
 - เพิ่ม Toolchain GCC 4.6 (
 
- การแก้ไขข้อบกพร่องอื่นๆ
 - 
        
- แก้ไขปัญหา
mips-linux-gnuการย้ายข้อมูลที่ถูกตัดให้พอดีกับR_MIPS_TLS_LDM(ข้อมูลเพิ่มเติม) - แก้ไข 
ldเครื่องมือที่ทำให้เกิดข้อผิดพลาดในการแบ่งส่วนเมื่อใช้--gc-sections(ข้อมูลเพิ่มเติม) - แก้ไขปัญหาการนับ 
GOT_PAGEของ MIPS (ข้อมูลเพิ่มเติม) - แก้ไขลิงก์สัญลักษณ์คำเตือนการติดตามสำหรับ 
mips_elf_count_got_symbols - แก้ไขลิงก์สัญลักษณ์คำเตือนการติดตามสำหรับ 
mips_elf_allocate_lazy_stub - ย้าย MIPS 
.dynamicไปยังกลุ่มข้อมูลเพื่อให้เขียนได้ - แทนที่ค่าที่ฮาร์ดโค้ดสำหรับสัญลักษณ์ด้วยขนาดกลุ่มที่ถูกต้องสำหรับ MIPS
 - นำตัวเลือก 
-mno-sharedออกจากค่าเริ่มต้นในเครื่องมือ MIPS ค่าเริ่มต้นสำหรับ Toolchain ของ Android คือ-fPIC(หรือ-fpicหากรองรับ) หากคุณไม่ได้ระบุ-mshared,-fpic,-fPIC,-fpieหรือ-fPIEอย่างชัดเจน คอมไพเลอร์ MIPS จะเพิ่ม-mno-sharedที่ปิด PIC แก้ไขคอมไพเลอร์ไม่ให้เพิ่ม-mno-sharedในกรณีนี้ - แก้ไขชื่อแพ็กเกจที่ไม่ถูกต้องในตัวอย่าง 
hello-jniและtwo-libsเพื่อให้คอมไพล์โปรเจ็กต์testsที่อยู่ด้านล่างได้ 
 - แก้ไขปัญหา
 
- การเปลี่ยนแปลงอื่นๆ
 - 
        
- เปลี่ยนตำแหน่งของไบนารี
            
- ย้าย 
gdbserverจากtoolchain/<arch-os-ver>/prebuilt/gdbserverไปยังprebuilt/android-<arch>/gdbserver/gdbserver - เปลี่ยนชื่อคำนำหน้า Toolchain x86 จาก 
i686-android-linux-เป็นi686-linux-android- - ย้าย 
sources/cxx-stl/gnu-libstdc++/includeและlibไปยังsources/cxx-stl/gnu-libstdc++/4.6เมื่อคอมไพล์ด้วย GCC 4.6 หรือsources/cxx-stl/gnu-libstdc++/4.4.3เมื่อคอมไพล์ด้วย GCC 4.4.3 - ย้าย 
libbfd.aและlibintl.aจากlib/ไปยังlib32/ 
 - ย้าย 
 - เพิ่มและปรับปรุงสคริปต์ต่างๆ ในเครื่องมือเชน NDK สำหรับการสร้างใหม่และการทดสอบ ดังนี้
            
- เพิ่ม 
build-mingw64-toolchain.shเพื่อสร้างเครื่องมือชุดใหม่ที่โฮสต์ใน Linux ซึ่งสร้างไฟล์ปฏิบัติการ Win32 และ Win64 - ปรับปรุงความเร็วของ 
download-toolchain-sources.shโดยใช้คำสั่งcloneและใช้เฉพาะcheckoutสำหรับไดเรกทอรีที่จำเป็นในการสร้างไบนารีของ NDK toolchain - เพิ่มสคริปต์ 
build-host-gcc.shและbuild-host-gdb.sh - เพิ่ม 
tests/check-release.shเพื่อตรวจสอบเนื้อหาของไดเรกทอรีการติดตั้ง NDK ที่ระบุ หรือแพ็กเกจ NDK ที่มีอยู่ - เขียน
tests/standalone/run.shการทดสอบแบบสแตนด์อโลนใหม่ 
 - เพิ่ม 
 - นำส่วนหัว 
if_dl.hออกจากแพลตฟอร์มและสถาปัตยกรรมทั้งหมด องค์ประกอบAF_LINKและsockaddr_dlที่อธิบายนั้นมีไว้สำหรับ BSD โดยเฉพาะ (กล่าวคือ ไม่มีอยู่ใน Linux) 
 - เปลี่ยนตำแหน่งของไบนารี
            
 
Android NDK r8 (พฤษภาคม 2012)
การเผยแพร่ NDK รุ่นนี้รองรับ MIPS ABI และมีการแก้ไขเพิ่มเติมอีก 2-3 รายการ
- คุณลักษณะใหม่มีดังนี้
 - 
        
- เพิ่มการรองรับ ABI ของ MIPS ซึ่งช่วยให้คุณสร้างโค้ดเครื่องที่ทำงานในอุปกรณ์ Android ที่ใช้ MIPS ที่เข้ากันได้
 ฟีเจอร์หลักสำหรับ MIPS ได้แก่ Toolchain, ส่วนหัวของระบบ, ไลบรารี และการรองรับการแก้ไขข้อบกพร่องเฉพาะ MIPS
             ดูรายละเอียดเพิ่มเติมเกี่ยวกับ
            การรองรับ MIPS ได้ที่ 
docs/CPU-MIPS.htmlในแพ็กเกจ NDKโดยค่าเริ่มต้น ระบบจะสร้างโค้ดสำหรับอุปกรณ์ที่ใช้ ARM คุณสามารถเพิ่ม
mipsลงใน คำจำกัดความAPP_ABIในไฟล์Application.mkเพื่อสร้าง สำหรับแพลตฟอร์ม MIPS เช่น บรรทัดต่อไปนี้จะสั่งให้ndk-buildสร้างโค้ดสำหรับ ABI ที่แตกต่างกัน 3 รายการAPP_ABI := armeabi armeabi-v7a mips
หากไม่ได้ใช้แหล่งที่มาของแอสเซมบลีที่เจาะจงสถาปัตยกรรม เช่น โค้ดแอสเซมบลี ARM คุณก็ไม่จำเป็นต้องแก้ไขไฟล์
Android.mkเพื่อสร้างโค้ดเครื่อง MIPS - คุณสามารถสร้างเครื่องมือ MIPS แบบสแตนด์อโลนได้โดยใช้ตัวเลือก 
--arch=mipsเมื่อเรียกใช้make-standalone-toolchain.shดูรายละเอียดเพิ่มเติมได้ที่docs/STANDALONE-TOOLCHAIN.html 
หมายเหตุ: Google Play จะกรองแอปพลิเคชันตามข้อมูลชุดคำสั่งที่รวมอยู่ในแอปพลิเคชันของคุณ เพื่อให้มั่นใจว่าแอปพลิเคชันจะพร้อมให้บริการแก่ผู้ใช้เฉพาะในกรณีที่อุปกรณ์ของผู้ใช้สามารถเรียกใช้แอปพลิเคชันได้ คุณไม่จำเป็นต้องดำเนินการใดๆ เพื่อเปิดใช้การกรอง นอกจากนี้ ระบบ Android เองยังตรวจสอบแอปพลิเคชันของคุณในเวลาติดตั้ง และอนุญาตให้ติดตั้งต่อไปได้ก็ต่อเมื่อแอปพลิเคชันมีไลบรารีที่คอมไพล์สำหรับสถาปัตยกรรม CPU ของอุปกรณ์
 - เพิ่มการรองรับ ABI ของ MIPS ซึ่งช่วยให้คุณสร้างโค้ดเครื่องที่ทำงานในอุปกรณ์ Android ที่ใช้ MIPS ที่เข้ากันได้
 ฟีเจอร์หลักสำหรับ MIPS ได้แก่ Toolchain, ส่วนหัวของระบบ, ไลบรารี และการรองรับการแก้ไขข้อบกพร่องเฉพาะ MIPS
             ดูรายละเอียดเพิ่มเติมเกี่ยวกับ
            การรองรับ MIPS ได้ที่ 
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
- แก้ไขการสะกดคำผิดในการติดตั้งใช้งาน GAbi++ ซึ่งผลลัพธ์ของ 
dynamic_cast<D>(b)ของออบเจ็กต์คลาสฐานbไปยังคลาสที่ได้มาDมีการปรับอย่างไม่ถูกต้องในทิศทางตรงกันข้ามจากคลาสฐาน (ปัญหา 28721) - แก้ไขปัญหาที่ 
make-standalone-toolchain.shคัดลอกlibsupc++.*ไม่สำเร็จ 
 - แก้ไขการสะกดคำผิดในการติดตั้งใช้งาน GAbi++ ซึ่งผลลัพธ์ของ 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
        
- แก้ไข 
ndk-build.cmdเพื่อให้มั่นใจว่าndk-build.cmdทำงานได้อย่างถูกต้องแม้ว่าผู้ใช้จะกำหนดตัวแปรสภาพแวดล้อมSHELLใหม่ ซึ่งอาจมีการเปลี่ยนแปลงเมื่อติดตั้งเครื่องมือพัฒนาต่างๆ ในสภาพแวดล้อม Windows 
 - แก้ไข 
 
Android NDK r7c (เมษายน 2012)
NDK รุ่นนี้มีการแก้ไขที่สำคัญสำหรับอุปกรณ์ที่ใช้ Tegra2 รวมถึงการแก้ไขและการปรับปรุงเพิ่มเติมอีก 2-3 รายการ ดังนี้
- การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
- แก้ไขไบนารี GNU STL armeabi-v7a เพื่อไม่ให้เกิดข้อขัดข้องในอุปกรณ์ที่ไม่ใช่ NEON
 ไฟล์ที่มาพร้อมกับ NDK r7b ได้รับการกำหนดค่าไม่ถูกต้อง
  จึงทำให้เกิดข้อขัดข้องในอุปกรณ์ที่ใช้ Tegra2 และอุปกรณ์อื่นๆ เมื่อพยายามใช้
  ฟังก์ชันทศนิยมบางอย่าง (เช่น 
cosf,sinf,expf) 
 - แก้ไขไบนารี GNU STL armeabi-v7a เพื่อไม่ให้เกิดข้อขัดข้องในอุปกรณ์ที่ไม่ใช่ NEON
 ไฟล์ที่มาพร้อมกับ NDK r7b ได้รับการกำหนดค่าไม่ถูกต้อง
  จึงทำให้เกิดข้อขัดข้องในอุปกรณ์ที่ใช้ Tegra2 และอุปกรณ์อื่นๆ เมื่อพยายามใช้
  ฟังก์ชันทศนิยมบางอย่าง (เช่น 
 - การเปลี่ยนแปลงที่สำคัญ
 - 
        
- เพิ่มการรองรับไดเรกทอรีเอาต์พุตที่กำหนดเองผ่านตัวแปรสภาพแวดล้อม 
NDK_OUTเมื่อกำหนดแล้ว ตัวแปรนี้จะใช้เพื่อจัดเก็บไฟล์ที่สร้างขึ้นชั่วคราวทั้งหมดแทน$PROJECT_PATH/objndk-gdbยังรู้จักตัวแปรนี้ด้วย - เพิ่มการรองรับการสร้างโมดูลที่มีไฟล์ต้นทางหลายร้อยหรือหลายพันไฟล์โดยการกำหนด 
LOCAL_SHORT_COMMANDSเป็นtrueในAndroid.mkการเปลี่ยนแปลงนี้บังคับให้ระบบบิลด์ NDK ใส่ตัวเลือกของ Linker หรือ Archiver ส่วนใหญ่ ลงในไฟล์รายการ ซึ่งเป็นวิธีแก้ปัญหาข้อจำกัดด้านความยาวของบรรทัดคำสั่ง ดูรายละเอียดได้ที่
docs/ANDROID-MK.html 
 - เพิ่มการรองรับไดเรกทอรีเอาต์พุตที่กำหนดเองผ่านตัวแปรสภาพแวดล้อม 
 - การแก้ไขข้อบกพร่องอื่นๆ
 - 
        
- แก้ไขการติดตั้งใช้งาน 
android_getCpuCount()ในcpufeaturesไลบรารีตัวช่วย ในอุปกรณ์บางรุ่นที่ระบบเปิดใช้คอร์แบบไดนามิก การใช้งานก่อนหน้านี้ จะรายงานจำนวนคอร์ทั้งหมดที่ใช้งานอยู่เมื่อมีการเรียกใช้ฟังก์ชัน เป็นครั้งแรก แทนที่จะรายงานจำนวนคอร์ทั้งหมดที่พร้อมใช้งานจริง 
 - แก้ไขการติดตั้งใช้งาน 
 
Android NDK r7b (กุมภาพันธ์ 2012)
การเผยแพร่ NDK รุ่นนี้มีการแก้ไขสำหรับการสร้าง Windows แบบเนทีฟ, Cygwin และการปรับปรุงอื่นๆ อีกมากมาย ดังนี้
- การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
- อัปเดต 
sys/atomics.hเพื่อหลีกเลี่ยงปัญหาความถูกต้อง ในอุปกรณ์บางรุ่นที่ใช้ ARM แบบมัลติคอร์ สร้างแหล่งที่มาที่ไม่ได้แก้ไขใหม่ด้วย NDK เวอร์ชันนี้ แล้วปัญหานี้จะหมดไปอย่างสิ้นเชิง โปรดดูรายละเอียดเพิ่มเติมที่docs/ANDROID-ATOMICS.html - กลับไปใช้ 
binutils2.19 เพื่อแก้ไขปัญหาการแก้ไขข้อบกพร่องที่ ปรากฏใน NDK r7 (ซึ่งเปลี่ยนไปใช้binutils2.20.1) - แก้ไข 
ndk-buildใน Linux 32 บิตแล้ว ข้อผิดพลาดในการแพ็กเกจทำให้มีไฟล์ปฏิบัติการawkเวอร์ชัน 64 บิต อยู่ภายใต้prebuilt/linux-x86/binใน NDK r7 - แก้ไขบิลด์ Windows ดั้งเดิม (
ndk-build.cmd) โหมดบิลด์อื่นๆ ไม่ได้รับผลกระทบ การแก้ไขมีดังนี้- แก้ไขข้อบกพร่องของลูปอนันต์ / สแต็กโอเวอร์โฟลว์ที่เกิดขึ้นเมื่อพยายาม
                เรียกใช้ 
ndk-build.cmdจากไดเรกทอรีที่ไม่ใช่ไดเรกทอรีระดับบนสุดของ เส้นทางโปรเจ็กต์ (เช่น ในไดเรกทอรีย่อยใดก็ได้) - แก้ไขปัญหาที่ระบบไม่สนใจไฟล์การอ้างอิงที่สร้างขึ้นโดยอัตโนมัติ ซึ่งหมายความว่าการอัปเดตส่วนหัวจะไม่ทําให้เกิดการคอมไพล์แหล่งที่มาที่รวมส่วนหัวนั้นอีกครั้ง
 - แก้ไขปัญหาที่ระบบจัดการสัญลักษณ์พิเศษในไฟล์หรือเส้นทางอื่นๆ นอกเหนือจากช่องว่างและ เครื่องหมายคำพูดไม่ถูกต้อง
 
 - แก้ไขข้อบกพร่องของลูปอนันต์ / สแต็กโอเวอร์โฟลว์ที่เกิดขึ้นเมื่อพยายาม
                เรียกใช้ 
 - แก้ไข Toolchain แบบสแตนด์อโลนเพื่อสร้างไบนารีที่เหมาะสมเมื่อใช้
            
-lstdc++(เช่น การลิงก์กับรันไทม์ C++ ของ GNUlibstdc++) คุณ ควรใช้-lgnustl_sharedหากต้องการลิงก์กับไลบรารีที่ใช้ร่วมกัน หรือ-lstdc++สำหรับเวอร์ชันแบบคงที่ดูรายละเอียดเพิ่มเติมเกี่ยวกับการแก้ไขนี้ได้ที่
docs/STANDALONE-TOOLCHAIN.html - แก้ไข 
gnustl_sharedใน Cygwin Linker แจ้งว่าไม่พบlibsupc++.aแม้ว่าไฟล์จะอยู่ในตำแหน่งที่ถูกต้องก็ตาม - แก้ไขลิงก์ C++ ของ Cygwin เมื่อไม่ได้ใช้รันไทม์ C++ ที่เฉพาะเจาะจงผ่าน
            
APP_STL 
 - อัปเดต 
 
- การเปลี่ยนแปลงอื่นๆ
 - 
        
- เมื่อแอปพลิเคชันของคุณใช้รันไทม์ GNU 
libstdc++คอมไพเลอร์จะไม่ บังคับให้เปิดใช้ข้อยกเว้นและ RTTI อีกต่อไป การเปลี่ยนแปลงนี้จะทำให้โค้ดมีขนาดเล็กลงหากต้องการใช้ฟีเจอร์เหล่านี้ คุณต้องดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
- เปิดใช้ข้อยกเว้นและ/หรือ RTTI อย่างชัดเจนในโมดูลหรือ
                
Application.mk(แนะนำ) - กำหนด 
APP_GNUSTL_FORCE_CPP_FEATURESเป็น'exceptions','rtti'หรือทั้ง 2 อย่างในApplication.mkดูรายละเอียดเพิ่มเติมได้ที่docs/APPLICATION-MK.html 
 - เปิดใช้ข้อยกเว้นและ/หรือ RTTI อย่างชัดเจนในโมดูลหรือ
                
 ndk-gdbทำงานได้อย่างถูกต้องเมื่อแอปพลิเคชันของคุณมีบริการส่วนตัว ที่ทำงานในกระบวนการอิสระ โดยจะแก้ไขข้อบกพร่องของกระบวนการแอปพลิเคชันหลักแทนกระบวนการแรกที่แสดงโดยpsซึ่งมักจะเป็นกระบวนการบริการ- แก้ไขข้อบกพร่องที่พบได้ยากซึ่ง NDK r7 จะไม่สนใจค่า 
LOCAL_ARM_MODEและจะคอมไพล์ไฟล์ต้นฉบับบางไฟล์ (แต่ไม่ใช่ทั้งหมด) เป็นคำสั่ง 32 บิตเสมอ STLport: รีเฟรชแหล่งที่มาให้ตรงกับเวอร์ชันแพลตฟอร์ม Android การอัปเดตนี้ แก้ไขข้อบกพร่องเล็กๆ น้อยๆ ดังนี้- การสร้างอินสแตนซ์แบบคงที่ของประเภทที่ไม่สมบูรณ์
 - แก้ไขการพิมพ์ผิดเล็กน้อย "==" กับ "="
 - ใช้ 
memmoveแทนmemcpyในstring::assign - เพิ่มการจัดการ 
IsNANorINF,IsINF,IsNegNANฯลฯ ให้ดียิ่งขึ้น 
ดูรายละเอียดทั้งหมดได้ที่บันทึกการเปลี่ยนแปลง
STLport: นำตัวเริ่มต้นแบบคงที่ที่ไม่จำเป็น 5 รายการออกจากไลบรารี- ไลบรารี GNU libstdc++ สำหรับ armeabi-v7a ถูกคอมไพล์สำหรับ armeabi โดยไม่ได้ตั้งใจ การเปลี่ยนแปลงนี้ไม่ส่งผลต่อความถูกต้อง แต่การใช้ ABI ที่ถูกต้องจะช่วยให้ประสิทธิภาพดีขึ้นเล็กน้อย
 - เราได้อัปเดตไลบรารีตัวช่วย 
cpu-featuresเพื่อรายงานฟีเจอร์ CPU x86 ที่ไม่บังคับ 3 รายการ (SSSE3,MOVBEและPOPCNT) ดูรายละเอียดเพิ่มเติมได้ที่docs/CPU-FEATURES.html docs/NDK-BUILD.htmlได้รับการอัปเดตให้กล่าวถึงNDK_APPLICATION_MKแทนNDK_APP_APPLICATION_MKเพื่อเลือกไฟล์Application.mkที่กำหนดเอง- Cygwin: 
ndk-buildจะไม่สร้างไฟล์ "NUL" ว่างในไดเรกทอรีปัจจุบันอีกต่อไปเมื่อเรียกใช้ - Cygwin: เพิ่มการตรวจหาการอ้างอิงอัตโนมัติที่ดีขึ้น ในเวอร์ชันก่อนหน้า ฟีเจอร์นี้
            ทำงานไม่ถูกต้องในกรณีต่อไปนี้
            
- เมื่อคำนำหน้าไดรฟ์ Cygwin ไม่ใช่ 
/cygdrive - เมื่อใช้การติดตั้งแบบไม่มีไดรฟ์ เช่น เมื่อ Cygwin แปลง
                
/homeเป็น\\server\subdirแทนที่จะเป็นC:\Some\Dir 
 - เมื่อคำนำหน้าไดรฟ์ Cygwin ไม่ใช่ 
 - Cygwin: 
ndk-buildไม่พยายามใช้เครื่องมือ Windows ดั้งเดิมภายใต้$NDK/prebuilt/windows/binกับ Cygwin และ/หรือ GNU Make บางเวอร์ชัน 
 - เมื่อแอปพลิเคชันของคุณใช้รันไทม์ GNU 
 
Android NDK r7 (พฤศจิกายน 2011)
NDK รุ่นนี้มีฟีเจอร์ใหม่ๆ ที่รองรับแพลตฟอร์ม Android 4.0 ด้วย รวมถึงการเพิ่มและการปรับปรุงอื่นๆ อีกมากมาย ดังนี้
- ฟีเจอร์ใหม่
 - 
        
- เพิ่ม API ของ NDK อย่างเป็นทางการสำหรับ Android 4.0 (API ระดับ 14) ซึ่งเพิ่มฟีเจอร์ดั้งเดิมต่อไปนี้ลงในแพลตฟอร์ม
            
- เพิ่ม API มัลติมีเดียเนทีฟตามมาตรฐาน Khronos Group OpenMAX AL 1.0.1
               ส่วนหัว 
<OMXAL/OpenMAXAL.h>และ<OMXAL/OpenMAXAL_Android.h>ใหม่ช่วยให้แอปพลิเคชันที่กำหนดเป้าหมาย API ระดับ 14 สามารถส่งออกมัลติมีเดียจากโค้ดเนทีฟได้โดยตรงโดยใช้อินเทอร์เฟซคิวบัฟเฟอร์ใหม่ที่เฉพาะเจาะจงสำหรับ Android ดูรายละเอียดเพิ่มเติมได้ที่docs/openmaxal/index.htmlและ http://www.khronos.org/openmax/ - อัปเดต API เสียงดั้งเดิมตามมาตรฐาน OpenSL ES 1.0.1 ของ Khronos Group
               API ระดับ 14 ช่วยให้คุณถอดรหัสเสียงที่บีบอัด (เช่น MP3, AAC,
              Vorbis) เป็น PCM ได้แล้ว ดูรายละเอียดเพิ่มเติมได้ที่ 
docs/opensles/index.htmlและ http://www.khronos.org/opensles/ 
 - เพิ่ม API มัลติมีเดียเนทีฟตามมาตรฐาน Khronos Group OpenMAX AL 1.0.1
               ส่วนหัว 
 - เพิ่มการรองรับ CCache หากต้องการเร่งการสร้างใหม่ขนาดใหญ่ ให้กำหนดตัวแปรสภาพแวดล้อม
          
NDK_CCACHEเป็นccache(หรือเส้นทางไปยังไบนารีccacheของคุณ) เมื่อประกาศแล้ว ระบบบิลด์ NDK จะใช้ CCache โดยอัตโนมัติ เมื่อคอมไพล์ไฟล์ต้นฉบับ เช่นexport NDK_CCACHE=ccache
หมายเหตุ: CCache ไม่ได้รวมอยู่ในการเผยแพร่ NDK ดังนั้นคุณต้องติดตั้งก่อนจึงจะใช้งานได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ CCache ได้ที่ http://ccache.samba.org
 - เพิ่มการรองรับการตั้งค่า 
APP_ABIเป็นallเพื่อระบุว่า คุณต้องการสร้างโมดูล NDK สำหรับ ABI ทั้งหมดที่ NDK รุ่นที่ระบุรองรับ ซึ่งหมายความว่าบรรทัดใดบรรทัดหนึ่งต่อไปนี้ในApplication.mkจะเทียบเท่ากับการเปิดตัวนี้APP_ABI := all APP_ABI := armeabi armeabi-v7a x86
วิธีนี้ยังใช้ได้หากคุณกำหนด
APP_ABIเมื่อเรียกใช้ndk-buildจากบรรทัดคำสั่ง ซึ่งเป็นวิธีที่รวดเร็วในการตรวจสอบว่าโปรเจ็กต์ สร้างสำหรับ ABI ที่รองรับทั้งหมดโดยไม่ต้องเปลี่ยนApplication.mk fileของโปรเจ็กต์ เช่นndk-build APP_ABI=all
 - เพิ่มตัวแปร 
LOCAL_CPP_FEATURESในAndroid.mkที่ ช่วยให้คุณประกาศได้ว่าโมดูลใช้ฟีเจอร์ C++ ใด (RTTI หรือ Exceptions) ซึ่งจะช่วยให้มั่นใจได้ว่าการลิงก์ขั้นสุดท้ายจะทํางานได้อย่างถูกต้องหากคุณมีโมดูลที่สร้างไว้ล่วงหน้าซึ่งขึ้นอยู่กับฟีเจอร์เหล่านี้ ดูรายละเอียดเพิ่มเติมได้ที่docs/ANDROID-MK.htmlและdocs/CPLUSPLUS-SUPPORT.html - เส้นทางที่สั้นลงไปยังไฟล์ต้นฉบับและไฟล์ออบเจ็กต์ที่ใช้ในคำสั่งบิลด์ เมื่อ
          เรียกใช้ 
$NDK/ndk-buildจากเส้นทางโปรเจ็กต์ เส้นทางไปยังไฟล์ต้นฉบับ ออบเจ็กต์ และไบนารีที่ส่งไปยังคำสั่งบิลด์จะสั้นลงอย่างมาก เนื่องจากมีการส่งเส้นทางที่สัมพันธ์กับไดเรกทอรีปัจจุบัน ซึ่งมีประโยชน์ เมื่อสร้างโปรเจ็กต์ที่มีไฟล์ต้นฉบับจำนวนมาก เพื่อหลีกเลี่ยงขีดจำกัดความยาวบรรทัดคำสั่งสูงสุด ที่ระบบปฏิบัติการโฮสต์รองรับ ลักษณะการทำงานจะไม่เปลี่ยนแปลง หากคุณเรียกใช้ndk-buildจากไดเรกทอรีย่อยของโครงสร้างโปรเจ็กต์ หรือหาก คุณกำหนดNDK_PROJECT_PATHให้ชี้ไปยังไดเรกทอรีที่เฉพาะเจาะจง 
 - เพิ่ม API ของ NDK อย่างเป็นทางการสำหรับ Android 4.0 (API ระดับ 14) ซึ่งเพิ่มฟีเจอร์ดั้งเดิมต่อไปนี้ลงในแพลตฟอร์ม
            
 - ฟีเจอร์ทดลอง
 - 
        ตอนนี้คุณสามารถสร้างไฟล์ต้นฉบับ NDK ใน Windows โดยไม่ต้องใช้ Cygwin ได้แล้วโดยเรียกใช้สคริปต์ 
ndk-build.cmdจากบรรทัดคำสั่งจากเส้นทางโปรเจ็กต์ สคริปต์จะใช้อาร์กิวเมนต์เดียวกันกับสคริปต์ndk-buildต้นฉบับ แพ็กเกจ Windows NDK มาพร้อมกับไบนารีที่สร้างไว้ล่วงหน้าของตัวเองสำหรับ GNU Make, Awk และเครื่องมืออื่นๆ ที่จำเป็นสำหรับการสร้าง คุณไม่จำเป็นต้องติดตั้งสิ่งอื่นใดเพื่อให้ได้ ระบบบิลด์ที่ใช้งานได้สำคัญ:
ndk-gdbใช้ใน Windows ไม่ได้ คุณจึงยังต้องใช้ Cygwin เพื่อแก้ไขข้อบกพร่องฟีเจอร์นี้ยังอยู่ระหว่างการทดลอง โปรดลองใช้และรายงานปัญหาในฐานข้อมูลข้อบกพร่องสาธารณะหรือฟอรัมสาธารณะ ตัวอย่างและการทดสอบหน่วยทั้งหมด ที่จัดส่งพร้อมกับ NDK จะคอมไพล์ด้วยฟีเจอร์นี้ได้สำเร็จ
 - การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
- ตอนนี้ระบบจะติดตั้งไลบรารีที่ใช้ร่วมกันที่นำเข้าไปยังตำแหน่งการติดตั้งเป้าหมาย (
libs/<abi>) โดยค่าเริ่มต้น หากไม่ได้กำหนดAPP_MODULESไว้ในApplication.mkเช่น หากโมดูลระดับบนสุดfooนำเข้าโมดูลbarระบบจะคัดลอกทั้งlibfoo.soและlibbar.soไปยังตำแหน่งการติดตั้ง ก่อนหน้านี้ระบบจะคัดลอกเฉพาะlibfoo.soเว้นแต่คุณจะระบุbarไว้ในAPP_MODULESด้วย หากคุณกำหนดAPP_MODULESอย่างชัดเจน ลักษณะการทำงานจะไม่เปลี่ยนแปลง ndk-gdbทํางานได้อย่างถูกต้องสําหรับกิจกรรมที่มีหลายหมวดหมู่ใน ตัวกรอง Intent หลัก- ตอนนี้การนำเข้าไลบรารีแบบคงที่จะเปลี่ยนผ่านได้อย่างถูกต้องแล้ว เช่น หากโมดูลระดับบนสุด
          
fooนำเข้าไลบรารีแบบคงที่barที่นำเข้าไลบรารีแบบคงที่zooตอนนี้libfoo.soจะลิงก์กับทั้งlibbar.aและlibzoo.a 
 - ตอนนี้ระบบจะติดตั้งไลบรารีที่ใช้ร่วมกันที่นำเข้าไปยังตำแหน่งการติดตั้งเป้าหมาย (
 - การเปลี่ยนแปลงอื่นๆ
 - 
        
docs/NATIVE-ACTIVITY.HTML: แก้ไขการพิมพ์ผิด ระดับ API ขั้นต่ำควรเป็น 9 ไม่ใช่ 8 สำหรับกิจกรรมดั้งเดิมdocs/STABLE-APIS.html: เพิ่มเอกสารที่ขาดหายไปซึ่งแสดงรายการ EGL เป็น API ที่เสถียรที่รองรับ โดยเริ่มตั้งแต่ API ระดับ 9download-toolchain-sources.sh: อัปเดตให้ดาวน์โหลดแหล่งที่มาของ เครื่องมือจาก android.googlesource.com ซึ่งเป็นตำแหน่งใหม่ของเซิร์ฟเวอร์ AOSP- เพิ่มรันไทม์การรองรับ C++ ใหม่ชื่อ 
gabi++ดูรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในdocs/CPLUSPLUS-SUPPORT.htmlที่อัปเดตแล้ว - เพิ่มรันไทม์การรองรับ C++ ใหม่ชื่อ 
gnustl_sharedซึ่งสอดคล้องกับ เวอร์ชันไลบรารีที่ใช้ร่วมกันของ GNU libstdc++ v3 (ใบอนุญาต GPLv3) ดูข้อมูลเพิ่มเติมได้ที่docs/CPLUSPLUS-SUPPORT.html - เพิ่มการรองรับ RTTI ในรันไทม์ C++ ของ STLport (ไม่รองรับข้อยกเว้น)
 - เพิ่มการรองรับนามสกุลไฟล์หลายรายการใน 
LOCAL_CPP_EXTENSIONตัวอย่างเช่น หากต้องการคอมไพล์ทั้งfoo.cppและbar.cxxเป็นแหล่งที่มาของ C++ ให้ประกาศดังนี้LOCAL_CPP_EXTENSION := .cpp .cxx
 - นำสัญลักษณ์ที่ส่งออกที่ไม่ต้องการจำนวนมากออกจากไลบรารีระบบที่ใช้ร่วมกันในเวลาลิงก์ ซึ่ง NDK จัดหาให้ วิธีนี้ช่วยให้มั่นใจได้ว่าโค้ดที่สร้างด้วย Toolchain แบบสแตนด์อโลน จะไม่เสี่ยงต่อการขึ้นอยู่กับสัญลักษณ์ ABI ที่ไม่เสถียรโดยไม่ตั้งใจ (เช่น สัญลักษณ์ libgcc.a ที่เปลี่ยนแปลงทุกครั้งที่มีการเปลี่ยน Toolchain ที่ใช้สร้างแพลตฟอร์ม)
 - รีเฟรชส่วนหัว EGL และ OpenGLES Khronos เพื่อรองรับส่วนขยายเพิ่มเติม โปรดทราบ
          ว่าการดำเนินการนี้ไม่ได้เปลี่ยน ABI ของ NDK สำหรับไลบรารีที่เกี่ยวข้อง
          เนื่องจากแอปพลิเคชันไคลเอ็นต์ต้องตรวจสอบส่วนขยายแต่ละรายการที่รันไทม์
            
ส่วนขยายที่พร้อมใช้งานจะขึ้นอยู่กับอุปกรณ์จริงและไดรเวอร์ GPU ไม่ใช่เวอร์ชันแพลตฟอร์มที่อุปกรณ์ใช้ การเปลี่ยนแปลงส่วนหัวเพียงแค่เพิ่มค่าคงที่และประเภทใหม่ เพื่อให้ใช้ส่วนขยายได้ง่ายขึ้นเมื่อมีการตรวจสอบด้วย
eglGetProcAddress()หรือglGetProcAddress()รายการต่อไปนี้อธิบายส่วนขยายที่รองรับใหม่- GLES 1.x
 - 
                
GL_OES_vertex_array_objectGL_OES_EGL_image_externalGL_APPLE_texture_2D_limited_npotGL_EXT_blend_minmaxGL_EXT_discard_framebufferGL_EXT_multi_draw_arraysGL_EXT_read_format_bgraGL_EXT_texture_filter_anisotropicGL_EXT_texture_format_BGRA8888GL_EXT_texture_lod_biasGL_IMG_read_formatGL_IMG_texture_compression_pvrtcGL_IMG_texture_env_enhanced_fixed_functionGL_IMG_user_clip_planeGL_IMG_multisampled_render_to_textureGL_NV_fenceGL_QCOM_driver_controlGL_QCOM_extended_getGL_QCOM_extended_get2GL_QCOM_perfmon_global_modeGL_QCOM_writeonly_renderingGL_QCOM_tiled_rendering
 - GLES 2.0
 - 
                
GL_OES_element_index_uintGL_OES_get_program_binaryGL_OES_mapbufferGL_OES_packed_depth_stencilGL_OES_texture_3DGL_OES_texture_floatGL_OES_texture_float_linearGL_OES_texture_half_float_linearGL_OES_texture_npotGL_OES_vertex_array_objectGL_OES_EGL_image_externalGL_AMD_program_binary_Z400GL_EXT_blend_minmaxGL_EXT_discard_framebufferGL_EXT_multi_draw_arraysGL_EXT_read_format_bgraGL_EXT_texture_format_BGRA8888GL_EXT_texture_compression_dxt1GL_IMG_program_binaryGL_IMG_read_formatGL_IMG_shader_binaryGL_IMG_texture_compression_pvrtcGL_IMG_multisampled_render_to_textureGL_NV_coverage_sampleGL_NV_depth_nonlinearGL_QCOM_extended_getGL_QCOM_extended_get2GL_QCOM_writeonly_renderingGL_QCOM_tiled_rendering
 - EGL
 - 
                
EGL_ANDROID_recordableEGL_NV_system_time
 
 
 
Android NDK r6b (สิงหาคม 2011)
NDK รุ่นนี้ไม่มีฟีเจอร์ใหม่เมื่อเทียบกับ r6 การเผยแพร่ r6b แก้ไขปัญหาต่อไปนี้ในการเผยแพร่ r6
- การแก้ไขข้อบกพร่องที่สำคัญ
 - 
          
- แก้ไขการสร้างเมื่อใช้ 
APP_ABI="armeabi x86"สำหรับ การสร้างแบบหลายสถาปัตยกรรม - แก้ไขตำแหน่งของไบนารี STLport ที่สร้างไว้ล่วงหน้าในแพ็กเกจการเผยแพร่ NDK ข้อบกพร่องในสคริปต์การจัดแพ็กเกจทำให้ไฟล์อยู่ในตำแหน่งที่ไม่ถูกต้อง
 - แก้ไขการใช้งาน 
atexit()ในไลบรารีที่ใช้ร่วมกันด้วย x86standalone toolchain - แก้ไขแล้ว 
make-standalone-toolchain.sh --arch=x86ซึ่งก่อนหน้านี้ คัดลอกไบนารี GNU libstdc++ ที่เหมาะสมไปยังตำแหน่งที่ถูกต้องไม่สำเร็จ - แก้ไขคำเตือนของ Linker ใน Toolchain แบบสแตนด์อโลนเกี่ยวกับการไม่มีคำจำกัดความและ
            ขนาดสำหรับสัญลักษณ์ 
__dso_handle(ARM เท่านั้น) - แก้ไขลำดับการรวม 
$(SYSROOT)/usr/includeสำหรับบิลด์ x86 ดูข้อมูลเพิ่มเติมได้ที่ข้อบกพร่อง - แก้ไขคำจำกัดความของ 
ptrdiff_tและsize_tใน ระบบที่เฉพาะเจาะจง x86 เมื่อใช้กับชุดเครื่องมือแบบสแตนด์อโลน x86 
 - แก้ไขการสร้างเมื่อใช้ 
 
Android NDK r6 (กรกฎาคม 2011)
NDK รุ่นนี้รองรับ x86 ABI และมีการเปลี่ยนแปลงเล็กๆ น้อยๆ อื่นๆ
      โปรดอ่านCHANGES.HTMLเอกสารที่รวมอยู่ในแพ็กเกจ NDK เพื่อดูข้อมูลโดยละเอียดเกี่ยวกับการเปลี่ยนแปลงในรุ่นนี้
      
- หมายเหตุทั่วไป
 - 
          
- เพิ่มการรองรับ ABI x86 ซึ่งช่วยให้คุณสร้างโค้ดเครื่อง
            ที่ทำงานในอุปกรณ์ Android ที่ใช้ x86 ที่เข้ากันได้ ฟีเจอร์หลักสำหรับ x86
            รวมถึง Toolchain, ส่วนหัวของระบบ, ไลบรารี และ
            การรองรับการแก้ไขข้อบกพร่องที่เฉพาะเจาะจงสำหรับ x86 ดูรายละเอียดทั้งหมดเกี่ยวกับการรองรับ x86 ได้ที่
docs/CPU-X86.htmlในแพ็กเกจ NDKโดยค่าเริ่มต้น ระบบจะสร้างโค้ดสำหรับอุปกรณ์ที่ใช้ ARM แต่คุณสามารถเพิ่ม x86 ลงใน คำจำกัดความ
APP_ABIในไฟล์Application.mkเพื่อสร้าง สำหรับแพลตฟอร์ม x86 ได้ เช่น บรรทัดต่อไปนี้จะสั่งให้ndk-buildสร้างโค้ดสำหรับ ABI ที่แตกต่างกัน 3 รายการAPP_ABI := armeabi armeabi-v7a x86
หากไม่ได้ใช้แหล่งที่มาของแอสเซมบลีที่ใช้ ARM คุณก็ไม่จำเป็นต้องแก้ไขไฟล์
Android.mkเพื่อสร้างโค้ดเครื่อง x86 - คุณสามารถสร้างเครื่องมือ x86 แบบสแตนด์อโลนได้โดยใช้ตัวเลือก
--toolchain=x86-4.4.3เมื่อเรียกใช้make-standalone-toolchain.shดูรายละเอียดเพิ่มเติมได้ที่docs/STANDALONE-TOOLCHAIN.html - เครื่องมือ 
ndk-stackใหม่ช่วยให้คุณแปล Stack Trace ในlogcatที่สร้างขึ้นโดยโค้ดเนทีฟได้ เครื่องมือจะแปล ที่อยู่คำสั่งเป็นรูปแบบที่อ่านได้ ซึ่งมีข้อมูลต่างๆ เช่น ฟังก์ชัน ไฟล์ต้นฉบับ และหมายเลขบรรทัดที่สอดคล้องกับแต่ละสแต็กเฟรม ดูข้อมูลเพิ่มเติมและตัวอย่างการใช้งานได้ที่docs/NDK-STACK.html 
 - เพิ่มการรองรับ ABI x86 ซึ่งช่วยให้คุณสร้างโค้ดเครื่อง
            ที่ทำงานในอุปกรณ์ Android ที่ใช้ x86 ที่เข้ากันได้ ฟีเจอร์หลักสำหรับ x86
            รวมถึง Toolchain, ส่วนหัวของระบบ, ไลบรารี และ
            การรองรับการแก้ไขข้อบกพร่องที่เฉพาะเจาะจงสำหรับ x86 ดูรายละเอียดทั้งหมดเกี่ยวกับการรองรับ x86 ได้ที่
 - การเปลี่ยนแปลงอื่นๆ
 arm-eabi-4.4.0ซึ่งเลิกใช้งานตั้งแต่ NDK r5 ถูกนำออกจาก การจัดจำหน่าย NDK แล้ว
Android NDK r5c (มิถุนายน 2011)
NDK รุ่นนี้ไม่มีฟีเจอร์ใหม่เมื่อเทียบกับ r5b การเผยแพร่ r5c แก้ไขปัญหาต่อไปนี้ในการเผยแพร่ r5b
- การแก้ไขข้อบกพร่องที่สำคัญ
 - 
        
ndk-build: แก้ไขข้อบกพร่องที่พบได้ยากซึ่งเกิดขึ้นเมื่อพยายามสร้างโปรเจ็กต์ที่แก้ไขข้อบกพร่องได้แบบขนาน- แก้ไขการพิมพ์ผิดที่ทำให้ 
LOCAL_WHOLE_STATIC_LIBRARIESทำงาน ไม่ถูกต้องกับเครื่องมือชุดใหม่ และเพิ่มเอกสารประกอบสำหรับปัญหานี้ในdocs/ANDROID-MK.html - แก้ไขข้อบกพร่องที่โค้ดที่ลิงก์กับ 
gnustl_staticขัดข้องเมื่อเรียกใช้ใน แพลตฟอร์มที่เก่ากว่า API ระดับ 8 (Android 2.2) ndk-gdb: แก้ไขข้อบกพร่องที่ทำให้เกิดข้อผิดพลาดในการแบ่งส่วนเมื่อแก้ไขข้อบกพร่องของอุปกรณ์ Android 3.0 ขึ้นไป<android/input.h>: ฟังก์ชัน 2 รายการที่เปิดตัวใน API ระดับ 9 (Android 2.3) ไม่ถูกต้องและได้รับการแก้ไขแล้ว แม้ว่าการดำเนินการนี้จะทำให้ API ต้นทางใช้งานไม่ได้ แต่ อินเทอร์เฟซไบนารีของระบบจะยังคงเดิม ฟังก์ชันที่ไม่ถูกต้องไม่มีพารามิเตอร์history_indexและคำจำกัดความที่ถูกต้องแสดงอยู่ด้านล่าง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);
- อัปเดตไบนารี ARM ของไลบรารี C สำหรับ API ระดับ 9 (Android 2.3) เพื่อให้แสดงฟังก์ชันใหม่ที่เพิ่มใน API ระดับดังกล่าวอย่างถูกต้องในเวลาลิงก์ (เช่น 
pthread_rwlock_init) 
 - การปรับปรุงและการแก้ไขเล็กน้อย
 - 
        
- ตอนนี้ระบบจะลิงก์ไฟล์ออบเจ็กต์ตามลำดับที่ปรากฏใน
          
LOCAL_SRC_FILESเสมอ ก่อนหน้านี้ไม่ได้เป็นเช่นนี้เนื่องจากระบบจัดกลุ่มไฟล์ตามนามสกุลของแหล่งที่มาแทน - เมื่อ 
import-moduleล้มเหลว ตอนนี้จะพิมพ์รายการไดเรกทอรีที่ ค้นหาแล้ว ซึ่งจะเป็นประโยชน์ในการตรวจสอบว่าคำจำกัดความNDK_MODULE_PATHที่ใช้โดยระบบบิลด์ถูกต้องหรือไม่ - เมื่อ 
import-moduleสำเร็จแล้ว ระบบจะพิมพ์ไดเรกทอรีที่พบโมดูล ไปยังบันทึก (ดูได้ด้วยNDK_LOG=1) - เพิ่มความเร็วในการสร้างแอปพลิเคชันที่แก้ไขข้อบกพร่องได้เมื่อมีไดเรกทอรีรวมจำนวนมากในโปรเจ็กต์
 ndk-gdb: ตรวจจับadb shellที่ล้มเหลวได้ดีขึ้นและปรับปรุง ข้อความแสดงข้อผิดพลาด<pthread.h>: แก้ไขคำจำกัดความของPTHREAD_RWLOCK_INITIALIZERสำหรับ API ระดับ 9 (Android 2.3) ขึ้นไป- แก้ไขปัญหาที่โมดูลสามารถนำเข้าตัวเองได้ ซึ่งส่งผลให้เกิดลูปที่ไม่มีที่สิ้นสุดใน GNU Make
 - แก้ไขข้อบกพร่องที่ทำให้บิลด์ล้มเหลวหากตั้งค่า 
LOCAL_ARM_NEONเป็น true (สะกดผิดในbuild/core/build-binary.mk) - แก้ไขข้อบกพร่องที่ทำให้คอมไพล์ไฟล์แอสเซมบลี 
.sไม่ได้ (ไฟล์.Sใช้งานได้) 
 - ตอนนี้ระบบจะลิงก์ไฟล์ออบเจ็กต์ตามลำดับที่ปรากฏใน
          
 
Android NDK r5b (มกราคม 2011)
NDK รุ่นนี้ไม่มีฟีเจอร์ใหม่เมื่อเทียบกับ r5 การเผยแพร่ r5b แก้ไขปัญหาต่อไปนี้ในรุ่น r5
- ไบนารี r5 ต้องใช้ glibc 2.11 แต่ไบนารี r5b สร้างขึ้นด้วย เครื่องมือเชนพิเศษที่กำหนดเป้าหมายเป็น glibc 2.7 ขึ้นไปแทน ตอนนี้ไบนารีของชุดเครื่องมือ Linux ทำงานได้ใน Ubuntu 8.04 ขึ้นไป
 - แก้ไขข้อบกพร่องของคอมไพเลอร์ใน Toolchain arm-linux-androideabi-4.4.3 ไบนารีก่อนหน้านี้สร้างลำดับคำสั่ง Thumb ที่ไม่ถูกต้องเมื่อ จัดการกับอักขระที่ลงนาม
 - เพิ่มเอกสารที่ขาดหายไปสำหรับค่า "gnustl_static" ของ APP_STL ซึ่งช่วยให้คุณลิงก์กับ GNU libstdc++ เวอร์ชันไลบรารีแบบคงที่ได้ the
 - แก้ไขปัญหาต่อไปนี้
ndk-build- ข้อบกพร่องที่สร้างไฟล์การอ้างอิงที่ไม่สอดคล้องกันเมื่อเกิดข้อผิดพลาดในการคอมไพล์ใน Windows ซึ่งทำให้ไม่สามารถสร้างอย่างถูกต้องหลังจาก แก้ไขข้อผิดพลาดในซอร์สโค้ดแล้ว
 - ข้อบกพร่องเฉพาะของ Cygwin ซึ่งการใช้เส้นทางที่สั้นมากสำหรับการติดตั้ง Android NDK หรือเส้นทางโปรเจ็กต์ทำให้เกิดการสร้างไฟล์ทรัพยากร Dependency ที่ไม่ถูกต้อง ซึ่งทำให้การสร้างแบบเพิ่มทีละรายการ เป็นไปไม่ได้
 - การพิมพ์ผิดที่ทำให้ไลบรารี cpufeatures ทำงานไม่ถูกต้อง ด้วยชุดเครื่องมือ NDK ใหม่
 - การสร้างใน Cygwin จะเร็วกว่าเนื่องจากหลีกเลี่ยงการเรียกใช้ 
cygpath -mจาก GNU Make สำหรับทุกไฟล์ต้นฉบับหรือออบเจ็กต์ ซึ่งทำให้เกิดปัญหา กับโครงสร้างแหล่งที่มาขนาดใหญ่มาก ในกรณีที่การดำเนินการนี้ไม่ทำงานอย่างถูกต้อง ให้กำหนดNDK_USE_CYGPATH=1ในสภาพแวดล้อม ของคุณเพื่อใช้cygpath -mอีกครั้ง - ตอนนี้การติดตั้ง Cygwin จะแจ้งให้ผู้ใช้ทราบเกี่ยวกับเส้นทางการติดตั้งที่ไม่ถูกต้องซึ่ง มีช่องว่าง ก่อนหน้านี้ เส้นทางที่ไม่ถูกต้อง จะแสดงข้อผิดพลาดที่ระบุว่า GNU Make มีเวอร์ชันไม่ถูกต้อง แม้ว่าจะมีการติดตั้งเวอร์ชันที่ถูกต้องแล้วก็ตาม
 
 - แก้ไขการสะกดคำผิดที่ทำให้ตัวแปรสภาพแวดล้อม 
NDK_MODULE_PATHทำงานไม่ถูกต้องเมื่อมีไดเรกทอรีหลายรายการคั่นด้วยโคลอน prebuilt-common.shสคริปต์มีการแก้ไขเพื่อตรวจสอบคอมไพเลอร์สำหรับโค้ดเครื่องที่สร้างขึ้นแบบ 64 บิต แทนที่จะอาศัยแท็กโฮสต์ ซึ่ง ช่วยให้ชุดเครื่องมือ 32 บิตสร้างใหม่ได้อย่างถูกต้องใน Snow Leopard ตอนนี้สคริปต์การสร้างเครื่องมือเชนใหม่ ยังรองรับ การใช้เครื่องมือเชนโฮสต์ 32 บิตด้วย- เพิ่มประกาศที่ขาดหายไปสำหรับ 
INET_ADDRSTRLENลงใน<netinet/in.h>แล้ว - เพิ่มประกาศที่ขาดหายไปสำหรับ 
IN6_IS_ADDR_MC_NODELOCALและIN6_IS_ADDR_MC_GLOBALลงใน<netinet/in6.h>แล้ว - มีการแทนที่ 'asm' ด้วย '__asm__' ใน 
<asm/byteorder.h>เพื่อให้คอมไพล์กับ-std=c99ได้ 
Android NDK r5 (ธันวาคม 2010)
การเปิดตัว NDK เวอร์ชันนี้มี API ใหม่ๆ มากมาย ซึ่งส่วนใหญ่เปิดตัวเพื่อ
         รองรับการพัฒนาเกมและแอปพลิเคชันที่คล้ายกันซึ่งใช้โค้ดแบบเนทีฟอย่างกว้างขวาง
 การใช้ API ช่วยให้นักพัฒนาแอปเข้าถึงเหตุการณ์ เสียง
         กราฟิกและการจัดการหน้าต่าง เนื้อหา และพื้นที่เก็บข้อมูลได้โดยตรง นักพัฒนาแอปยังสามารถใช้
         วงจรแอปพลิเคชัน Android ในโค้ดแบบเนทีฟได้ด้วยความช่วยเหลือจาก
         NativeActivity คลาสใหม่ โปรดอ่านข้อมูลโดยละเอียดที่อธิบายการเปลี่ยนแปลง
ในรุ่นนี้
         ในCHANGES.HTMLเอกสารที่รวมอยู่ในแพ็กเกจ NDK ที่ดาวน์โหลด
      
- หมายเหตุทั่วไป
 - 
          
- เพิ่มการรองรับกิจกรรมเนทีฟ ซึ่งช่วยให้คุณใช้ วงจรแอปพลิเคชัน Android ในโค้ดเนทีฟได้
 - เพิ่มการรองรับเนทีฟสำหรับรายการต่อไปนี้
              
- ระบบย่อยอินพุต (เช่น แป้นพิมพ์และหน้าจอสัมผัส)
 - การเข้าถึงข้อมูลเซ็นเซอร์ (ตัวตรวจวัดความเร่ง เข็มทิศ เครื่องวัดการหมุน ฯลฯ)
 - API ของลูปเหตุการณ์เพื่อรอสิ่งต่างๆ เช่น เหตุการณ์อินพุตและเซ็นเซอร์
 - ระบบย่อยของหน้าต่างและพื้นผิว
 - API เสียงที่อิงตามมาตรฐาน OpenSL ES ซึ่งรองรับการเล่นและการบันทึก รวมถึงการควบคุมเอฟเฟกต์เสียงของแพลตฟอร์ม
 - สิทธิ์เข้าถึงเนื้อหาที่แพ็กเกจไว้ในไฟล์ 
.apk 
 - รวมถึงเครื่องมือใหม่ (อิงตาม GCC 4.4.3) ซึ่งสร้างโค้ดได้ดีขึ้น และตอนนี้ยังใช้เป็นคอมไพเลอร์ข้ามแบบสแตนด์อโลนได้ด้วย สำหรับผู้ที่ต้องการสร้างสิ่งต่างๆ ด้วย 
./configure && makeดูรายละเอียดได้ที่ docs/STANDALONE-TOOLCHAIN.html ไบนารีสำหรับ GCC 4.4.0 ยังคง มีให้ แต่ไบนารี 4.2.1 ถูกนำออกแล้ว - เพิ่มการรองรับไลบรารีแบบคงที่และไลบรารีที่แชร์ที่สร้างไว้ล่วงหน้า (docs/PREBUILTS.html) รวมถึง module exports และ imports เพื่อให้การแชร์และการนำโมดูลของบุคคลที่สามกลับมาใช้ซ้ำง่ายขึ้นมาก (docs/IMPORT-MODULE.html อธิบายเหตุผล)
 - มี C++ STL เริ่มต้น (อิงตาม STLport) เป็นโมดูลตัวช่วย โดยสามารถใช้เป็นไลบรารีแบบคงที่หรือแบบใช้ร่วมกัน (รายละเอียดและตัวอย่างการใช้งานอยู่ใน sources/android/stlport/README) นอกจากนี้ ยังมีไบนารีที่สร้างไว้ล่วงหน้า สำหรับ STLport (แบบคงที่หรือแบบใช้ร่วมกัน) และ GNU libstdc++ (แบบคงที่เท่านั้น) ให้ด้วย หากคุณเลือก คอมไพล์กับไลบรารีเหล่านั้นแทนการใช้งาน STL ของ C++ เริ่มต้น การติดตั้งใช้งาน STL เริ่มต้นไม่รองรับข้อยกเว้น C++ และ RTTI ดูข้อมูลเพิ่มเติมได้ที่ docs/CPLUSPLUS-SUPPORT.HTML
 - รวมถึงการปรับปรุง
cpufeaturesไลบรารีตัวช่วยที่ปรับปรุง การรายงาน ประเภท CPU (ก่อนหน้านี้อุปกรณ์บางเครื่องรายงาน CPU เป็น ARMv7 ทั้งที่จริงแล้วเป็น ARMv6) เราขอแนะนำให้นักพัฒนาแอปที่ใช้ไลบรารีนี้สร้างแอปพลิเคชันใหม่ แล้วอัปโหลดไปยัง Google Play เพื่อรับประโยชน์จากการปรับปรุง - เพิ่มไลบรารี EGL ที่ช่วยให้คุณสร้างและจัดการพื้นผิวและบริการ OpenGL ES ได้
 - เพิ่มแอปพลิเคชันตัวอย่างใหม่ 
native-plasmaและnative-activityเพื่อแสดงวิธีเขียนกิจกรรมเนทีฟ - รวมการแก้ไขข้อบกพร่องและการปรับปรุงเล็กๆ อื่นๆ มากมาย ดูรายการการเปลี่ยนแปลงโดยละเอียดเพิ่มเติมได้ที่ docs/CHANGES.html
 
 
Android NDK r4b (มิถุนายน 2010)
- หมายเหตุเกี่ยวกับ NDK r4b
 - 
          
รวมถึงการแก้ไขปัญหาหลายอย่างในสคริปต์การสร้างและการแก้ไขข้อบกพร่องของ NDK หากคุณใช้ NDK r4 เราขอแนะนำให้ดาวน์โหลดบิลด์ NDK r4b อ่านข้อมูลโดยละเอียดเกี่ยวกับการเปลี่ยนแปลงในรุ่นนี้ได้ในเอกสาร CHANGES.TXT ที่รวมอยู่ในแพ็กเกจ NDK ที่ดาวน์โหลด
 
- หมายเหตุทั่วไป
 - 
          
- มีระบบบิลด์ที่เรียบง่ายผ่านคำสั่ง 
ndk-buildbuild ใหม่ - เพิ่มการรองรับการแก้ไขข้อบกพร่องแบบเนทีฟของโค้ดแมชชีนที่สร้างขึ้นในอุปกรณ์ที่ใช้งานจริงได้อย่างง่ายดายผ่านคำสั่ง 
ndk-gdbใหม่ - เพิ่ม ABI ใหม่เฉพาะ Android สำหรับสถาปัตยกรรม CPU ที่ใช้ ARM
            
armeabi-v7aABI ใหม่จะขยายarmeabiABI ที่มีอยู่ให้ รวมส่วนขยายชุดคำสั่ง CPU ต่อไปนี้- คำสั่ง Thumb-2
 - คำสั่ง FPU ของฮาร์ดแวร์ VFP (VFPv3-D16)
 - รองรับฟังก์ชัน ARM Advanced SIMD (NEON) GCC intrinsics และ VFPv3-D32 โดยไม่บังคับ รองรับโดยอุปกรณ์ต่างๆ เช่น Verizon Droid by Motorola, Google Nexus One และ อื่นๆ
 
 - เพิ่ม
cpufeaturesไลบรารีแบบคงที่ (พร้อมแหล่งที่มา) ใหม่ที่ช่วยให้แอปตรวจหาฟีเจอร์ CPU ของอุปกรณ์โฮสต์ได้ขณะรันไทม์ โดยเฉพาะอย่างยิ่ง แอปพลิเคชันสามารถ ตรวจสอบการรองรับ ARMv7-A รวมถึงการรองรับ VFPv3-D32 และ NEON จากนั้นระบุเส้นทางโค้ดแยกต่างหาก ตามที่จำเป็น - เพิ่มแอปพลิเคชันตัวอย่าง 
hello-neonซึ่งแสดงวิธีใช้ไลบรารีcpufeaturesเพื่อตรวจสอบฟีเจอร์ CPU แล้วระบุเส้นทางโค้ดที่เพิ่มประสิทธิภาพ โดยใช้ NEON Intrinsics หาก CPU รองรับ - ช่วยให้คุณสร้างโค้ดแมชชีนสำหรับชุดคำสั่งที่ NDK รองรับอย่างใดอย่างหนึ่งหรือทั้ง 2 ชุด
            ได้ เช่น คุณสามารถสร้างสถาปัตยกรรมทั้ง ARMv5 และ ARMv7-A ได้พร้อมกัน และจัดเก็บทุกอย่างไว้ใน
.apkสุดท้ายของแอปพลิเคชัน - Google Play จะกรองแอปพลิเคชันตามข้อมูลชุดคำสั่งที่รวมอยู่ในแอปพลิเคชันของคุณ เพื่อให้มั่นใจว่าแอปพลิเคชันจะพร้อมให้บริการแก่ผู้ใช้เฉพาะในกรณีที่อุปกรณ์ของผู้ใช้ สามารถเรียกใช้แอปพลิเคชันได้เท่านั้น โดยคุณไม่ต้องดำเนินการใดๆ เพื่อเปิดใช้การกรอง นอกจากนี้ ระบบ Android เองยังตรวจสอบแอปพลิเคชันของคุณในเวลาติดตั้ง และอนุญาตให้ติดตั้งต่อไปได้ก็ต่อเมื่อแอปพลิเคชันมีไลบรารีที่คอมไพล์สำหรับสถาปัตยกรรม CPU ของอุปกรณ์
 - เพิ่มการรองรับ Android 2.2 รวมถึง API ใหม่ที่เสถียรสำหรับการเข้าถึงบัฟเฟอร์พิกเซล
            ของออบเจ็กต์ 
Bitmapจากโค้ดเนทีฟ 
 - มีระบบบิลด์ที่เรียบง่ายผ่านคำสั่ง 
 
Android NDK r3 (มีนาคม 2010)
- หมายเหตุทั่วไป
 - 
          
- เพิ่มการรองรับไลบรารีเนทีฟ OpenGL ES 2.0
 - เพิ่มแอปพลิเคชันตัวอย่าง
hello-gl2ที่แสดงการใช้ OpenGL ES 2.0 Vertex และ Fragment Shader - ไบนารีของ Toolchain ได้รับการรีเฟรชสำหรับการเผยแพร่นี้ด้วย GCC 4.4.0 ซึ่ง น่าจะสร้างโค้ดแมชชีนที่มีขนาดกะทัดรัดและมีประสิทธิภาพมากกว่าโค้ดก่อนหน้า (4.2.1) เล็กน้อย นอกจากนี้ NDK ยังมีไบนารี 4.2.1 ให้คุณใช้เพื่อสร้างโค้ดเครื่องได้ด้วย (ไม่บังคับ)
 
 
Android NDK r2 (กันยายน 2009)
เปิดตัวครั้งแรกในชื่อ "Android 1.6 NDK, Release 1"
- หมายเหตุทั่วไป
 - 
          
- เพิ่มการรองรับไลบรารีเนทีฟ OpenGL ES 1.1
 - เพิ่มแอปพลิเคชันตัวอย่าง 
san-angelesที่แสดงผลกราฟิก 3 มิติ ผ่าน API ของ OpenGL ES ดั้งเดิม ขณะจัดการวงจรของกิจกรรมด้วยออบเจ็กต์GLSurfaceView 
 
Android NDK r1 (มิถุนายน 2009)
เดิมเปิดตัวเป็น "Android 1.5 NDK, รุ่นที่ 1"
- หมายเหตุทั่วไป
 - 
          
- รวมถึงการรองรับคอมไพเลอร์ (GCC) สำหรับคำสั่ง ARMv5TE รวมถึงคำสั่ง Thumb-1
 - รวมถึงส่วนหัวของระบบสำหรับ Native API ที่เสถียร เอกสารประกอบ และแอปพลิเคชันตัวอย่าง