編輯:關於Android編程
最近項目迭代了幾個版本,目前比較輕松,雖然項目閒了,但是人不能太閒,否則就廢了。千裡之行始於足下、量變引起質變、學而不思則罔.......好了好了好了.....編不下去了,讓我們直入正題吧,還是再說一句吧,歡迎大家交流學習,共同進步,歡迎扔搬磚,就算是你扔我也不接
一、新建一個Android項目,和以前自己建項目是一模一樣滴
二、創建一個JNICall.java類:
創建一個本地方法,這個方法作為我們調用C/C++程序的接口,另外我們通過static的方式,靜態的去加載.so文件。
三、添加本地支持
選中項目,右鍵---->Android Tools---->Add Native Support,如圖:
這時會彈出一個Add Android Native Support對話框,此時我們輸入我們的要加載的so文件的名稱就ok啦:
此時項目會多出一個,jni文件夾,裡面包含了一個my_jni.cpp和Android.mk文件,如圖:
其中my_jni.cpp文件中只有一行代碼,引入了jni庫:
下面我們來看看Android.mk文件:
這個自動生成MakeFile文件中有多個屬性:
LOCAL_PATH是C/C++代碼所在目錄,也就是我們的jni目錄。
include$(CLEAR_VARS)代表清除之前的依賴類庫
LOCAL_MODULE是要編譯的庫的名稱,就是我們在Add Android Native Support對話框中輸入的名稱。編譯器會自動在前面加上lib,在後面加上.so。
LOCAL_SRC_FILES是要編譯的C/C++文件。
include$(BUILD_SHARED_LIBRARY)代表編譯出來的是動態庫,其中include $(BUILD_STATIC_LIBRARY),編譯出的是靜態庫 。
四、編譯JNI,下面我們需要生成.h的頭文件:
找到Android項目中的bin文件夾,找到classes文件夾,eclipse為我們自動生成的字節碼文件都在這個文件夾下面,首先在命令行中使用cd命令切換到該目錄下,然
後使用javah命令,生成我們想要得到的.h頭文件:
這個頭文件生成的名字,我們是可以修改的,只要合法就可以,讓我們來看一下生成的.h文件:
五、編寫生成本地庫的cpp文件:
這裡我們需要引入頭文件,關鍵的是我們來看一下方法名的格式:
Java_com_example_jnidemo_JNICall_myJni
Java:固定的寫法,必須如此
com_example_jnidemo:為包含native方法的包名
JNICall:為包含native方法的類名
myJni:為native方法名
這幾個方法名我們一定要對應起來,否則會出現錯誤:java.lang.UnsatisfiedLinkError: Native method not found
六、生成.so文件(這一步不是必須的,因為我們可以在運行的時候,eclipse可以自動會和項目一塊編譯生成.so文件,當然了我們也可以自己單獨編譯,下面介紹一下單獨編譯的過程)
首先通過命令cd進入到項目所在的目錄,然後通過ndk-build命令生成.so文件:
說明so文件生成了,刷新一下項目,然後我們來看一下目錄的變化:
七:調用native方法:
八、運行項目,效果如圖:
目前為止,一個簡單的JNI程序已經完成了
上次我寫了一個類似前言的東西,向大家粗略介紹了一下什麼是適配器,並且舉了一個最簡單的例子幫助大家理解,使用了安卓原生的ArrayAdapter,現在我們繼續
1. 簡介直到4g時代,流量依然是寶貴的東西。而移動網絡傳輸中,最占流量的一種載體:圖片,成為了我們移動開發者不得不關注的一個問題。我們關注的問題,無非是圖片體積和質量如
Android中的TextView是整個framework中最復雜的控件之一,負責Android中顯示文本的大部分工作,framwork中的許多控件也直接或者間接的繼承於
前言前幾篇文章中,筆者對View的三大工作流程進行了詳細分析,而這篇文章則詳細講述與三大工作流程密切相關的兩個方法,分別是requestLayout和invalidate