Android开发工具链ppt,介绍Android原生开发工具包r14
原标题:介绍Android原生开发工具包r14
现在,可以下载最新版本 Android 原生开发工具包 (NDK)——Android NDK r14。也可以通过 Android Studio 在 SDK 管理器中下载此版本:
https://developer.android.google.cn/ndk/downloads/index.html
那么 r14 有哪些新增功能?可以在此处查看完整的变更日志:
https://github.com/android-ndk/ndk/wiki/Changelog-r14
而其中最突出的功能包括如下:
将所有平台标头更新为统一的标头(下文详细介绍)
现在可在 Darwin 和 Linux 上对 Clang 进行链接时优化 (LTO)
现已更新 libc++。您现在可以将 thread_local 用于重要的析构函数统计(仅限 Clang)
Render 回归!
统一标头
我们彻底重构了在 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 插件”和“自定义构建系统”)及查看文内所有链接,请点击文末“阅读原文”。
推荐阅读:
责任编辑:
Android开发工具链ppt,介绍Android原生开发工具包r14相关推荐
- 基于AUTOSAR开发工具链的AUTOSAR软件实战开发---基于工具链AUTOSAR架构的开发流程
前一节简单介绍了CP AUTOSAR及它的分层结构,本节介绍基于工具链AUTOSAR架构的开发流程,对于多数使用AUTOSAR架构开发汽车电子软件的工程师而言,主要关注的还是如何将AUTOSAR架构应 ...
- 基于AUTOSAR开发工具链的AUTOSAR软件实战开发-软件架构设计(二)
软件功能模块划分 按照软件功能需求和功能安全等级分割软件功能组件,一般ECU通用功能为例,模块划分先按照功能划分,前面我们提到,对于基于标准AUTOSAR开发,当前无论是整车厂还是供应商,其底层开发均 ...
- 基于AUTOSAR开发工具链的AUTOSAR软件实战开发-软件架构设计(一)
按照需求划分软件功能模块和需求映射 前面介绍了基于工具链的开发流程,本节开始将针对开发流程中的各个环节展开详细介绍,首先从软件架构开始介绍,软件架构的前置输入是软件需求,当软件需求下发后,要制定相应的 ...
- 基于AUTOSAR开发工具链的AUTOSAR软件实战开发
系列文章目录 前言 AUTOSAR架构概述 基于工具链AUTOSAR架构的开发流程 软件架构设计过程 ARXML开发 基于ARXML的MATLAB/Simulink模型代码开发 前言 AUTOSAR架 ...
- android开发工具哪个好_小程序开发工具怎么用?哪个好用?
想要开发微信小程序,在没有太多资金找外包团队定制.自建团队开发时,就需要你自己通过小程序开发工具来生成小程序了.现在各种开发工具很多,到底小程序开发工具有哪些?这些微信小程序开发工具哪个好用?根据我的 ...
- Xamarin Anroid开发教程之Anroid开发工具及应用介绍
Xamarin Anroid开发教程之Anroid开发工具及应用介绍 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热.但是在Andro ...
- RemObjects Elements多用途软件开发工具链
RemObjects Elements多用途软件开发工具链 RemObjects Elements是一个现代化的多用途软件开发工具链.它支持六种流行的编程语言:Oxygene(Object Pasca ...
- 【Windows】办公+开发工具链整理
如果你是Win10/Win11专业版用户,请继续往下看: [Windows]办公+开发工具链整理 办公 小工具 开发 办公 先放张图-- TIM:简约版QQ. 优点:占用空间小,且有通讯录.消息.我的 ...
- 开发工具链(国内项目)(持续更)
开发工具链(国内项目) 前端开发工具: sublime(轻便) Webstorm(全面,包括各种插件,对node支持较好,但是缺点是占用内存较大) VSCode(免费,而且比webStorm轻,占用内 ...
最新文章
- UPC2710T放大电路功率增益测试
- Thymeleaf 常用属性
- python图片识别-Python+Opencv识别两张相似图片
- warpPerspective函数
- Windows下C/C++获取当前系统时间
- Centos7 上安装mysql遇上的问题:mysql无法正常启动
- [Computation]集合、关系、语言
- 基于Asp.Net Core MVC和AdminLTE的响应式管理后台之侧边栏处理
- 卷积神经网络——第一周 卷积神经网络基础——第一部分
- Leetcode每日一题:659.split-array-into-consecutive-subsequences(分割数组为连续子序列)
- Python实现淘宝秒杀聚划算自动提醒源码
- 安装tensorflow-gpu 遇到的问题及收获
- com.alibaba.android,钉钉(com.alibaba.android.rimet) - 6.0.17 - 应用 - 酷安
- word转简洁html工具,Convert Word to HTML(Word转HTML工具)
- 手机卡从2G升级到4G,那GSM、WCDMA和LTE这些词你都了解吗?
- fmask云检测 matlab_高分四号卫星数据云和云阴影检测算法
- 定制交友盲盒软件 交友盲盒软件开发 交友软件系统开发
- 计算机应用专业需要6g显卡吗,4G、6G、8G显卡的显存容量有什么用?来看科普
- 3.6.2 找出分区的主副本
- 中公教育python培训讲师面试题_【中公教育讲师面试题目|面试经验】-看准网
热门文章
- 离线安装snmp安装包修改snmp、syslog配置文件、创建审计员账号shell脚本(适用于centos 7.x 、redhat 7.x系列)
- 项目中常用的github库集合
- xds510 usb2.0驱动
- 报错:ch.qos.logback.core.joran.spi.JoranException
- EhCache看这一篇就够了
- 小米mix2鸿蒙系统,小米MIX 2配置详解:小米终于有了8GB内存
- UnicodeDecodeError: 'gb18030' codec can't decode byte 0xeb in position 7: incomplete multibyte seque
- 远力集团,到底是如何成为中国城市产业发展新引擎的?
- linux a卡安装教程视频下载,在深度Deepin操作系统中安装AMD驱动的方法,附安装全过程...
- QML - 可视元素 Rectangle (1)