作者/来源:yixinu.com
栏目:运维/编程
日期:2019-08-31 14:09:30
1、在 xkylelib (项目名称) 点击右键,依次点击 new -> folder -> jni folder ,建立 jni 目录
2、在 main / java 下建立 jniutils 类,内容如下:
package com.yixinu.dev.xkylelib; static { System.loadLibrary("kyleclient1"); } public class jniutils { public static native String printhello(); }
3、打开终端,cd 到 module项目/src/main/java 目录下,然后输入命令:
javah -d ../jni -jni com.yixinu.dev.xkylelib.jniutils
其中 com.yixinu.dev.xkylelib.jniutils 是建立的 java 类名,-d ../jni,表示输出到目录
这时会在 jni 目录下创建一个文件 com_yixinu_dev_xkylelib_jniutils.h
4、在 jni 目录上创建 Android.mk 文件,内容如下:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := kyleclient1 MY_CPP_PATH := $(LOCAL_PATH)/ My_All_Files := $(shell find $(MY_CPP_PATH)/.) My_All_Files := $(My_All_Files:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%) MY_CPP_LIST := $(filter %.cpp %.c,$(My_All_Files)) MY_CPP_LIST := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%) LOCAL_SRC_FILES := $(MY_CPP_LIST) include $(BUILD_SHARED_LIBRARY)
5、在 jni 目录上创建 Application.mk 文件,内容如下:APP_MODULES = kyleclient1 APP_ABI := armeabi-v7a arm64-v8a x86 APP_STL := c++_shared APP_PLATFORM := android-21
6、到终端 ,进入 jni 目录 ,执行命令 :~/Android/Sdk/ndk-bundle/ndk-build
7、在 jni 目录下创建 com_yixinu_dev_xkylelib_jniutils.c 文件 ,并实现 .h 文件中的方法
8、接下来天马行空在.c 文件里面写下想写的C/C++代码
9、在 src/build.gradle 文件中加入以下代码 :(在 buildTypes 项下面)
sourceSets {
main {
jniLibs.srcDirs = ['src/main/libs']
jni.srcDirs = [] //屏蔽掉默认的jni编译生成过程
}
}
10、到终端 ,进入 jni 目录 ,执行命令 :~/Android/Sdk/ndk-bundle/ndk-build
11、编译 module , build -> make module xkylelib .