zoukankan      html  css  js  c++  java
  • JNI的开发步骤

    使用C函数实现Java本地方法:

    1. java代码里面声明一个native的方法

      public native String helloFromC();

    2. 在工程目录下面创建一个jni的文件夹

    3. jni文件夹里面编写c代码,实现java的本地方法

      //JNIEnv* envJNI本地接口这个结构体的二级指针

      //该结构体中封装了很多函数指针方便程序员开发jni代码

      //jobject obj MainActivity的对象,调用者对象

      jstring Java_包名_类名_方法名(JNIEnv* env,jobject obj){}

      编译运行C函数,生成so可执行文件:

    4. jni文件夹下创建Android.mk文件,c代码编译的脚本文件

      # $表示调用ndk中定义好的方法或者变量

      # 加载本地的jni目录,当在dos窗口中执行ndk-build命令时,会找工程目录下中的jni目录;

      LOCAL_PATH := $(call my-dir)

      # 下次重新生成动态库时,清理掉上次生成的变量

      include $(CLEAR_VARS)

      # 指定生成的动态库的名称,生成动态库文件后,文件名为libhello.so

      LOCAL_MODULE := hello

      # 指定了本地的c文件

      LOCAL_SRC_FILES := Hello.c

      # 指定了生成库的类型:BUILD_SHARED_LIBRARY表示动态库.soBUILD_STATIC_LIBRARY表示静态库.a

      # 动态库.so文件小,静态库.a文件大。

      include $(BUILD_SHARED_LIBRARY)

    5. 调用ndk-build指令编译c代码

      注意配置环境变量生成一个.so的文件 ( c代码编译出来的二进制可执行文件)

    6. java代码里面写静态代码块,加载so文件

      static{

        System.loadLibrary("hello");

      }

    7. 像使用一般java方法一样调用native的方法.

  • 相关阅读:
    园子一周年
    HTML5本地存储之Web Storage实例篇,最有用的是localStorage
    解析H5本地储存Web Storage
    response.sendRedirect传递参数和转向
    html文件form表单action调用servlet连接mysql数据库实例
    容器List之ArrayList详解
    PageHelper的使用
    可迭代对象、迭代器、生成器
    伪随机数生成器——random模块的用法
    python中的单例设计模式
  • 原文地址:https://www.cnblogs.com/loaderman/p/6440009.html
Copyright © 2011-2022 走看看