Andro Studio 中JNI学习使用记录

题记:现有在工程中需要用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>

jstring
Java_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中调用所需函数,即可正常使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值