锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【Android】Jni开发部署

时间:2023-01-22 21:30:00 28zjw印制板连接器

1,环境部署

AndroidStudio(4.xxx以上版本)安装NDK、CMake插件/

2,简单示例

(1)main目录下创建jni子目录

(2)创建demo.cpp文件

注意,方法名对应native例如,方法目录com.zjw.demo目录下MainActivity#getFromJni()声明如下:

#include "demo.h" #include #include extern "C" {     JNIEXPORT jstring JNICALL Java_com_zjw_demo_MainActivity_getFromJNI(JNIEnv *env, jobject obj ){     return env -> NewStringUTF("Hello,I am from JNI!");  } }

(3)创建Android.mk和Application.mk文件

这两个文件用于指定编译路径、编译平台等配置

//Android.mk  LOCAL_PATH       :=  $(call my-dir) include              $(CLEAR_VARS) LOCAL_MODULE     :=  hello_jni LOCAL_SRC_FILES  :=  demo.cpp include              $(BUILD_SHARED_LIBRARY)  //Application.mk //空

LOCAL_MODULE是生成so库名。

(4)activity中声明native方法

System.loadLibrary()方法是生成so库libxxx后xxx,也就是之前声明的模块名

import android.os.Bundle; import android.view.View; import android.widget.Button;  import com.example.myapplication.R;  public class MainActivity extends AppCompatActivity {      static {         System.loadLibrary("hello_jni");     }      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          findViewById(R.id.demo).setOnClickListener(view -> {             ((Button) findViewById(R.id.demo)).setText(getFromJNI());         });     }       public native String getFromJNI(); }

(5)生成so库

切换命令行到jni目录,操作ndk-build自动生成命令so库。

如果找不到目录,请配置环境变量或ndk-build全路径输入。

自动生成jniLibs如果生成了目录libs请更名目录,否则找不到。so在各种架构平台下生成库。so库。

(6)运行

点击按钮即可获得jni返回的字符串

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章