Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android NDK學習筆記1-基礎知識篇

Android NDK學習筆記1-基礎知識篇

編輯:關於Android編程

引言

最近開發項目用到了多個C語言編寫的動態鏈接庫so,期間遇到很多問題,項目開發完畢後,我覺得有必要把開發中的一些知識點總結下來,並結合我手邊的一本經典教程《Pro
Android C++ with the NDK》,寫下這個系列的文章,分享給大家,希望給想入門Android NDK開發的朋友帶來幫助。

什麼是 Android NDK?

Android NDK(Native Development Kit )是一套工具集合,允許你用像C/C++語言那樣實現應用程序的一部分。同時,Android NDK對於Android SDK只是個組件,它可以幫我們生成的JNI兼容的共享庫可以在大於Android1.5平台的ARM CPU上運行,將生成的共享庫拷貝到合適的程序工程路徑的位置上,以保證它們自動的添加到你的apk包中。

何時使用NDK?

Google僅在極少數情況下建議使用NDK,有如下使用場景:
● 必須提高性能(例如,對大量數據進行排序)。
● 使用第三方庫。舉例說明:許多第三方庫由C/C++語言編寫,而Android應用程序需要使用現有的第三方庫,如Ffmpeg、OpenCV這樣的庫。
● 底層程序設計(例如,應用程序不依賴Dalvik Java虛擬機)。

NDK開發有何優點?

1.運行效率高
2.利於充分發揮軟硬件優勢
3.利於代碼復用
4.降低版本控制成本
5.降低開發成本

NDK開發有何缺點?

1.開發難度相對較高
2.調試難度相對較高
3.增加開發團隊規模

Android NDK系統文件的結構如下

ndk-build:該shell腳本是Android NDK構建系統的起始點。 ndk-gdb:該shell腳本允許用GUN調試器調試原生組件。 ndk-stack:該shell腳本可以幫助分析原生組件崩潰時的堆棧追蹤。 build:該目錄包含了Android NDK構建系統的所有模塊。 platforms:該目錄包含了支持不同Android目標版本的頭文件和庫文件。Android NDK構建系統會根據具體的Android版本自動引用這些文檔。 samples:該目錄包含了一些示例應用程序,這些程序可以體現AndroidNDK的性能。有利於學習如何使用Android NDK的特性。 sorces:該目錄包含了可供開發人員導入到現有的Android NDK項目的一些共享模塊。 toolchains:該目錄包含目前Android NDK支持的不同目標機體系結構的交叉編譯器。Android NDK目前支持ARM、X86和MIPS機體系結構。Android NDK 構建系統根據選定的體系結構使用不同的交叉編譯器。

什麼是JNI?

JNI是一種在Java虛擬機控制下執行代碼的標准機制。代碼被編寫成匯編程序或者C/C++程序,並組裝為動態庫。也就允許了非靜態綁定用法。這提供了一個在Java平台上調用C/C++的一種途徑,反之亦然。它允許Java類的某些方法原生實現,同時讓它們能夠像普通Java方法一樣被調用和使用。

JNI有什麼優勢?

JNI是Java Native Interface的縮寫,它提供了若干的API實現了Java和其他語言的通信(主要是C&C++)。

何時使用JNI?

1、JAVA程序和本地程序使用TCP/IP或者IPC進行交互。 2、當用JAVA程序連接本地數據庫時,使用JDBC提供的API。
3、JAVA程序可以使用分布式對象技術,如JAVA IDL API。
這些方案的共同點是,JAVA和C處於不同的線程,或者不同的機器上。這樣,當本地程序崩潰時,不會影響到JAVA程序。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved