使用 Android NDK 的一般方法:
1、假如想要使用foo这个模块,先要 #include <foo.h>, 然后链接 /system/lib/libfoo.so 。
(在 Android.mk 文件中加入 LOCAL_LDLIBS := -lfoo)
ndk-build 会自动链接 C库、数学库、C++库
android-3 -> Official Android 1.5 system images
android-4 -> Official Android 1.6 system images
android-5 -> Official Android 2.0 system images
android-6 -> Official Android 2.0.1 system images
android-7 -> Official Android 2.1 system images
android-8 -> Official Android 2.2 system images
android-9 -> Official Android 2.3 system images
Android 1.5 以上的系统,下面这些库可用:
1、C库(这个C库包含多线程支持,所以不需要指定 -lpthread,也不需要指定 -lrt )
注意:内核头文件很没有稳定下来(今后可能变动),这些头文件是 <linux/*.h> 和 <asm/*.h>
2、数学库(也不需要指定 -lm)
3、C++库: 目前只有这些头文件可用。(不需要指定 -lstdc++ ,是自动链接的)
<cstddef> <new> <utility> <stl_pair.h>
4、Android log:
<android/log.h> android系统的log功能
要用这个API,需要指定 LOCAL_LDLIBS := -llog
5、zlib库:
<zlib.h> 和 <zconf.h>
链接: -lz ( /system/lib/libz.so)
http://www.zlib.net/manual.html
6、动态连接器库:
<dlfcn.h>
这个库提供的函数例如: dlopen()/dlsym()/dlclose()
LOCAL_LDLIBS := -ldl ( /system/lib/libdl.so)
----------------------- 以上由 android-3提供 ---------------------------------
1、OpenGL ES 1.x 库
<GLES/gl.h> 和 <GLES/glext.h>
LOCAL_LDLIBS := -lGLESv1_CM.so( /system/lib/libGLESv1_CM.so)
<uses-feature> ( http://developer.android.com/guide/topics/manifest/uses-feature-element.html)
----------------------- 以上是 android-4 新增的NDK API -------------------------
1、OpenGL ES 2.0
<GLES2/gl2.h> 和 <GLES2/gl2ext.h>
LOCAL_LDLIBS := -lGLESv2.so ( /system/lib/libGLESv2.so)
<uses-feature>
注意: 目前模拟器还不支持这个库
--------------------------以上是 android-5 新增的内容 ------------------------------
1、jnigraphics 库
一个小型的C语言库,提供对Java中的 bitmap 对象的操作。
包含: <android/bitmap.h>
链接: LOCAL_LDLIBS += -ljnigraphics
典型用法:
a) 用 AndroidBitmap_getInfo() 函数从位图句柄(从JNI得到)获得信息(宽度、高度、像素格式)
b) 用 AndroidBitmap_lockPixels() 对像素缓存上锁,即获得该缓存的指针。
c) 用C/C++ 对这个缓冲区进行读写
d) 用 AndroidBitmap_unlockPixels() 解锁
------------------------ 以上是 android-8 新增 -----------------------------
1、OpenSL ES 本地音频库
头文件: <SLES/OpenSLES.h> 和 <SLES/OpenSLES_Platform.h>
链接: LOCAL_LDLIBS += -lOpenSLES (libOpenSLES.so)
----------------------- 以上是 android-9 新增的 -------------------------------
从android-9 开始,就可以完全用C/C++来写android程序了(完全脱离java)
但是,仍然没有脱离java虚拟机,许多东西还是需要通过jni来访问 (参考 docs/NATIVE-ACTIVITY.html )
头文件:
<android/native_activity.h>
1、活动(Activity)生命期的管理
头文件: <android/looper.h> <android/input.h> <android/keycodes.h> <android/sensor.h>
2、监听事件和传感器
头文件: <android/rect.h> <android/window.h> <android/native_window.h> <android/native_window_jni.h>
3、窗口管理(包括对像素缓存加锁、解锁)
头文件: <android/configuration.h> <android/asset_manager.h> <android/storage_manager.h>
<android/obb.h> 对嵌入 apk中的资源(或OBB文件)进行只读的、直接访问。
OBB(Opaque Binary Blob)文件,新特性,允许把较大的数据放在apk之外(对于游戏程序有用)
上面提到的头文件在 "libandroid.so" 共享库中。
链接方法: LOCAL_LDLIBS += -landroid
分享到:
相关推荐
### Android NDK 开发教程概览 #### 一、引言 随着移动互联网技术的不断发展,Android 应用开发已成为软件行业中不可或缺的一部分。为了满足不同层次的开发需求,Google 提供了多种工具和技术栈,其中 Android NDK ...
This book provides you with a number of clear step-by-step recipes which will help you to start developing mobile games with Android NDK and boost your productivity debugging them on your computer....
3. **不提供完整的本地库支持**:NDK提供的系统头文件只包含了有限的一套本地APIs和库的支持。对于不在这些API列表内的库,开发者不应该依赖,因为这些库可能会随着Android系统的更新而改变。 #### 四、NDK开发实践...
It controls camera devices by NDK camera2 APIs which becomes one of [public libraries](http://android-developers.blogspot.kr/2016/06/improving-stability-with-private-cc.html) in Android N. Pre-...
【Android NDK开发】是指在Android应用开发中使用原生代码(C/C++)来编写部分功能,通过NDK工具集与Java代码交互。NDK的全称是Native Development Kit,它提供了一种机制,使得开发者可以利用高性能的C/C++代码来...
【Android NDK开发详解】 Android NDK(Native Development Kit)是Android应用开发中的一个重要工具,它允许开发者使用C和C++编写部分程序,以提升应用的性能和处理底层硬件交互。这种开发方式对于需要高性能计算...
【Android NDK 开发指南】 Android NDK 是一套专门针对Android应用开发的工具集,它允许开发者使用C或C++语言编写源代码,并将其编译为原生代码,嵌入到Android应用程序中。NDK 提供了一种方式,使得开发者能够利用...
- 安装**Android NDK**:下载并安装最新版本的NDK,通常需要将其路径添加到系统的PATH环境变量中。 - 设置开发环境:配置好集成开发环境,如使用Android Studio或Eclipse等。 ##### 2. **JNI接口定义** - 使用...
8. **开发者工具链**:在使用`repo`获取源码后,开发者还需要Android SDK和NDK,以及其他构建工具,如make和mm,来编译和调试代码。 总的来说,`repo`工具是Android开发中不可或缺的一部分,它帮助开发者高效地获取...
4. Android APIs:http://developer.android.com/reference/packages.html 通过学习这些基础知识和技术要点,开发者可以更好地理解 Android 平台应用开发的原理和技术,并更好地应用这些技术来开发高质量的 Android...
Android SDK和NDK将提供必要的APIs和工具,以便开发者能够轻松集成和控制以太网连接。 6. **企业应用**:在企业环境中,稳定的有线网络连接对于服务器通信、设备管理、物联网(IoT)设备集成等至关重要。Android 7.1...
GoogleMap APIs SDK Google Glass SDK Google TV Addon Android SDK Extras Support Library SDK Samples NDK Android L Preview System Image JDK ADT Bundle ADT Plugin Gradle Android Gradle Plugin DSL 在线...
5. **NDK (Native Development Kit)**:提供了工具集和APIs来编写使用本地C/C++代码的应用程序。 #### 四、安装与配置 - **下载**:“android-sdk_r18-windows”可以通过Android官方网站或其他可信渠道下载获得。 ...
4. **STABLE-APIS.html**: 这个文档可能涉及Android API的稳定性。在Android中,API分为稳定、测试和实验性等几个级别。稳定API是开发者可以安全使用的,不会在小版本更新中被删除或改变。理解API稳定性对保持应用...
9. **Android NDK (Native Development Kit)**: 对于需要使用C++或其他本地代码的开发者,NDK提供了一套工具,使得原生代码可以与Java代码结合,实现高性能计算或利用硬件加速。 10. **Testing Tools**: 包括JUnit...
- NDK (Native Development Kit) - Camera APIs - **未来展望**: 随着技术的发展,更多功能将会得到支持,开发者可以持续关注更新情况。 #### 四、与其他运行时的区别 - **多任务处理**: - 在Android Player ...
4. **Extras**: 这部分提供了额外的工具和库,例如Google APIs、Android Support Library、Android NDK等。Google APIs扩展了Android平台的功能,支持Google服务;Support Library提供向后兼容的API,帮助开发者支持...
4. **Android Native Development Kit (NDK)**:对于需要进行性能敏感的计算或者使用C/C++库的开发者,NDK提供了一个在Android平台上进行原生代码开发的工具集。 5. **Android Libraries**:包括了各种预构建的库,...
ARCore SDK for Android ... All rights reserved. This SDK provides APIs for all ...See the Quickstart for Android Java or Quickstart for Android NDK developer guide. API Reference See the ARCore SDK for Java