
Android NDK 开发
Android NDK 开发
韩曙亮
闭关修炼中
-
原创 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )
一、创建支持 Kotlin 的 NDK 项目、二、Kotlin 语言中使用 NDK 要点、1、加载动态库、2、声明 ndk 方法、3、Project 下的 build.gradle 配置、4、Module 下的 build.gradle 配置、三、代码示例、1、Java 代码、2、C++ 代码、3、Project 下的 build.gradle、4、Module 下的 build.gradle、5、执行效果、四、GitHub 地址2020-12-16 14:58:4351
1
-
原创 【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 )
一、崩溃信息描述、二、手机命令行操作、三、电脑命令行操作、四、Tombstone 内容2020-11-12 09:07:141692
7
-
原创 【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
I . CMake 引入动态库与静态库区别II . Android Studio 中 CMake 引入动态库流程III . 指定动态库查找路径IV . 链接函数库V . Module 级别的 build.gradle 完整配置代码VI . CMakeList.txt 完整配置代码VII . 博客资源2020-02-18 00:18:271105
3
-
原创 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )
I . CMake 简介II . Android Studio 中 CMake 引入静态库流程III . 指定 CMake 最小版本号IV . 导入函数库 ( 静态库 / 动态库 ) 编译配置V . 导入第三方函数库路径配置VI . 输出日志信息VII . 链接函数库VIII . Module 级别的 build.gradle 完整配置代码IX . CMakeList.txt 完整配置代码X . 博客资源2020-02-17 00:06:13980
3
-
原创 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
I . Android Studio 中使用 Android.mk 配置静态库 总结II . 第三方动态库来源III . 配置 Android.mk 构建脚本路径IV . 预编译 第三方 静态库 ( Android.mk )V . 链接静态库 ( 设置静态库依赖 )VI . Java 代码定义 native 方法并加载动态库VII . C 代码调用动态库函数VIII . 动态库 与 静态库 打包对比IX . 配置动态库与静态库区别X . 完整代码示例1 . build.gradle 配置2020-02-15 10:57:26244
0
-
原创 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
I . Android Studio 中使用 Android.mk 配置动态库库 总结II . 第三方动态库来源III . 配置 Android.mk 构建脚本路径IV . 预编译 第三方 动态库 ( Android.mk )V . 链接动态库 ( 设置动态库依赖 )VI . Java 代码定义 native 方法并加载动态库VII . C 代码调用动态库函数VIII . 动态库加载版本限制 ( 6.0 以上 不能使用 Android.mk 配置动态库 )IX . 完整代码示例1 . bu2020-02-15 02:32:141472
0
-
原创 【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交叉编译 | Android 静态库交叉编译 )
I . Ubuntu 中交叉编译 Android 动态库II . Ubuntu 中交叉编译 Android 静态库2020-02-15 01:40:39608
2
-
原创 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )
I . 源码编译配置II . 构建脚本配置III . NDK 函数库打包配置IV . Java 与 C 代码示例V . CMake 配置 ( CMakeLists.txt )VI . ndkBuild 配置 ( Android.mk )VII . 博客相关资源下载2020-02-12 15:17:12201
0
-
原创 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )
文章目录I . 动态库 与 静态库II . 编译动态库III. Android Studio 使用第三方动态库IV . Android Studio 关键代码I . 动态库 与 静态库1 . 函数库分类 : ① 动态库 , ② 静态库 ;2 . 静态库 :编译链接时 , 将整个库文件打包到可执行文件中 , 造成可执行文件较大 , 但运行时不需要库文件 ;Android 与 ...2020-02-11 00:13:31691
2
-
原创 【Android NDK 开发】NDK 交叉编译 ( NDK 函数库目录 | Linux 交叉编译环境搭建 | 指定头文件目录 | 指定函数库目录 | 编译 Android 命令行可执行文件 )
I . NDK platforms 目录下的 函数库II . Ubuntu 配置 NDK 交叉编译环境III . 同时指定编译的头文件和库文件IV . 指定编译的头文件V . 指定编译的库文件VI . 指定编译的头文件与库文件 示例2020-02-09 23:09:57602
0
-
原创 【Android NDK 开发】JNI 线程 ( JNI 线程创建 | 线程执行函数 | 非 JNI 方法获取 JNIEnv 与 Java 对象 | 线程获取 JNIEnv | 全局变量设置 )
I . JNI 线程创建II . 线程执行函数III . 线程方法获取 Java 对象IV . 线程方法获取 JNIEnvV . JNI 线程 完整代码示例2020-02-09 00:14:29167
0
-
原创 【Android NDK 开发】JNI 动态注册 ( 动态注册流程 | JNI_OnLoad 方法 | JNINativeMethod 结构体 | GetEnv | RegisterNatives )
I . 动态注册流程 ( 总结 )II . JNI_OnLoad 方法III . 被注册的本地 C/C++ 方法参数IV . JNINativeMethod 结构体 ( 核心重点 )V . JavaVM 获取 JNIEnv ( GetEnv )VI . 动态注册方法 RegisterNatives ( 核心重点 )VII . 动态注册流程完整代码2020-02-08 15:02:35567
0
-
原创 【Android NDK 开发】JNI 引用 ( 弱全局引用 | NewWeakGlobalRef | DeleteWeakGlobalRef )
I . 弱全局引用II . 弱全局引用判定是否被回收III . 弱全局引用 创建 与 删除 ( NewWeakGlobalRef | DeleteWeakGlobalRef )IV . 弱全局引用代码示例2020-02-06 12:22:33409
0
-
原创 【Android NDK 开发】JNI 引用 ( 全局引用 | NewGlobalRef | DeleteGlobalRef )
文章目录I . 全局引用II . 创建全局引用 ( NewGlobalRef )III . 全局引用代码示例I . 全局引用1 . 全局引用作用域 :与局部引用对比 : 全局引用与局部引用相对应 , 其作用域是全局的 , 局部引用只能在当前方法使用 ;空间 : 可以 跨方法 , 跨线程使用 ;时间 : 创建后可以使用 , 手动释放后全局引用失效 ; ( 手动释放前全局可用 )...2020-02-06 12:13:13666
0
-
原创 【Android NDK 开发】JNI 引用 ( 局部引用 | 局部引用作用域 | 局部引用产生 | 局部引用释放 | 代码示例)
I . JNI 引用数据类型II . JNI 引用 与 指针III . 局部引用 作用域IV . 局部引用 产生 与 释放V . 局部引用 代码示例2020-02-06 00:18:15269
0
-
原创 【Android NDK 开发】JNI 方法解析 ( C/C++ 设置 Java 对象字段 | 查找字段 | 设置字段 )
I . 设置 Java 对象 属性 流程II . 查找 Java 对象属性 ( GetFieldID )III . 设置 Java 对象属性 ( GetFieldID )2020-02-05 14:17:21385
0
-
原创 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )
I . 调用 Java 方法流程II . 获取 jclass 对象 ( GetObjectClass )III . 获取 jclass 对象 ( FindClass )IV . JNI 函数签名规则V . javap 获取函数签名 ( 推荐 )VI . 反射获取对象方法 ( GetMethodID )VII . 反射获取类静态方法 ( GetStaticMethodID )VIII . 调用 Java 对象方法 ( CallXxxMethod )IX . 调用 Java 类静态方法 ( Ca2020-02-04 23:52:59585
0
-
原创 【Android NDK 开发】JNI 方法解析 ( 字符串数组参数传递 | 字符串遍历 | 类型强转 | Java 字符串与 C 字符串转换 | 字符串释放 )
I . C/C++ 中的 Java 字符串数组类型II . 获取字符串数组长度III . 获取字符串数组元素IV . 类型强转 ( jobject -> jstring )V . 字符串转换 ( jstring -> char* )VI . 字符串释放VII . 部分代码示例2020-01-28 23:51:18449
7
-
原创 【Android NDK 开发】JNI 方法解析 ( int 数组传递 | jintArray 类型 | 数组转换 | 获取数组长度 | 获取数组元素 | 指针遍历数组 | 数组返回值设置 )
I . jintArray 类型说明II . jboolean 类型说明III . GetIntArrayElements 方法解析 ( jintArray -> jint* | int* )IV . jarray 类型说明V . GetArrayLength 方法解析 ( 获取 jarray 数组长度 )VI . 日志打印VII . 遍历 int 数组VIII . ReleaseIntArrayElements 方法说明 ( 释放 C/C++ 中的 int 数组 )IX . 完整代码示例2020-01-28 20:58:532124
2
-
原创 【Android NDK 开发】JNI 方法解析 ( JNIEnv *env 参数 )
I . JNI 方法解析II . JNIEnv *env 参数解析III . C 语言 环境中 JNIEnv *env 参数解析IV . C ++ 环境中 JNIEnv *env 参数解析2020-01-25 17:05:01497
0
-
原创 【Android NDK 开发】JNI 方法解析 ( JNIEXPORT 与 JNICALL 宏定义作用 )
I . JNIEXPORT 与 JNICALL 宏定义II . JNIEXPORT 与 JNICALL 宏定义说明 ( Windows 平台 )III . JNIEXPORT 与 JNICALL 宏定义说明 ( Linux 平台 )2020-01-24 22:10:382640
0
-
原创 【Android NDK 开发】Visual Studio 2019 使用 CMake 开发 JNI 动态库 ( 动态库编译配置 | JNI 头文件导入 | JNI 方法命名规范 )
I . JNI 与 NDK 区别II . Visual Studio 编译动态库III. 配置 导入 jni.h 头文件IV . IntelliJ IDEA Community Edition 创建 Java 项目V . Java 定义的 Native 方法VI . C++ 中实现上面定义的 Native 方法VII . CMake 项目生成 dll 动态库VIII . Java 中加载调用动态库IX . 使用 javah 工具生成 C++ 中需要实现的 Native 方法 ( 仅做参考 )2020-01-22 20:59:191460
0
-
原创 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )
文章目录创建 NDK 项目NDK 项目 相关配置NDK 中获取 Android 版本号创建 NDK 项目1. 创建支持 NDK 的项目 : 当前最新的 Android Studio 支持直接创建 支持 C/C++ 的带 NDK 配置的项目 ;如果向现有项目加入 C/C++ 代码 , 首先要创建 cpp 代码文件 , 然后创建 CMakeList.txt 编译脚本 , 最后在 bui...2019-11-07 17:32:241239
0