NDK第一章--認識NDK及簡單的輸出hello world
阿新 • • 發佈:2018-11-04
交叉編譯
- 在一個平臺下,編譯出另一個平臺能夠執行的二進位制程式碼
- 平臺:windows,mac,os,linux
- 處理器:x86,arm,mips
交叉編譯的原理
- 原始碼–>編譯–>連線–>可執行程式
- 模擬其他的平臺特性
交叉編譯的工具鏈
- 多個工具的集合,一個工具使用完後按著呼叫下一個工具
常見工具
- NDK:native developement kit: 開發jni必備,就是模擬其他平臺特性來編譯程式碼的工具
- CDT:c/c++ development tools:高亮顯示c語音關鍵字
- cygwin:一個模擬器,可以在windows下執行linux指令
NDK目錄結構
- docs:幫助文件
- build/tools: 預編譯使用的二進位制可執行檔案
- sample:jni的使用例子
- source: ndk的編碼
- toolchains:工具鏈
- ndk—build.cmd:編譯打包c程式碼的一個指令
使用jni的步驟:(以下為呼叫c方法輸出hello world為例)
- 在專案中根目錄下建立jni資料夾
- 在jni檔案中建立一個c檔案
- 在java程式碼中,建立一個本地方法helloFromC:
public native String helloFromC(); - 在jni中定義函式實現這個方法,函式名必須為: “jstring Java_包名類名方法名(JNIEnv env,jobject obj)”
jstring Java_com_wangzp_packet_MainActivity_helloFromC(JNIEnv env,jobject obj) - 返回一個字串,用c定義一個字串:
char* cstr = “hello form c” - 把c的字串轉換成java字串
jstring jstr = (*env)->NewStringUTF(env,cstr) - 在jni中建立Android.mk檔案
- 在c檔案中新增標頭檔案“jni.h”標頭檔案
- 在jni資料夾下執行ndk-build.cmd指令