而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種不同時期的必須品。