Google发布最新Android NDK r21工具集测试版

让开发者可以在Android设备中执行C/C++程序的NDK(Native Development Kit)开发工具集,发布了最新的r21测试版本,不只更新了工具链以及系统需求,也改进默认项目提高安全与性能表现,Google也提到将会每年发布长期支持版本,而NDK r21则是第一个长期支持版本。

最新的Android NDK版本更新GNU Make到4.2版,该版本提供–output-sync功能,可避免输出与错误消息交错显示,现在ndk-build会默认激活此功能,而GNU Make版本更新也修正了在Windows上的CreateProcess错误。GDB也更新到了8.3版,修正英特尔CPU调试的错误。

LLVM也有更新,所有组件包括Clang和lld等,采用了新2019年7月10日之前的主分支r365631,libc++则使用更新的版本r369764,除了修复许多旧版本的bug之外,最重要的修正是在Windows上使用多线程连接时,LLD不会再失去回应。其他更新还有OpenMP现在可以当作动态函数库使用,且由于Google改进了驱动程序,每个构建系统需要的编译配置数量也大幅降低。

Android NDK r21在默认情况下,静态程序代码分析工具Fortify会在使用ndk-build或是CMake工具链文件的时候激活,Fortify可以对标准函数库进行额外的检查,更快地发现bug,减少安全问题的发生。另外,这个NDK版本有新的最低系统需求,继Android Studio和SDK之后,NDK也不再支持32进制Windows,Linux用户则必须至少使用glibc 2.17或更高版本。

Google现在为开发者提供支持时间长达一年的长期支持版本,针对需要稳定性但是不需要新功能的用户,长期支持版本会有较长的Beta测试周期,并且在隔年长期支持版本发布之前,能够持续获得错误修正,发布的时间会落在一年中的第四季。非长期支持版本,发布的节奏会跟目前的发布流程一样,主要是新功能集的发布,也只会对重要工具链进行错误修补。

而针对Arm程序代码的构建,现在默认使用Arm高端SIMD架构扩展Neon,Google提到,旧版本会在特定条件下使用minSdkVersion,但考量目前只有极少数的设备不支持Neon,因此现在无条件默认激活,32进制的Arm设备因此将会获得性能上的改进,开发者仍然可以在不支持Neon的设备上应用程序禁用Neon。