編輯:關於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程序已經完成了
Android基礎入門教程——10.8 LayoutInflater(布局服務) Android基礎入門教程——10.8 LayoutInflat
1.PreferenceActivity 介紹 PreferenceActivity 繼承ListActivity 它是以一個列表的形式在展現內容
Android Studio NDK開發 以前接觸過NDK的開發,是在Eclipse環境下開發的。今天嘗試了下用Android Studio來配置,結果真是處處都是坑,現
淺談 EventBus,淺談eventbus概述: EventBus是一款針對Android優化的發布/訂閱事件總線。 主要功能是替代Intent,Handler,Bro
Android——eclipse下運行android項目報錯 Conve