
Android NDK 开发
文章平均质量分 74
Android NDK 开发
韩曙亮
中国人民大学硕士 , 专注于 移动开发 领域 , 博客专家 , 2023 年博客之星 TOP1 , 2021 年博客之星 TOP9 , 华为云 云享专家 , 阿里云社区 专家博主 , 51CTO 专家博主 ;
展开
-
【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )
一、从 Tombstone 报错日志中查找报错动态库、二、addr2line 命令行工具使用、64 位动态库使用的 aarch64-linux-android-addr2line.exe 工具、32 位动态库使用的 arm-linux-androideabi-addr2line.exe 工具、使用 addr2line 命令行工具分析动态库...原创 2022-08-18 16:25:30 · 2652 阅读 · 0 评论 -
【Android NDK 开发】CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundle\platforms\android-29\arch-arm\usr\lib )
一、BuildType#javaCompileOptions 配置、二、CMakeLists.txt 完整带注释配置原创 2022-05-02 20:39:12 · 2118 阅读 · 0 评论 -
【Android NDK 开发】CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundle\platforms\android-29\arch-arm\usr\lib )
一、BuildType#javaCompileOptions 配置、二、CMakeLists.txt 完整带注释配置原创 2022-09-18 11:36:22 · 1149 阅读 · 0 评论 -
【Android NDK 开发】Android NDK 下载 ( 下载指定历史版本 NDK | Android NDK r10e - 2015 年 5 月 )
一、下载指定历史版本 NDK原创 2022-03-19 18:29:16 · 2481 阅读 · 0 评论 -
【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:43 · 3617 阅读 · 1 评论 -
【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 )
一、崩溃信息描述、二、手机命令行操作、三、电脑命令行操作、四、Tombstone 内容原创 2020-11-12 09:07:14 · 4458 阅读 · 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:27 · 3742 阅读 · 4 评论 -
【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:13 · 4573 阅读 · 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:26 · 2075 阅读 · 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 . bu原创 2020-02-15 02:32:14 · 3090 阅读 · 1 评论 -
【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交叉编译 | Android 静态库交叉编译 )
I . Ubuntu 中交叉编译 Android 动态库II . Ubuntu 中交叉编译 Android 静态库原创 2020-02-15 01:40:39 · 2061 阅读 · 5 评论 -
【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:12 · 1349 阅读 · 0 评论 -
【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )
文章目录I . 动态库 与 静态库II . 编译动态库III. Android Studio 使用第三方动态库IV . Android Studio 关键代码I . 动态库 与 静态库1 . 函数库分类 : ① 动态库 , ② 静态库 ;2 . 静态库 :编译链接时 , 将整个库文件打包到可执行文件中 , 造成可执行文件较大 , 但运行时不需要库文件 ;Android 与 ...原创 2020-02-11 00:13:31 · 2988 阅读 · 20 评论 -
【Android NDK 开发】NDK 交叉编译 ( NDK 函数库目录 | Linux 交叉编译环境搭建 | 指定头文件目录 | 指定函数库目录 | 编译 Android 命令行可执行文件 )
I . NDK platforms 目录下的 函数库II . Ubuntu 配置 NDK 交叉编译环境III . 同时指定编译的头文件和库文件IV . 指定编译的头文件V . 指定编译的库文件VI . 指定编译的头文件与库文件 示例原创 2020-02-09 23:09:57 · 2499 阅读 · 0 评论 -
【Android NDK 开发】JNI 线程 ( JNI 线程创建 | 线程执行函数 | 非 JNI 方法获取 JNIEnv 与 Java 对象 | 线程获取 JNIEnv | 全局变量设置 )
I . JNI 线程创建II . 线程执行函数III . 线程方法获取 Java 对象IV . 线程方法获取 JNIEnvV . JNI 线程 完整代码示例原创 2020-02-09 00:14:29 · 1992 阅读 · 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:35 · 2293 阅读 · 0 评论 -
【Android NDK 开发】JNI 引用 ( 弱全局引用 | NewWeakGlobalRef | DeleteWeakGlobalRef )
I . 弱全局引用II . 弱全局引用判定是否被回收III . 弱全局引用 创建 与 删除 ( NewWeakGlobalRef | DeleteWeakGlobalRef )IV . 弱全局引用代码示例原创 2020-02-06 12:22:33 · 1949 阅读 · 0 评论 -
【Android NDK 开发】JNI 引用 ( 全局引用 | NewGlobalRef | DeleteGlobalRef )
文章目录I . 全局引用II . 创建全局引用 ( NewGlobalRef )III . 全局引用代码示例I . 全局引用1 . 全局引用作用域 :与局部引用对比 : 全局引用与局部引用相对应 , 其作用域是全局的 , 局部引用只能在当前方法使用 ;空间 : 可以 跨方法 , 跨线程使用 ;时间 : 创建后可以使用 , 手动释放后全局引用失效 ; ( 手动释放前全局可用 )...原创 2020-02-06 12:13:13 · 8906 阅读 · 0 评论 -
【Android NDK 开发】JNI 引用 ( 局部引用 | 局部引用作用域 | 局部引用产生 | 局部引用释放 | 代码示例)
I . JNI 引用数据类型II . JNI 引用 与 指针III . 局部引用 作用域IV . 局部引用 产生 与 释放V . 局部引用 代码示例原创 2020-02-06 00:18:15 · 1069 阅读 · 0 评论 -
【Android NDK 开发】JNI 方法解析 ( C/C++ 设置 Java 对象字段 | 查找字段 | 设置字段 )
I . 设置 Java 对象 属性 流程II . 查找 Java 对象属性 ( GetFieldID )III . 设置 Java 对象属性 ( GetFieldID )原创 2020-02-05 14:17:21 · 2044 阅读 · 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 类静态方法 ( Ca原创 2020-02-04 23:52:59 · 2446 阅读 · 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:18 · 2783 阅读 · 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:53 · 10415 阅读 · 2 评论 -
【Android NDK 开发】JNI 方法解析 ( JNIEnv *env 参数 )
I . JNI 方法解析II . JNIEnv *env 参数解析III . C 语言 环境中 JNIEnv *env 参数解析IV . C ++ 环境中 JNIEnv *env 参数解析原创 2020-01-25 17:05:01 · 5066 阅读 · 0 评论 -
【Android NDK 开发】JNI 方法解析 ( JNIEXPORT 与 JNICALL 宏定义作用 )
I . JNIEXPORT 与 JNICALL 宏定义II . JNIEXPORT 与 JNICALL 宏定义说明 ( Windows 平台 )III . JNIEXPORT 与 JNICALL 宏定义说明 ( Linux 平台 )原创 2020-01-24 22:10:38 · 14608 阅读 · 4 评论 -
【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:19 · 4309 阅读 · 1 评论 -
【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:24 · 4455 阅读 · 0 评论