zoukankan      html  css  js  c++  java
  • Android 简单的JNI编程

    1、先是编写包含 native 方法的类库

    package com.miles.libs;
    
    public class Hello {
        
        // 加载本地库
        static {
            System.loadLibrary("Hello");
        }
    
        // 本地库中的方法
        public native String hello();
    }

    2、用javah生成 c/c++ 头文件

    javah -classpath 编译目录 类名

    javah -classpath ./bin/classes com.miles.libs.Hello

    生成的头文件:com_miles_libs_Hello.h

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class com_miles_libs_Hello */
    
    #ifndef _Included_com_miles_libs_Hello
    #define _Included_com_miles_libs_Hello
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_miles_libs_Hello
     * Method:    hello
     * Signature: ()Ljava/lang/String;
     */
    JNIEXPORT jstring JNICALL Java_com_miles_libs_Hello_hello
      (JNIEnv *, jobject);
    
    #ifdef __cplusplus
    }
    #endif
    #endif

    PS:此文件在你调用javah命令的目录里面

    3、新建jni文件目录 将头文件拷贝进去,在目录时面编写c/c++文件

    代码文件:com_miles_libs_Hello.c

    #include <jni.h>
    #include "com_miles_libs_HelloLibs.h"
    
    JNIEXPORT jstring JNICALL Java_com_miles_libs_Hello_hello(JNIEnv *env, jobject thiz)
    {
        return (*env)->NewStringUTF(env, "Hello JNI !");
    }

    4、编写 Android.mk文件

    LOCAL_PATH      := $(call my-dir)
    include         $(CLEAR_VARS)
    LOCAL_MODULE    := Hello
    LOCAL_SRC_FILES := com_miles_libs_Hello.c
    include         $(BUILD_SHARED_LIBRARY)

    关于mk文件的编写请自行查阅

    5、编译在配置好 ndk 的环境下进行编译

    我这里用的是  android-ndk-r8c  这个版本编译的,在过高的版本编译会报错,没有深入研究!

  • 相关阅读:
    nikto web server 扫描工具
    crowdsec开源安全引擎
    windows strace 类似的工具
    禁用spring boot 暴露的几个产品可用的endppint 服务
    nginx proxy minio 默认页配置(三)
    nginx proxy minio 默认页配置(二)
    nginx proxy minio 默认页配置
    flamescope + chrome cpu profile 分析web 性能
    golang noCopy 的功能
    golang 死锁&&静态检查的一些工具
  • 原文地址:https://www.cnblogs.com/smile365/p/3978764.html
Copyright © 2011-2022 走看看