public final static native int startservice();
2.选择项目右击Android tools->Add native support 就会生成jni文件 如图
3.cd user/alarmTest/bin/命令进入到项目的classes 执行 javah com.li.JNI 包名.类名 可以生成com_yfz_JNI.h文件 然后把com_yfz_JNI.h文件拷贝到jni文件下如图
4修改android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Test 这个是生成库文件的名字
LOCAL_SRC_FILES := com_li_JNI.cpp 注意这里默认是生成的项目名.cpp这里我们需要改成 包名_类名.cpp 因为生成的里面没有代码所以可以用.h文件的
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog 这一条就是我们要用的android log信息打印的库文件
include $(BUILD_SHARED_LIBRARY)
5.修改com.li.JNI.cpp
引入二个需要用到的文件相当于java import
#include <jni.h>
#include <android/log.h>
然后在.cpp里面加入因为.h文件里面已经生成了接口在cpp里面要去实现{
__android_log_print(ANDROID_LOG_ERROR, "test-jni", "%s", "error");
//ANDROID_LOG_ERROR 这是android 里面的log级别 这里是error
//test-jni 是android里面的 tag
// "%s" 表示输入的是字符串
//error 是我们打印的内容
}
6.点击project->build project就可以生成so库文件了
7.加载库文件System.loadLibrary("Test");
8.调用jni方法 JNI.startservice();
9.下面就是我们从android 调用所显示的
ok 今天就到这里了!!大家有什么问题可以留言 大家一起学习!!
原文地址:http://blog.csdn.net/lipingaccp/article/details/41901741