前提:Mac平台,windows平台仅供参考。
1,准备工作。
1.1,查看你的jdk是否有javah编译功能:终端-》whereis javah
如果没有找到这条指令,请查看你是否安装的是JDK较高版本,如果是jdk10,恭喜你这里边没有javah的命令了,你需要更换你的jdk为1.8。如果你的jdk中有,你可以看到在Java Home的文件路径下看到如下图:
如何配置你本机的jdk环境,请自行百度。
还可以使用你Android Studio中自带的Java编译,其中也是包含有javah的你只需要按照如下图设置:
1.2,还需要三个插件工具:
具体你可以参考google的Android开发者指导页面:https://developer.android.com/studio/projects/add-native-code?hl=zh-cn
您可以使用 SDK 管理器安装这些组件:
- 在打开的项目中,从菜单栏选择 Tools > Android > SDK Manager。
- 点击 SDK Tools 标签。
- 选中 LLDB、CMake 和 NDK 旁的复选框,如图 1 所示。
图 1. 从 SDK 管理器中安装 LLDB、CMake 和 NDK。
- 点击 Apply,然后在弹出式对话框中点击 OK。
- 安装完成后,点击 Finish,然后点击 OK。
好了,准备工作完成。
2,新建一个带有C/C++的Android 工程
其中最重要的会自动生成:
1,cpp文件夹,这里边有范例的C++文件。
2,CMakeLists.txt关联库名称和文件路径。
3,app的build.gradle文件中会自动生成
4,我们可以观察cpp文件,和MainActivity.java 能够知道他的命名规则,和调用规则。
c++文件函数名的命名规则:Java+包名+Activity名+方法名
在Activity中用CMakeLists.txt文件中的别名静态加载c++文件。
该调用方法需要在Activity中申明为Native方法。
之后就可以直接调用该方法获取C++文件中传递的值了。
这样jni加入C++文件开发就可以正常运行了。
下一篇将说明,如何引入c文件调用。其实和c++很像,也有不同的方法,需要用到上边说的javah。