基於Android NDK的學習之旅—–序言 – Android移動開發技術文章_手機開發 Android移動開發教學課程

前些日子做瞭個Android項目, 引擎層 用C的, 準備寫這個系類的文章,借此跟朋友來分享下我NDK開放的經驗以及自己知識的總結和備忘。希望能給需要這方面資料的朋友提供一定的幫助。
主要涉及到:
環境的搭建
Android.mk 文件的 配置
HelloWorld
NDK 打印信息
JNI 數據類型
Java 調用 C,C 調用 Java:
Java—C 之間的 數據的傳輸(基本數據類型的傳輸,String的傳輸,對象的傳輸,數組的傳輸等等)
在C中新建Java對象
Java方法在C中的映射(包括瞭簽名的使用)
C中如何調用Java的方法(包括瞭靜態的和非靜態的,以及參數的傳遞和返回值的處理)
JNI中資源的釋放 等等
 
 
先詳細介紹下NDK, JNI:
 
What is the NDK?
 
      Google Say:
The Android NDK is a toolset that lets you embed components that make use of native code in your Android applications.
Android applications run in the Dalvik virtual machine. The NDK allows you to implement parts of your applications using native-code languages such as C and C++. This can provide benefits to certain classes of applications, in the form of reuse of existing code and in some cases increased speed.
 
【Android NDK是一個工具集合,讓你嵌入組件,利用原生代碼在你的Android Application。
Android應用在虛擬機上執行.NDK允許你的應用通過原生代碼如C和C++去實現.這將給某些應用帶來好處,這種方式能代碼重用,並且在某些情況下提高執行速度】(個人翻譯,翻譯不準確的請指出)
 
 NDK全稱:Native Development Kit。
 
Android NDK 是配合 Android SDK 的工具,Google 推出NDK的目的不是為瞭取代Android SDK ,當然也不可能完全取代,它隻是作為Android SDK  的一個補充。用來編譯應用的原生代碼。
 1、NDK是一系列工具的集合。
  * NDK提供瞭一系列的工具,幫助開發者快速開發C(或C++)的動態庫,並能自動將so和java應用一起打包成apk。這些工具對開發者的幫助是巨大的。
  * NDK集成瞭交叉編譯器,並提供瞭相應的mk文件隔離CPU、平臺、ABI等差異,開發人員隻需要簡單修改mk文件(指出“哪些文件需要編譯”、“編譯特性要求”等),就可以創建出so。
  * NDK可以自動地將so和Java應用一起打包,極大地減輕瞭開發人員的打包工作。
  2、NDK提供瞭一份穩定、功能有限的API頭文件聲明。
Google明確聲明該API是穩定的,在後續所有版本中都穩定支持當前發佈的API。從該版本的NDK中看出,這些API支持的功能非常有限,包含有:C標準庫(libc)、標準數學庫(libm)、壓縮庫(libz)、Log庫(liblog)。
 
What is the JNI?
      Sun say:
THE Java Native Interface (JNI) is a powerful feature of the Java platform.
Applications that use the JNI can incorporate native code written in programming languages such as C and C++, as well as code written in the Java programming language. The JNI allows programmers to take advantage of the power of the Java platform, without having to abandon their investments in legacy code. Because the JNI is a part of the Java platform, programmers can address interoperability issues once, and expect their solution to work with all implementations of the Java platform.
 
JNI是Java Native Interface的縮寫,中文為JAVA本地調用。從Java1.1開始,Java Native Interface(JNI)標準成為java平臺的一部分,它允許Java代碼和其他語言寫的代碼進行交互。JNI一開始是為瞭本地已編譯語言,尤其是C和C++而設計的,但是它並不妨礙你使用其他語言,隻要調用約定受支持就可以瞭。
 
 
網絡上相關的介紹資料太多瞭,我就不囉嗦瞭。嘎嘎
 
 
點擊下載 常用文檔:
NDK R5 Docs.rar
JNI Docs.rar
盡量一天一篇,下篇講解 elipse sdk ndk cygwin cdt 環境的搭建
 
 
本文出自 “Duicky” 博客

發佈留言