Android:JNI 與 NDK到底是什麼?(含實例教學)

https://blog.csdn.net/carson_ho/article/details/73250163

JNI

  • 定義:Java Native Interface,即 Java本地接口
  • 作用: 使得Java 與 本地其他類型語言(如C、C++)交互
  • 背景:實際使用中,Java 需要與 本地代碼 進行交互
  • 問題:因爲 Java 具備跨平臺的特點,所以Java 與 本地代碼交互的能力非常弱
  • 解決方案: 採用 JNI特性 增強 Java 與 本地代碼交互的能力

實現步驟

  • 在Java中聲明Native方法(即需要調用的本地方法)
  • 編譯上述 Java源文件javac(得到 .class文件)
  • 通過 javah 命令導出JNI的頭文件(.h文件)
  • 使用 Java需要交互的本地代碼.
  • 實現在 Java中聲明的Native方法 如 Java 需要與 C++ 交互,那麼就用C++實現 Java的Native方法
  • 編譯.so庫文件
  • 通過Java命令執行 Java程序,最終實現Java調用本地代碼

NDK

  • 定義:Native Development Kit,是 Android的一個工具開發包 NDK是屬於 Android 的,與Java並無直接關係
  • 作用:快速開發C、 C++的動態庫,並自動將so和應用一起打包成 APK 即可通過 NDK在 Android中 使用 JNI與本地代碼(如C、C++)交互
  • 應用場景:在Android的場景下 使用JNI 即 Android開發的功能需要本地代碼(C/C++)實現
  • 特點

  • 額外注意

 

使用步驟

  • 配置 Android NDK環境
  • 創建 Android 項目,並與 NDK進行關聯
  • 在 Android 項目中聲明所需要調用的 Native方法
  • 使用 Android需要交互的本地代碼 實現在Android中聲明的Native方法 比如 Android 需要與 C++ 交互,那麼就用C++ 實現 Java的Native方法
  • 通過 ndk - bulid 命令編譯產生.so庫文件
  • 編譯 Android Studio 工程,從而實現 Android 調用本地代碼

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