[Android NDK]自己动手实现TestJni
在Eclipse中新建Android Application Project
工程名:TestJni
包名:com.example.testjni
Add Android Native Support
鼠标移至工程TestJni,点击鼠标右键
选择Android Tools
选择And Native Support
点击Finish
完成后,TestJni中出现jni、libs和obj这三个文件夹
在文件夹jni中添加c文件
文件名:com_example_testjni_JniClient.c
代码如下
#include "jni.h" #include "stdio.h" jstring Java_com_example_testjni_JniClient_HelloWorld( JNIEnv* env, jobject thiz ) { return (*env)->NewStringUTF(env, "my GF is xiao xiao " ); }
在eclipse的C/C++界面进行编译编译
点击下图中红色框中的图标
若编译出现问题
(1)问题分析:没有将jni.h导入
(2)解决方法:
<1>参照以下步骤:Project Properties -> C/C++ General -> Path and Symbols选择include标签,Add ->jni.h的路径,且选中All languages.最后Apply -> OK
<2>如果添加了头文件还是问题,那可能是因为工程是C++工程,但代码是用c风格来写的,解决方法是将工程文件”.project”中的org.eclipse.cdt.cpre.ccnature行去掉,重新打开Eclipse工程。
修改Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := TestJni //生成的so库的名称 LOCAL_SRC_FILES := com_example_testjni_JniClient.c //调用的名称 include $(BUILD_SHARED_LIBRARY)
在文件夹jni中添加Application.mk文件
#APP_ABI :=x86 APP_ABI :=all
在JAVA代码中加入库的载入代码及接串口声明&调用代码
//调用函数 String str = JniClient.HelloWorld(); //声明代码 static public native String HelloWorld(); //库载入代码 static { System.loadLibrary("TestJni"); }
调试运行
运行结果:显示c文件返回的字符串:my GF is xiao xiao