安卓使用记录笔记(1)ndk使用之Java调用c++代码

1.在Java中新建一个Utils类

    1)指定路径下新建一个文件夹 ,包名为Utils

    2)   新建类

NativeUtils.java

package com.sample.Utils;


public class NativeUtils {

    public static native int LoadFile(); //函数名字可以自定义,只需要对应起来即可
    public static native int StartPoisson();

    static{
        System.loadLibrary("TeapotNativeActivity");    //用来链接so库,本例中库名对应的是libTeapotNativeActivity.so
    }
}

3)Java中调用方式为

NativeUtils.LoadFile();//名字对应
NativeUtils.StartPoisson();

4)c++中函数实现

extern "C"
JNIEXPORT jint JNICALL
Java_com_sample_Utils_NativeUtils_LoadFIle(JNIEnv *env, jclass type) {  //函数名字规则:这里Java_开头,然后包名com_sample_Utils_,
                                                      //然后类名NativeUtils_,然后函数名LoadFIle

  // TODO

  return 0;
}

5)注意,如果提示找不到函数实现时,说明so没有链接进去

类中定义,详见(2)

static{
        System.loadLibrary("TeapotNativeActivity");    //用来链接so库,本例中库名对应的是libTeapotNativeActivity.so
    }

在gradle中添加以下代码:

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

注意在文件夹中新增libs文件夹,和armeabi-v7a子文件夹,里面放对应的so文件

猜你喜欢

转载自blog.csdn.net/hehehetanchaow/article/details/80468668
今日推荐