调用三方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();
}

 

posted @ 2019-07-30 15:42  牧 天  阅读(448)  评论(0)    收藏  举报