NDK安装
CMAKE安装
ndk-build安装
自带的工程搭建工具,基本不用,使用cmake即可。
新建Native工程
报错 “No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi”
查看交叉编译工具链的位置,NDK安装的工具链是否完整,如果没有可能是安装的NDK的版本的问题。
手动新建JNI接口测试
- 添加接口
- 实现接口函数
修改界面
运行结果如下
核心代码附上
public native String getFromJNI();
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_getFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from JNI";
return env->NewStringUTF(hello.c_str());
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/sample_text1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Hello World!"
tools:ignore="MissingConstraints"/>
<TextView
android:id="@+id/sample_text2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Hello World!"
android:layout_marginTop="100dp"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
添加javah扩展工具自动根据头文件生成函数签名
会生成一个文件,里面包括所有的native函数的签名
把新加的接口复制到 native.cpp文件中,别忘了添加extern "c"标记