重庆在百度做个网站多少钱,建站之星 discuz,广东网站seo,深圳网站公司1、jni#xff1a;java native interface 作用#xff1a;用于java代码和C、c代码的交互#xff08;代码混编#xff09;#xff1b; 分类使用#xff1a;Jni静态注册、jni动态注册 2、静态注册 1#xff09;.绑定java方法和C/C方法的方式之一#xff1b; …1、jnijava native interface 作用用于java代码和C、c代码的交互代码混编 分类使用Jni静态注册、jni动态注册 2、静态注册 1.绑定java方法和C/C方法的方式之一 2.java层操作和c层操作以及整体编译 1-定义被native修饰的方法 2-根据java代码生成.h头文件javah -jni 类的包名路径 3-编写C/C代码导入.h头文件实现我们.h头文件中方法 4-编写配置两个mk文件application.mk/android.mk 5.通过ndk-build生成so文件 6.java代码中加载so文件system.loadlibrary 7.补充获取so库的名称 1-libs文件下去头去尾头lib尾.so; 2.在android.mk直接复制模块名称 3.动态注册 1作用.绑定java方法和C/C方法的方式之一 2流程 1-java中定义native的方法 2-创建C代码代码导入头文件 2.1-编写配置两个mk文件application.mk/android.mk 3-JNInativeMethod:绑定java方法和C/C的方法 4-registerNatives4个参数注册java层相应的类以及方法 5-使用jni.h中JNI_onload进行判断注册是否成功JIN_onload系统调用相当于java中的psvmpublic static void main 6-ndk-build生成so 7-java代码中加载so文件system.loadlibrary
总结静态注册和动态注册比较 静态注册1.编写不方便jni方法名必须遵守规则且名字很长 2.过程较多效率低 3.不安全 动态注册1.流程清晰可控 2.效率更高安全 3.JIN_onload
NDK开发总结 关于头文件 1.静态注册 创建了4个文件.c、.h、.mk、.mk JNIstudy.c#inude .h 各种代码的实现实现java层被native修饰的方法 JNIstudy .h#include jni.h、#include number.h、#include String.h mk配置文件 捋一捋这句话在.c文件里面导入包含jni.h头文件的 JNIstudy.h头文件 2.动态注册 创建了3个文件.c、.mk、.mk .c#include jni .h 各种代码的实现实现java层被native修饰的方法 mk配置文件 Android.mk
LOCAL_PATH : $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE : JNIstudy #ģ
LOCAL_SRC_FILES : JNIstudy.c #Դļ .c.cpp
LOCAL_ARM_MODE : arm #ָ ARMָ
LOCAL_LDLIBS -llog #
include $(BUILD_SHARED_LIBRARY) #ָļ Application.mk
APP_ABI : armeabi-v7a