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算是配置完成了。