2021-05-12 14:32:11
Android NDK入門開發範例
目前網際網路上Android ndk開發的資料都比較陳舊,本人也是新學習的ndk,我從我的理解構建第一個NDK程式,希望對你有所幫助。注意,開始教學之前,先到http://jingyan.baidu.com/article/574c52193c80fb6c8c9dc153.html部署好NDK的開發環境!
1
首先新建一個專案,在佈局頁面新增一個按鈕即可,如下圖所示,圖中有兩個控制元件,一個是textview,另一個是button。
2
新建一個類,並寫一個native方法,我寫的方法是,public native int add(int a, int b);實現傳入的2個整形數位相加,這裡的native方法不需要實現
3
開啟本次專案的路徑,裡面有2個類,其中JNITest.java便是有native方法的類,下面需要先把這個java程式設計成class檔案然後再編譯成.h標頭檔案。
1
在CMD中依次輸入以下程式碼:
cd C:UsersAdministratorworkspaceJNITestsrc(切換到專案的src目錄下)
javac comliutawjnitestJNITest.java(編譯有native方法的java類)
javah com.liutaw.jnitest.JNITest(從class生成.h標頭檔案)
2
在專案的根目錄新建一個jni檔案夾,並把剛才javah生成的 com_liutaw_jnitest_JNITest.h檔案複製到jni目錄下
3
開啟com_liutaw_jnitest_JNITest.h,把定義的方法都改為實現,並把檔案名的字尾名改為.c,注意方法的引數要加上,以下是修改前後的對比圖。
4
在jni檔案夾下新建一個Android.mk檔案,輸入以下內容,注意更改成你自己的庫檔案名和原檔案名稱
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hellojni(庫檔案名)
LOCAL_SRC_FILES := com_liutaw_jnitest_JNITest.c(原檔案名稱)
include $(BUILD_SHARED_LIBRARY)
2個檔案完成之後應該是下面這張圖。
5
之後開啟Cygwin(windows沒有?請下載,linux等使用者自帶終端即可,這是模擬Linux執行環境用的),先切換到自己的專案目錄,再使用命令ndk-build一下,出現以下字幕,說明生成.so檔案(類似於windows的dll動態連結庫檔案)成功,也就是說,以後java程式碼可以呼叫自己寫的c方法了。
1
在JNITest類中寫一個靜態程式碼塊:
static {
System.loadLibrary("hellojni");
}
hellojni是和剛才寫的Android.mk「LOCAL_MODULE := hellojni」是一致的
2
在按鈕的監聽事件裡寫入自己的方法,我這裡寫的作用是,呼叫native程式碼之後把值顯示在TextView上面。
3
生成一下專案,我用的是真機偵錯,我們現在可以看效果了,點選按鈕之後數位4便顯示在了TextView上面。
相關文章