1.安装NDK(相信大家都会)
2.将下载的NDK目录添加到环境变量里面去
配置正常如上图
3.创建NDKUtils类
public class NDKUtils {
public native String invokeCmethod();
static {
System.loadLibrary("NDKUtils");//导入生成的链接库文件
}
}
4.使用控制台 进入当前Android项目的main下
输入 javah -d jni -bootclasspath C:\Users\mengying\AppData\Local\Android\sdk\platforms\android-27\android.jar;..\..\build\intermediates\classes\debug com.example.mengying.myapplication.NDKUtils
解释引用自http://www.cnblogs.com/xiaoxiaoqingyi/p/6524165.html (这里解释的目录和我的不一样根据位置对于就好了)
这时候这里就出现了jni文件夹(一开始使用的是classpath而不是bootclasspath一直错误)解决方案参考
这时候文件里面就会生成一个.h文件 复制他将后缀改为.c
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_magicing_eigenndk_NDKUtils */
#ifndef _Included_com_magicing_eigenndk_NDKUtils
#define _Included_com_magicing_eigenndk_NDKUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_magicing_eigenndk_NDKUtils
* Method: invokeCmethod
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_magicing_eigenndk_NDKUtils_invokeCmethod
(JNIEnv *env, jobject obj){
return (*env)->NewStringUTF(env,"test");
}
#ifdef __cplusplus
}
#endif
#endif
添加一个测试代码
接下来就是配置文件下的 Android.mk,Application.mk
新建一个文件 命名为 Application.mk里面写上这两句
APP_PLATFORM := android-27
APP_ABI := x86_64, armeabi-v7a
同上 新建一个Android.mk
下面的文件名需要根据自己的工程进行修改
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NDKUtils
LOCAL_SRC_FILES := com_example_mengying_myapplication_NDKUtils.c
include $(BUILD_SHARED_LIBRARY)
然后在控制台输入命令 ndk-build
生成.so 文件
在这里加上这个
sourceSets{
main{
jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk
jniLibs.srcDir 'src/main/java/libs'
}
}
实例化一下:
然后运行一下
之前输入显示中文还报错input is not valid Modified UTF-8: illegal start byte 0xa0
重新配置才解决问题。
这样ndk算是配置完成了。
ps::这个名字有命名要求可以直接将下面的错误提示复制过来即可