Wons' Blog

个人博客

后端程序猿 - Python / C++ / Java


回首向来萧瑟处,也无风雨也无晴

在Android Studio中进行NDK开发的一般流程

1 在类中声明native方法

2 在 app/src/main 下创建 jni 目录

3 在 app/src/main/java 下运行命令 javah -jni -d ../jni com.path2class.ClassName

4 在 app/src/main/jni 下生成了对应的头文件,创建cpp源文件,利用此头文件实现对应的native方法

5 在 app 下的 build.gradle 文件中,android->defaultConfig下添加代码:

ndk {    
   moduleName "jnitest"          // 生成的so动态库名称
   abiFilters "armeabi", "armeabi-v7a", "x86" // 输出指定三种abi体系结构下的so库,目前可有可无
}

6 在需要用到native方法的java类中添加如下代码来加载native库:

static {    
   System.loadLibrary("jnitest");    // 必须与之前在build.gradle中设置的so库名称一致
}

7 现在可以在加载了so库的java类中调用native方法了

最近的文章

Java下合并多个文件

在实际项目中,在处理较大的文件时,常常将文件拆分为多个子文件进行处理,最后再合并这些子文件。Java中合并子文件最容易想到的就是利用BufferedStream进行读写。利用BufferedStream合并多个文件public static boolean mergeFiles(String[] fpaths, String resultPath) { if (fpaths == null || fpaths.length < 1 || TextUtils.isEmpty(re...…

Java继续阅读
更早的文章

使用OpenCV Android SDK从摄像头帧实时检测人脸

在配置好 OpenCV Android SDK 之后(具体见前一篇文章Android Studio中使用OpenCV Android SDK),可以使用 OpenCV 封装的接口很方便地进行各种图像处理操作。这里简单介绍如何直接使用 OpenCV 训练的人脸模型直接从摄像头帧检测人脸。1. 新建Android Project这里可以直接使用默认的 Android Studio 项目模板, Activity 选择 Empty Activity 。2. 配置OpenCV Android SDK...…

Android继续阅读