文章

NDKJNI相关问题

NDKJNI相关问题

JNI 基础

JNI 流程

JNI 中如何调用 Java 代码?

JNI 调用 Java 中的代码过程有点类似 Java 中的反射

  1. 获取 jclass 对象,为了能够在 C/C++ 中调用 Java 中的类,jni.h 的头文件专门定义了 jclass 类型表示 Java 中 Class 类
  2. 获取属性方法
  3. 构造一个对象

Cmake

在 Android Studio 2.2 及以上,构建原生库的默认工具是 CMake。

CMake 是跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。能够输出各种各样的 makefile 或者 project 文件。CMake 不直接构建出最终的软件,而是产生其他工具的脚本(如 makefile),然后再依据这个工具的构建方式使用。

CMake 是一个比 make 更高级的编译配置工具,它可以根据不同的平台、不同的编译器,生成相应的 makefile 或 vcproj 项目,从而达到跨平台的目的。Android Studio 利用 CMake 生成的是 ninja。ninja 是一个小型的关注速度的构建系统。我们不需要关心 ninja 的脚本,知道怎么配置 CMake 就可以了。

CMake 其实是一个跨平台的支持产出各种不同的构建脚本的一个工具。

面试题

JNI

JNI 多线程问题?内存泄漏问题?

Native 多线程中,需要用全局引用,用完调用 DeleteGlobalRef 删除引用,否则会内存泄漏。

本文由作者按照 CC BY 4.0 进行授权