最近經手 Android App,面臨一些基本知識技術,必要從最基本的定義了解起⋯⋯😎
此篇來了解 SDK 和 NDK 差別,同場上映 JNI。
Android SDK(Android Software Development Kit),即 Android 軟體開發工具包,可以說只要你使用 JAVA 去開發 Android App 就必須用到。它包含了 SDK Manager 和 AVD Manager,對於 Android 系統的一些開發版本的管理以及模擬器管理。不過它只能運行純 JAVA 程式,有了它,模擬器才可以使用。
而 NDK(Native Development Kit)跟 SDK 類似的是,它也是一個開發工具包。用它開發 C/C++ 是相當方便的。它有一個強大的編譯集合。JAVA 調 C/C++(JNI接口),是一些 JAVA 如何調 C 的程式碼。它會把 C 程式編譯成一個 .SO 的動態庫,透過 JNI 接口用 JAVA 程式去調用它,有了它,我們可以直接在 Android 程式碼中去添加 C 程式。
出現 NDK 的原因:很早以前 Android 是只有 SDK 的,並沒有 NDK。這就意味著,一旦 Android 的開發者要使用 C/C++ 的第三方庫,或者需要用到 C/C++,就必須使用非官方的方法,也就是用 JAVA 的 JNI 去調用 C/C++。
就像耍小聰明走後門一樣,而 NDK 的出現就意味著 JNI 調用的這種方法轉正了,如今變成官方提供的工具,以後你就不需要再走後門,大路正門隨你出入。如果要操作底層或操作記憶體,那就不得不去使用 C/C++,因為 JAVA 想做這塊頗有困難,於是 NDK 成為必須。
因此,對於 Android 來說,SDK 和 NDK 是同種語言的 2 種不同開發情境的必須品。
註:
JNI(JAVA Native Interface)標準是 JAVA 平台的一部分,它允許 JAVA 程式碼和其它語言的程式碼進行交互。 JNI 是本地編程接口,它使得在 JAVA 虛擬機(VM)內部運行的 JAVA 程式碼能夠與其它編程語言(如 C/C++ 和彙編語言)編寫的應用程式和庫進行交互操作。
參考:
隨意留個言吧:)~