編輯:關於Android編程
最近開發項目用到了多個C語言編寫的動態鏈接庫so,期間遇到很多問題,項目開發完畢後,我覺得有必要把開發中的一些知識點總結下來,並結合我手邊的一本經典教程《Pro
Android C++ with the NDK》,寫下這個系列的文章,分享給大家,希望給想入門Android NDK開發的朋友帶來幫助。
Android NDK(Native Development Kit )是一套工具集合,允許你用像C/C++語言那樣實現應用程序的一部分。同時,Android NDK對於Android SDK只是個組件,它可以幫我們生成的JNI兼容的共享庫可以在大於Android1.5平台的ARM CPU上運行,將生成的共享庫拷貝到合適的程序工程路徑的位置上,以保證它們自動的添加到你的apk包中。
Google僅在極少數情況下建議使用NDK,有如下使用場景:
● 必須提高性能(例如,對大量數據進行排序)。
● 使用第三方庫。舉例說明:許多第三方庫由C/C++語言編寫,而Android應用程序需要使用現有的第三方庫,如Ffmpeg、OpenCV這樣的庫。
● 底層程序設計(例如,應用程序不依賴Dalvik Java虛擬機)。
1.運行效率高
2.利於充分發揮軟硬件優勢
3.利於代碼復用
4.降低版本控制成本
5.降低開發成本
1.開發難度相對較高
2.調試難度相對較高
3.增加開發團隊規模
JNI是一種在Java虛擬機控制下執行代碼的標准機制。代碼被編寫成匯編程序或者C/C++程序,並組裝為動態庫。也就允許了非靜態綁定用法。這提供了一個在Java平台上調用C/C++的一種途徑,反之亦然。它允許Java類的某些方法原生實現,同時讓它們能夠像普通Java方法一樣被調用和使用。
JNI是Java Native Interface的縮寫,它提供了若干的API實現了Java和其他語言的通信(主要是C&C++)。
1、JAVA程序和本地程序使用TCP/IP或者IPC進行交互。 2、當用JAVA程序連接本地數據庫時,使用JDBC提供的API。
3、JAVA程序可以使用分布式對象技術,如JAVA IDL API。
這些方案的共同點是,JAVA和C處於不同的線程,或者不同的機器上。這樣,當本地程序崩潰時,不會影響到JAVA程序。
一. Mac OS X(10.11.4)編譯環境設置1.1 創建大小寫敏感的磁盤鏡像可以通過磁盤管理工具進行設置,也可以通過以下命令生成70g的鏡像文件sudo hdiu
很多應用為了節省空間而又使界面能夠充足的顯示信息,大多數應用都采用了側邊欄的方式,如下圖: 來說說它
MainActivity如下:package cc.testview4; import cc.testview4.SlideView.SwitchChangedList
2014新年第一天,全面升級安卓開發環境。主要做兩件事:1. 把IDE從eclipse轉到Android Studio(又去掉了一個與IBM Rational的聯系,多少