网站开发英语wordpress开发sns
1、jni:java 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-registerNatives(4个参数):注册java层相应的类以及方法
             5-使用jni.h中JNI_onload进行判断:注册是否成功(JIN_onload:系统调用,相当于java中的psvm:public 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 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
