在Mac的Android Studio 2.1 中使用Android NDK(Native Development Kit) Part 3: NDK 檔案設置
Part 3: NDK 檔案設置
新增Jni資料夾以及新增自訂Class,可以供我們在Android中呼叫Native method。
另外還要新增兩個檔案分別是Application.mk & Android.mk,下面會針對各個檔案有更進一步說明。
3-1. 新增jni資料夾(左方的瀏覽功能,需要切到Project模式才看得到此資料夾,而非Android模式)
點選File->New->Folder->JNI Folder,點選Finish新增完畢。
3-2. 設置app的gradle檔案
moduleName: JNI模組的名稱
ldLibs: Debug用,可以在Android Studio的Android Monitor印出Log訊息。
點選android.useDeprecatedNdk=true,即可修正錯誤。(或者到gradle.properties手動加入此行)
3-3. 在Project中New一個Java Class (MyNdkHelloWorld)
在Class中宣告一個Method,回傳String。
3-4. 在MyNdkHelloWorld class上,按下右鍵->External Tools-> javah。
(也可從工具列的Tools-> External Tools->javah新增)
系統將自動在jni目錄下產生***.h檔。若有更動MyNdkHelloWorld class(自訂的class),也要重新使用javah產生header file。
(檔名為{你的package name}_{這個NDK class name},如: com_test_example_MyNdkHelloWorld.h)
3-5. 新增.cpp檔案
在jin資料夾點右鍵New->C/C++ Source File,新增HelloJni檔案。
3-6. 製作Application.mk
在jni資料夾點右鍵,New->File,輸入"Application.mk"
編輯此檔案:
詳細說明: https://developer.android.com/ndk/guides/application_mk.html
3-7. 製作Android.mk
在jni資料夾點右鍵,New->File,輸入"Android.mk"
編輯此檔案:
LOCAL_MODULE: NDK模組名稱
LOCAL_SRC_FILES: C/C++程式碼
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog : 用來顯示Log在Android Monitor上
詳細說明: https://developer.android.com/ndk/guides/android_mk.html
新增Jni資料夾以及新增自訂Class,可以供我們在Android中呼叫Native method。
另外還要新增兩個檔案分別是Application.mk & Android.mk,下面會針對各個檔案有更進一步說明。
3-1. 新增jni資料夾(左方的瀏覽功能,需要切到Project模式才看得到此資料夾,而非Android模式)
點選File->New->Folder->JNI Folder,點選Finish新增完畢。
3-2. 設置app的gradle檔案
moduleName: JNI模組的名稱
ldLibs: Debug用,可以在Android Studio的Android Monitor印出Log訊息。
android { ... defaultConfig { ... ndk { moduleName "myJNI" ldLibs "log" } } sourceSets.main { jni.srcDirs = [] jniLibs.srcDir "src/main/jniLibs" } ... }設置完畢後點右上角的Sync Now,接著會跳出以下的錯誤。
點選android.useDeprecatedNdk=true,即可修正錯誤。(或者到gradle.properties手動加入此行)
3-3. 在Project中New一個Java Class (MyNdkHelloWorld)
在Class中宣告一個Method,回傳String。
public class MyNdkHelloWorld { static { System.loadLibrary("myJNI"); } public native String getNdkHelloWorld(); }
3-4. 在MyNdkHelloWorld class上,按下右鍵->External Tools-> javah。
(也可從工具列的Tools-> External Tools->javah新增)
系統將自動在jni目錄下產生***.h檔。若有更動MyNdkHelloWorld class(自訂的class),也要重新使用javah產生header file。
(檔名為{你的package name}_{這個NDK class name},如: com_test_example_MyNdkHelloWorld.h)
3-5. 新增.cpp檔案
在jin資料夾點右鍵New->C/C++ Source File,新增HelloJni檔案。
// include的檔案會依照專案的package名稱有所不同 #include "com_test_example_MyNdkHelloWorld.h" JNIEXPORT jstring JNICALL com_test_example_getNdkHelloWorld (JNIEnv *env, jobject){ return (*env).NewStringUTF("Hello world from Android NDK!"); }
3-6. 製作Application.mk
在jni資料夾點右鍵,New->File,輸入"Application.mk"
編輯此檔案:
詳細說明: https://developer.android.com/ndk/guides/application_mk.html
APP_ABI := all
3-7. 製作Android.mk
在jni資料夾點右鍵,New->File,輸入"Android.mk"
編輯此檔案:
LOCAL_MODULE: NDK模組名稱
LOCAL_SRC_FILES: C/C++程式碼
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog : 用來顯示Log在Android Monitor上
詳細說明: https://developer.android.com/ndk/guides/android_mk.html
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := myJNI LOCAL_SRC_FILES := HelloJni.cpp LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog include $(BUILD_SHARED_LIBRARY)
留言
張貼留言