首页 > 代码库 > Android 简单的JNI编程
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 __cplusplusextern "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 := HelloLOCAL_SRC_FILES := com_miles_libs_Hello.cinclude $(BUILD_SHARED_LIBRARY)
关于mk文件的编写请自行查阅
5、编译在配置好 ndk 的环境下进行编译
我这里用的是 android-ndk-r8c 这个版本编译的,在过高的版本编译会报错,没有深入研究!
Android 简单的JNI编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。