Android配置 NDK

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章