編輯:關於android開發
介紹:
Android SDK是一個允許Android應用開發人員使用C或C++源文件編譯並嵌入到本機源代碼中的應用程序包的一組工具。
重要說明:
Android NDK只能用於android 1.5以上版本
1.Android NDK的目的:
Android虛擬機允許你的應用程序源代碼通過JNI調用在本地實現的源代碼,簡單的說,這就意味著:
你的應用程序將聲明一個或多個用’native’關鍵字的方法用來指明它們是通過本地代碼實現的
例如:native byte[] loadFile(String filePath)
你必須提供包含實現這些方法的共享庫(就是.so),將共享庫打包到你的應用程序包apk中,這些庫文件必須根據標准的Unix約定來命名為 lib<something>.so,並且是需要包含一個標准的JNI的接口,例如
libFileLoader.so
你的應用程序必須明確的裝載這些庫文件(.so文件),比如,在程序的開始裝載它,只需要簡單的添加幾句源代碼:
java代碼:
static {
System.loadLibrary(“FileLoader”);
}
注意:這裡你不必再將前綴lib和後綴.so寫入。
Android NDK對於Android SDK只是個組件,它可以幫你:
生成的JNI兼容的共享庫可以在大於Android1.5平台的ARM CPU上運行
將生成的共享庫拷貝到合適的程序工程路徑的位置上,以保證它們自動的添加到你的apk包中(並且簽名的)
在以後的版本中,我們將提供來幫助你的源代碼通過遠程gdb連接和盡可能多的源代碼的信息。
而且,Android NDK還提供:
一組交叉編譯鏈(編譯器、鏈接器等)來生成可以在Linux,OS X和Windows(用Cygwin)運行的二進制文件
一組與由Android平台提供的穩定的本地API列表的頭文件
它們在docs/STABLE-APIS.html中有說明
重要提示:
記住,在以後的更新和發布平台中,Android系統鏡像中的大多數本地系統庫並不是一成不變的,而是可以徹底改變,甚至刪除的
一個編譯系統(build system)可以允許開發者寫一個非常短的編譯文件(build files)去描述哪個源代碼需要編譯,並且怎樣編譯。編譯系統可以解決所有的toolchain/platform/CPU/ABI細節的問題。並且,較晚的NDK版本中還添加了更多的可以不用改變開發者的編譯文件的情況下的toolchains,platforms,系統接口。
2.Android NDK的缺點
NDK並不是一個可以編寫通用的源代碼並且可以在Android設備上運行的方法,你的應用程序還是需要使用JAVA程序,適當的處理系統事件來避免“應用程序沒有反應”的對話框或者處理Android應用程序的生命周期
注意:可以適當的在源代碼中寫一個復雜的應用程序,用於啟動/停止一個小型的“應用程序包”
強烈建議很好地理解的 JNI,因為許多操作在這種環境要求的開發人員,都采取具體的行動,不一定在常典型的本機代碼。這些措施包括:
不能通過指針直接訪問VM的對象。比如:你不能安全的得到一個指向String對象的16位char數組的循環遍歷
需要顯示引用管理本機代碼時候要保持處理JNI調用之間的VM對象
NDK在Android平台僅僅提供了有限的本地API和庫文件的支持的系統頭文件,然而一個標准的Android系統鏡像包括許多本地共享庫,這些都應該被考慮在更新和發行版本的可以徹底改變的實現細節
如果Android系統庫沒有明確的被NDK明確的支持,然後應用程序不應該依賴於它提供的,或者打破了將來在各種設備上的無線系統更新
選定的系統庫將逐漸被添加到穩定的NDK API中。
3.NDK開發實踐
下面將給出一個怎樣用Android NDK開發本地代碼的粗略的概述
(1) 把本地代碼放在$PROJECT/jni/…下,比如將hello.c放到apps/hello/jni/目錄下
(2) 在你的NDK編譯系統中在$PROJECT/jni/Android.mk來描述你的源代碼
(3) 可選:在$PROJECT/jni/Application.mk到你的編譯系統中來詳細描述你的項目,盡管你開始的話不一定需要它,但是它允許你使用更多的CPU或者覆蓋編譯器/鏈接器的標記
(4) 從你的項目的目錄開始通過運行”$NDK/ndk-build”來編譯你的代碼,或者從子目錄開始
(5) 最後一步可以copy,萬一成功,剝離共享庫的應用層序需要你的應用程序的項目根目錄。然後你通過通常的方法來生成最終的apk。
關於Android滑動沖突的解決方法(二) 之前的一遍學習筆記主要就Android滑動沖突中,在不同方向的滑動所造成沖突進行了了解,這種沖突很容易理解,當然也很容易解決。
Android基礎入門教程——8.4.4 Android動畫合集之屬性動畫-又見 1.Evaluator自定義 1)Evaluator介紹
【android】仿360手機衛士的簡易設計思路及源碼 筆者最近一直忙於滿廣州的跑,實習好難找好難找,博客也是有點久沒去更新。仿360手機衛士的實現的目的更多的是出於對常
SwipeBackActivity 的使用,swipebackactivity1、SwipeBackLayout 項目地址:https://github.com/ikew