1. 程式人生 > >NDK第一章--認識NDK及簡單的輸出hello world

NDK第一章--認識NDK及簡單的輸出hello world

交叉編譯

  • 在一個平臺下,編譯出另一個平臺能夠執行的二進位制程式碼
  • 平臺: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為例)

  1. 在專案中根目錄下建立jni資料夾
  2. 在jni檔案中建立一個c檔案
  3. 在java程式碼中,建立一個本地方法helloFromC:
    public native String helloFromC();
  4. 在jni中定義函式實現這個方法,函式名必須為: “jstring Java_包名類名方法名(JNIEnv env,jobject obj)”
    jstring Java_com_wangzp_packet_MainActivity_helloFromC(JNIEnv env,jobject obj)
  5. 返回一個字串,用c定義一個字串:
    char* cstr = “hello form c”
  6. 把c的字串轉換成java字串
    jstring jstr = (*env)->NewStringUTF(env,cstr)
  7. 在jni中建立Android.mk檔案
  8. 在c檔案中新增標頭檔案“jni.h”標頭檔案
  9. 在jni資料夾下執行ndk-build.cmd指令