前言
在上节中,我们已经学习了NDK环境的搭建,那么今天我们就来学习下JNI项目创建即so文件的生成。这里需要说明一下,生成so文件可以有两种方式,一种是传统方式,一种是利用Cmake方式。由于之前没怎么接触过JNI相关知识,这几天学习起来比较混乱,然后等慢慢熟悉以后,才知道有这两种方式。鉴于Androidstudio的强大,个人建议使用Cmake方式。因为Androidstudio有对应cmake工具,可以方便的生成jni模板,如果用传统方式的话,c/c++
代码报错了很难找到错误,特别是你不熟悉c/c++
的话,更是痛苦。
JNI环境搭建请参考:JNI(一)—NDK环境搭建
今天涉及内容:
- 新建JNI项目
- 了解JNI项目结构
- native-lib.cpp文件
- CMakeLists.txt 文件
- app_moduel对应的build.gradle中多了以下NDK相关配置
- 再看看Android代码中的MainActivity
- 运行JNI项目模板
- 修改JNI项目模板,弄自己的接口方法
4.1 在app/src/main/路径下建jni文件夹
4.2 将native-lib.cpp文件改为自己想定义的名字
4.3 将JniControl.cpp剪切至jni文件夹里
4.4 将CMakeLists.txt移动到app/目录下(与src同级)
4.5 打开配置文件CMakeLists.txt,修改对应lib名称和cpp文件路径
4.6 修改app_moduel的build.gradle中ndk配置
4.7 编写java类(用于Java调用c/c++)
4.8 修改JniControl.cpp代码
4.9 测试Jni方法 - so文件的生成和路径
- 项目结构图
先来波截图
一.新建JNI项目
新建Android项目,选择 C++
next,然后给项目命名,next
选择
Toolchaiin Default
,然后finish二.了解JNI项目结构
在新建完JNI项目后,项目中会自动生成一个可运行的JNI模板项目。让我们来看看项目结构。
项目中多了一个
.cxx
和cpp
文件夹。打开
cpp
文件夹可以看到里面有一个
.cpp
文件和一个CMakeLists.txt
配置文件。让我们来一 一看看。
-
native-lib.cpp
文件
native-lib
是模板自动生成的名字,让我们来看看它里面的代码: