![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NDK
文章平均质量分 79
Xiongjiayo
一名小白,在大二的时候因为对Android的兴趣,暑假时期自学了Java和Android,后来大三因为学业繁忙的缘故落下了一段时间,大三的假期重新捡起,并会一直坚持下去。在博客中会将未来Android的学习道路上遇到的问题,学习心得记录下来,不断学习,积累经验。学无止境,同时也鞭策自己保持学习的状态和心境。
展开
-
Android studio中NDK开发(一)——使用CMake构建NDKDemo
一、前言NDK可以支持使用C/C++来编写Android程序,不但可以引入C/C++中优秀的库资源,而且在使用底层的C/C++来处理一些复杂的运算效率更高,并且可以方便跨平台移植。本篇主要以CMake的方式来构建NDK,主要以最常规的方式创建一个NDKImportDemo,并对自动创建官方例子进行分析构建的过程以及CMakeLists.txt构建文件的配置。 二、准备1、检查And...原创 2018-12-29 12:36:38 · 2393 阅读 · 0 评论 -
Android studio中NDK开发(二)——使用CMake引入第三方so库及头文件
一、前言通常来说,第三方提供的so库以及头文件都没有没有引入jni.h头文件。所以我们在导入第三方so库以及头文件的时候需要手动的将其关联到官方的native-lib库中,关联成功后就可以在native-lib中include进第三方头文件,引进头文件成功后就可以在自定义的JNI接口中对第三方头文件中内容进行调用。二、准备第三方so库以及头文件创建一个默认的NDKDemo(可按照CMak...原创 2018-12-29 16:50:42 · 13490 阅读 · 25 评论 -
Android studio中NDK开发(三)——JNI层日志打印
一、前言JNI层是Java和C/C++的桥梁,在Java层中我们通常会使用Log.v()/Log.e()等来进行日志打印,在C中使用printf方法,但在JNI层这些方法是无法在Android studio中下的Logcat中显示的,需要用到另外的库,这个已经打包在log.h头文件中。 二、步骤1、在C/C++文件,即.c或.cpp文件中引入log.h头文件#include ...原创 2019-01-04 10:55:04 · 2877 阅读 · 0 评论 -
Android studio中NDK开发(四)——使用addr2line分析Crash日志
一、前言在NDK开发中经常会出现应用Crash的情况,而JNI层的报错信息,不像Java层报错信息那样可以直接在日志中看到错误的行数,JNI层中出现的错误直接看根本定位不到错误的位置。通常来说,JNI报的基本都是堆栈信息,需要NDK的一些工具进行地址转换,转换后即可看到错误的位置。这些地址转换的工具有addr2line、ndk-stack等,我比较喜欢addr2line,平时也用这个工具进行调试...原创 2019-01-17 11:09:16 · 11714 阅读 · 6 评论 -
Android studio中NDK开发(五)——C嵌套结构体与Java类在JNI层的传输
一、前言最近在Android上的NDK开发时遇到一个问题,在Java层需要获取到设备的注册信息,然后在JNI层将这些信息封装为结构体参数的形式传递到C++中的方法中进行处理。也就是说,在Java层获取到的信息需要先转换成结构体,再传进去,在C++和Java的JNI层转换的这个过程中整整卡了两三天,一直找不到解决问题的思路。二、分析从结构体的特性来看,其实结构体就是不同属性的合集,只不过嵌套...原创 2019-01-14 21:15:13 · 1480 阅读 · 0 评论