1. 程式人生 > >安卓使用記錄筆記(1)ndk使用之Java呼叫c++程式碼

安卓使用記錄筆記(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檔案