Just My Life & My Work

SDK 和 NDK 差別

最近經手 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++ 和彙編語言)編寫的應用程式和庫進行交互操作。

參考:

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: