数据API 案例 开发者 关于
掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

介绍Android原生开发工具包r14

Android NDK r14

现在,可以下载最新版本 Android 原生开发工具包 (NDK)——Android NDK r14。也可以通过 Android Studio 在 SDK 管理器中下载此版本。

那么 r14 有哪些新增功能?可以在此处查看完整的变更日志,而其中最突出的功能包括如下:

  • 将所有平台标头更新为统一的标头(下文详细介绍)
  • 现在可在 Darwin 和 Linux 上对 Clang 进行链接时优化 (LTO)
  • 现已更新 libc++。您现在可以将 thread_local  用于重要的析构函数统计(仅限 Clang)
  • RenderScript 回归!

统一标头

我们彻底重构了在 NDK 中发布平台标头文件的方式。现在,不再是每个目标 API 级别单独设置一组标头,而是共同使用一组统一的标头。在这些标头中,通过 #if __ANDROID_API__ >= __ANDROID_API_FOO__ 预处理器指令保证 API 可用于每个 Android 平台。

之前的方法依靠的是定期捕获的平台标头快照。这意味着,在过去,任何时候我们修复仅与某个标头有关的错误时,除了偶尔的向后移植外,此修复仅在最新版本中可用。现在,错误修复可用于任何 NDK API 级别。

除了错误修复之外,这还意味着您可以访问每个目标版本中最新的 Linux UAPI 标头。对于移植现有 Linux 代码(尤其底层代码)的用户而言,这最为重要。需要记住的重要的一点是:仅仅具有标头,并不意味着您运行的设备的内核版本足够新,可支持所有系统调用。一如既往,系统调用可能返回 ENOSYS。

除了 Linux 标头外,您还可以获取 OpenGL 和 OpenSLES 等的最新标头。当您的目标 API 级别版本较旧时,可以更轻松地、有条件地使用新 API。现在,尽管在 KitKat 发布之前该库不可用,但可以在 Ice Cream Sandwich 中访问 GLES3 标头。您仍然需要通过 dlopen/dlsym 使用所有 API 调用,但您至少可以访问调用这些函数所需的所有常量和 #defines。

请注意,从 NDK r16 开始,我们将移除旧版标头,因此,越早提交错误,过渡将会越顺利。

注意

在第三方标头中,不存在像 OpenGL 中那样的 API #ifdef Guard。在这些情况下,如果您使用的 API 不适用于目标 API 级别,将出现链接时错误(未定义的引用)而非编译时错误。

目前使用 GCC 的独立工具链不支持开箱即用(未来也不支持)。要使用 GCC,请在编译时传递 -D__ANDROID_API__=$API。

在您的构建中启用统一标头

为了实现旧版标头向统一标头的顺利过渡,我们默认不启用新标头,不过它在 r15 中默认为启用。您选择如何使用统一标头,取决于您的构建系统。

ndk-build

在 Application.mk 中:

    APP_UNIFIED_HEADERS := true

您也可以像下面这样从命令行设置此属性:

    $ ndk-build APP_UNIFIED_HEADERS=true

如果您通过 Gradle 将 ndk-build 用于 externalNativeBuild,请在 build.gradle 中指定以下配置设置:

    android {
      ...
      defaultConfig {
        ...
        externalNativeBuild {
          ndkBuild {
            ...
            arguments "APP_UNIFIED_HEADERS=true"
          }
        }
      }
    }

CMake

在配置您的版本时,设置 ANDROID_UNIFIED_HEADERS=ON。常用的设置方式是:使用 cmake -DANDROID_UNIFIED_HEADERS=ON $OTHER_ARGS 来调用 CMake。

如果您通过 Gradle 将 CMake 用于 externalNativeBuild,您可以使用:

    android {
      ...
      defaultConfig {
        ...
        externalNativeBuild {
          cmake {
            ...
            arguments "-DANDROID_UNIFIED_HEADERS=ON"
          }
        }
      }
    }

独立工具链

在创建独立工具链时,传递 --unified-headers。请注意,此选项目前不适用于旧版脚本 make-standalone-toolchain.sh,而仅适用于 make_standalone_toolchain.py。

实验性 Gradle 插件:

即将推出!敬请在此处关注最新消息。

自定义构建系统?

我们如您所愿!可以在此处找到有关向构建系统添加统一标头支持功能的说明。

有关统一标头的附加信息,请参阅我们的文档跟踪错误。 如果您希望下载后续版本,可在主分支中找到最新的文档版本。

0.gif

原文来自:谷歌开发者

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务
介绍Android原生开发工具包r14
发布:2017-04-13

Android NDK r14

现在,可以下载最新版本 Android 原生开发工具包 (NDK)——Android NDK r14。也可以通过 Android Studio 在 SDK 管理器中下载此版本。

那么 r14 有哪些新增功能?可以在此处查看完整的变更日志,而其中最突出的功能包括如下:

  • 将所有平台标头更新为统一的标头(下文详细介绍)
  • 现在可在 Darwin 和 Linux 上对 Clang 进行链接时优化 (LTO)
  • 现已更新 libc++。您现在可以将 thread_local  用于重要的析构函数统计(仅限 Clang)
  • RenderScript 回归!

统一标头

我们彻底重构了在 NDK 中发布平台标头文件的方式。现在,不再是每个目标 API 级别单独设置一组标头,而是共同使用一组统一的标头。在这些标头中,通过 #if __ANDROID_API__ >= __ANDROID_API_FOO__ 预处理器指令保证 API 可用于每个 Android 平台。

之前的方法依靠的是定期捕获的平台标头快照。这意味着,在过去,任何时候我们修复仅与某个标头有关的错误时,除了偶尔的向后移植外,此修复仅在最新版本中可用。现在,错误修复可用于任何 NDK API 级别。

除了错误修复之外,这还意味着您可以访问每个目标版本中最新的 Linux UAPI 标头。对于移植现有 Linux 代码(尤其底层代码)的用户而言,这最为重要。需要记住的重要的一点是:仅仅具有标头,并不意味着您运行的设备的内核版本足够新,可支持所有系统调用。一如既往,系统调用可能返回 ENOSYS。

除了 Linux 标头外,您还可以获取 OpenGL 和 OpenSLES 等的最新标头。当您的目标 API 级别版本较旧时,可以更轻松地、有条件地使用新 API。现在,尽管在 KitKat 发布之前该库不可用,但可以在 Ice Cream Sandwich 中访问 GLES3 标头。您仍然需要通过 dlopen/dlsym 使用所有 API 调用,但您至少可以访问调用这些函数所需的所有常量和 #defines。

请注意,从 NDK r16 开始,我们将移除旧版标头,因此,越早提交错误,过渡将会越顺利。

注意

在第三方标头中,不存在像 OpenGL 中那样的 API #ifdef Guard。在这些情况下,如果您使用的 API 不适用于目标 API 级别,将出现链接时错误(未定义的引用)而非编译时错误。

目前使用 GCC 的独立工具链不支持开箱即用(未来也不支持)。要使用 GCC,请在编译时传递 -D__ANDROID_API__=$API。

在您的构建中启用统一标头

为了实现旧版标头向统一标头的顺利过渡,我们默认不启用新标头,不过它在 r15 中默认为启用。您选择如何使用统一标头,取决于您的构建系统。

ndk-build

在 Application.mk 中:

    APP_UNIFIED_HEADERS := true

您也可以像下面这样从命令行设置此属性:

    $ ndk-build APP_UNIFIED_HEADERS=true

如果您通过 Gradle 将 ndk-build 用于 externalNativeBuild,请在 build.gradle 中指定以下配置设置:

    android {
      ...
      defaultConfig {
        ...
        externalNativeBuild {
          ndkBuild {
            ...
            arguments "APP_UNIFIED_HEADERS=true"
          }
        }
      }
    }

CMake

在配置您的版本时,设置 ANDROID_UNIFIED_HEADERS=ON。常用的设置方式是:使用 cmake -DANDROID_UNIFIED_HEADERS=ON $OTHER_ARGS 来调用 CMake。

如果您通过 Gradle 将 CMake 用于 externalNativeBuild,您可以使用:

    android {
      ...
      defaultConfig {
        ...
        externalNativeBuild {
          cmake {
            ...
            arguments "-DANDROID_UNIFIED_HEADERS=ON"
          }
        }
      }
    }

独立工具链

在创建独立工具链时,传递 --unified-headers。请注意,此选项目前不适用于旧版脚本 make-standalone-toolchain.sh,而仅适用于 make_standalone_toolchain.py。

实验性 Gradle 插件:

即将推出!敬请在此处关注最新消息。

自定义构建系统?

我们如您所愿!可以在此处找到有关向构建系统添加统一标头支持功能的说明。

有关统一标头的附加信息,请参阅我们的文档跟踪错误。 如果您希望下载后续版本,可在主分支中找到最新的文档版本。

0.gif

原文来自:谷歌开发者

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

选择想要的接口, 看看能免费获取多少次调用 选择(单选)或填写想要的接口
  • 短信API服务
  • 银行卡四元素校验
  • 身份证实名认证
  • 手机状态查询
  • 三网手机实名制认证(简版)
  • 身份证OCR识别
  • 风险信息查询
  • 企业工商信息
短信API服务
  • 短信API服务
  • 银行卡四元素校验
  • 身份证实名认证
  • 手机状态查询
  • 三网手机实名制认证(简版)
  • 身份证OCR识别
  • 风险信息查询
  • 企业工商信息
  • 确定
选择您的身份
请选择寻找接口的目的
预计每月调用量
请选择预计每月调用量
产品研发的阶段
请选择产品研发的阶段
×

前往领取
×
企业用户认证,
可获得1000次免费调用
注册登录 > 企业账户认证 > 领取接口包
企业用户认证领取接口包 立即领取
× 企业用户认证,
可获得1000次免费调用,立即领取>
数 据 驱 动 未 来
Data Drives The Future