一.Jni头文件的生成
1.第一步:编写jni文件
package com.tool.hz2py; public class Hz2py { static { System.loadLibrary("Hz2py"); } public native String hz2py(String text); }
2.使用android studio自带的工具Terminal编译生成jni的头文件com_tool_hz2py_Hz2py.h
1>先进入到项目的java文件目录下
cd hz2pydemo/src/main/java
2>使用javah 编译jni文件
javah -d ../../../jni -jni -classpath ../../../build/intermediates/classes/debug com.tool.hz2py.Hz2py
解释:
-d<dir> 输出目录,后面跟上要生成的目录名
-jni 生成Jni样式的标头文件
-classpath<path> 指定加载类的路径,后面跟上你要生成头文件的这个类的路径,例如:
..\..\..\build\intermediates\classes\debug(这个是类所在的路径)
com.tool.hz2py.Hz2py(类的包名)
编译成功后,在项目中将会生成一个jni的文件夹,生成的jni头文件就在下面
一.so文件的编译
1.将jni头文件生成之后,编写C语言的代码,应用jni方法
创建一个demo.c的文件
// // Created by luozha on 2017/11/6. // #include "com_tool_hz2py_Hz2py.h" JNIEXPORT jstring JNICALL Java_com_tool_hz2py_Hz2py_hz2py
(JNIEnv*env, jobject obj){
return (*env)->NewStringUTF(env, "This just a test for Android Studio NDK JNI developer!"); }
创建一个Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=Hz2py
LOCAL_SRC_FILES := demo.c //要使用的文件,刚才编写的demo.c文件
include $(BUILD_SHARED_LIBRARY)
开始编译so文件:
在Terminal进入Android.mk所在的文件目录
然后输入ndk-build
编译成功后: