Andro Studio 中JNI学习使用记录

来源:互联网 发布:网络谣言研究报告 编辑:程序博客网 时间:2024/06/08 06:54

题记:现有在工程中需要用JNI来简化及拓展APK功能


一,安装及配置NDK

进入SDK manager 勾选NDK,然后Apply一下,等待安装完成



配置环境变量:

新建环境变量,路径为AS在sdk路径中安装的./ndk-bundle

然后在path中添加上图定义的%NDK_ROOT%



dos窗口可以敲出ndk-build指令即配置完成,因为cmd路径下啥都没,所以当前啥都build不出来。




二,在AS中使用JNI

首先需要根据需求写对应的C函数实现,并通过NDK编译成SO库,先定义一个新类

package com.example.testing.mybooo;public class NdkJniUtils{    static {        System.loadLibrary("demo");    }    public native String getCLanguageString();}
loadLibrary指定所要调用的so库,native表示so库的调用函数。


然后在app目录下创建JNI目录,用以存放源C文件和MakeFile文件

首先cmd进入./app目录下,使用javah指令根据制定类生成需求的H文件,指令:javah com.example.testing.mybooo.NdkJniUtils

根据生成的h文件定义的函数名来写对应的C函数实现;

demo.c如下

#include <jni.h>jstringJava_com_example_testing_mybooo_NdkJniUtils_getCLanguageString(JNIEnv *env, jobject obj){    return (*env)->NewStringUTF(env,"This just a test for Android Studio NDK JNI developer!");}

写好C以后写MakeFile,必须命名为Android.mk,内容如下

LOCAL_PATH := $(call my-dir)//索引编译目录include $(CLEAR_VARS)//LOCAL_MODULE := demo//输出模块名,实际输出so文件名为“libdemo.so”LOCAL_SRC_FILES := demo.c//源include $(BUILD_SHARED_LIBRARY)//

之后在app目录下输入ndk-build命令,输出libdemo.so库文件。


在app节点的build.gradle的android分支下设置jni中的so来源

android {    ...    sourceSets {        main {            jniLibs.srcDirs = ['libs']        }    }}

然后在MainActivity中调用所需函数,即可正常使用了。

原创粉丝点击