2013年9月4日 星期三
0 意見

The Android NDK

晚上11:23

Android NDK (native development kid)


android SDK 是寫android APP的發展系統,以java語言為主,被google封裝成 apk 的形式.

當程式設計師寫好app後, 執行的時候, 是被Dalvik虛擬機器執行, 而不是直接以機器碼的形式執行.   由dalvik虛擬機器執行最大的好處是, 底層硬體平台被dalvik隔離, app可以在任何android 裝置上執行, 而不用考慮其硬體cpu為何.    dalvik 接收app碼, 再將其轉換為底層cpu可執行的模式執行.

簡單的說, 經由dalvik虛擬機器處理的app, 其執行速度, 相較於以c 寫得程式, 會慢許多, 這在作video或audio運算時, 差異更大.  所以以java為程式語言的app, 與以c 為程式語言的驅動程式或其他app在android 系統內室一種trade-off, 都是必要元件.    所以google就提出來NDK, 讓程式設計師可以在java內呼叫c, 來加快程式執行的速度.  當然這樣一來, 過去用c寫得程式, 也可以繼續使用.

這樣一來, 主程式架構可以用java來寫, 對於速度敏感的部份如驅動程式, 3d繪圖等等, 則用c來寫.整個 android系統都是這樣運作的.  對內, android內部則用JNI(java native interface)表示java call  c  的結構.   android 上層用java, 底層用c , 中間用JNI串接.      對外, google提出ND發展系統, 以串接java與 c.  道理原理都一樣. 


怎麼實作?
1、製作所需要的函式 .Java 檔。
2、The JNI Head File , javah tool  , javah -jni  com.xxx.yyy package ,  產出所需的 h 檔。
3、Implement C 檔。
4、Make file。
5、Building the shared Library. 
6、在 Activity 中引用。O'REILLY  Learning Android.
http://cheng-min-i-taiwan.blogspot.tw/2010/06/android-ndk-hellojni.html (怎麼實作!) http://49ohm.blogspot.tw/2012/04/android-ndk.html (為何需要 android NDK ?)

0 意見:

張貼留言

 
Toggle Footer
Top