使用现有库

14 篇文章 0 订阅

本部分阐述如何使用您自己的以及 NDK 提供的现有库。

首先介绍如何使用您自己的预构建库。 然后,介绍 NDK 提供的 C++ 帮助程序运行时,以及如何使用它们。 最后,提供有关 NDK 提供的其他库的信息,如 OpenGL ES 和 OpenSL ES,以及支持这些库所需的最低 Android API 级别。

NDK 支持使用预构建库,静态库和共享库均受支持。针对此功能提供两个主要用例:

向第三方 NDK 开发者分发您自己的库,无需分发您的源代码。
使用您自己的库的预构建版本以提升您的构建速度。
本页介绍如何使用预构建库。

您必须将您使用的每个预构建库声明为单一独立模块。为此,请执行以下步骤:

为模块提供一个名称。此名称不需要与预构建库本身的名称相同。
在模块的 Android.mk 文件中,将指向您提供的预构建库的路径分配到 LOCAL_SRC_FILES。 指定 LOCAL_PATH 变量的值的相对路径。
注:您必须确保选择与您的目标 ABI 对应的预构建库版本。 如需了解有关确保库支持 ABI 的详细信息,请参阅为预构建库选择 ABI。

根据您是使用共享 (.so) 还是静态 (.a) 库,添加 PREBUILT_SHARED_LIBRARY 或 PREBUILT_STATIC_LIBRARY。

Android API 级别 18
NDK 为开发在 Android 4.3 系统映像及更高版本上运行的原生代码提供下列 API。

OpenGL ES 3.0
标准 OpenGL ES 3.0 标头 gl3.h 和 gl3ext.h 包含从原生代码执行 OpenGL ES 3.0 渲染调用所需的声明。 这些渲染调用提供利用 GLSL 语言定义并使用顶点和片段着色器的功能。

如需使用 OpenGL ES 3.0,通过在 Android.mk文件中添加以下行将您的原生模块链接到 /system/lib/libGLESv3.so:

LOCAL_LDLIBS := -lGLESv3
并非所有设备均支持 OpenGL ES 3.0。应用可以查询 OpenGL ES 版本字符串和扩展字符串,以确定当前设备是否支持其需要的功能。 如需了解有关如何执行此查询的信息,请参阅 OpenGL 规范中的 glGetString() 的说明。

此外,您必须在您的清单文件中放置一个 标签,以指明您的应用所需的 OpenGL ES 版本。 如需了解有关针对 的 OpenGL ES 设置的详细信息,请参阅 OpenGL ES。

gles3jni 示例应用提供一个基本示例,展示如何将 OpenGL ES 3.0 与 NDK 结合使用。

注:Android 模拟器不支持 OpenGL ES 3.0 硬件模拟。 运行和测试使用此 API 的代码需要一个其硬件可支持 OpenGL ES 3.0 的真实设备。

Android API 级别 21
NDK 为开发在 Android 4.3 系统映像及更高版本上运行的原生代码提供下列 API。

OpenGL ES 3.1
标准 OpenGL ES 3.1 标头 gl31.h 和 gl3ext.h 包含从原生代码执行 OpenGL ES 3.1 渲染调用所需的声明。 这些渲染调用提供利用 GLSL 语言定义并使用顶点和片段着色器的功能。

如需使用 OpenGL ES 3.1,通过在 Android.mk 文件中添加以下行将您的原生模块链接到 /system/lib/libGLESv3.so:

LOCAL_LDLIBS := -lGLESv3
并非所有设备均支持 OpenGL ES 3.1。应用可以查询 OpenGL ES 版本字符串和扩展字符串,以确定当前设备是否支持其需要的功能。 如需了解有关如何执行此查询的信息,请参阅 OpenGL 规范中的 glGetString() 的说明。

此外,您必须在您的清单文件中放置一个 标签,以指明您的应用所需的 OpenGL ES 版本。 如需了解有关针对 的 OpenGL ES 设置的详细信息,请参阅 OpenGL ES。

gles3jni 示例应用提供一个基本示例,展示如何将 OpenGL ES 3.1 与 NDK 结合使用。

注:Android 模拟器不支持 OpenGL ES 3.1 硬件模拟。 运行和测试使用此 API 的代码需要一个其硬件可支持 OpenGL ES 3.1 的真实设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值