jdk环境和ndk的配置安装成功的情况下,在按照下面的来:
在Android工程(MyProject)创建成功之后,在工程的src目录下可以自定义一个包(例如:com.example.xuexijni),然后在该包名下创建提供jni借口java文件,先把native方法写好,java文件内容例如:
example:
LibHello.java:内容如下:
public class LibHello {
static {
System.loadLibrary("Hello");//下边编译生成的libHello.so库在此处调用
}
public native boolean MyMethord(int parames);
}
Eclipse下在命令行进入工程MyProject/目录下,通过javah命令生成c/c++的文件头,命令如下:
javah -classpath bin/classes -d jni com.example.xuexijni.LibHello (eclipse下)
Android Stduio下在命令行进入工程/app/src/main/目录下通过javah命令生成c/c++的文件头如下(在进行该命令前需要在工程选项菜单中的Build中选择Make Project使其更新一下build/intermediates/classes/debug):
javah -d jni -classpath ../../build/intermediates/classes/debug com.example.xuexijni.LibHello (Android Stduio下)
生成的文件头为com_example_xuexijni_LibHello.h,可以将生成的头文件重命名为LibHello.h
然后根据头文件编写c/c++代码于LibHello.cpp中,编写完毕后,需要修改Android.mk文件和Application.mk文件,
Android.mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CPP_EXTENSION := .cpp
LOCAL_MODULE := libHello
LOCAL_SRC_FILES := seedlib.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk文件:
APP_MODULES := libHello
APP_PLATFORM := android-16
APP_ABI := armeabi armeabi-v7a
APP_OPTIM := release
APP_STL := gnustl_static
APP_CPPFLAGS += -fpermissive
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -frtti
然后命令行运行ndk-build命令后开始变异libHello.so库.
上述的关于Android.mk文件和Application.mk文件后期在做详细了解。