调用三方so
这里提供一个libnative-lib.so
该so的代码如下:
#include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_huawei_sbj_MainActivity_stringFromJNI(JNIEnv *env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); }
现在我们另外创建个Android工程来使用这个libnative-lib.so
创建工程后将so放入工程路径中:app\src\main\jniLibs\arm64-v8a\libnative-lib.so
java调用的相关代码:
com.huawei.sbj.MainActivity必须与so中一致
package com.huawei.sbj; import android.os.Bundle; import android.widget.TextView; import com.huawei.maxpower.R; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { // Used to load the 'native-lib' library on application startup. static { System.loadLibrary("native-lib"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a); TextView tv = findViewById(R.id.result); tv.setText(stringFromJNI()); } public native String stringFromJNI(); }