標(biāo)題: 手把手教你寫JNI(android NDK) [打印本頁]

作者: liwen123    時間: 2017-11-6 15:26
標(biāo)題: 手把手教你寫JNI(android NDK)
本例是通過JNI調(diào)用,并不是通過系統(tǒng)的類來調(diào)用。
1.首先調(diào)用流程:
         APP->HAL->JNI->內(nèi)核驅(qū)動
2.具體流程:
         2.1下載NDK
                   我下的是:android-ndk-r14b-windows-x86_64.zip
         2.2解壓該壓縮包至某個文件夾
                  
         2.3打開eclipse->window->preferences->Android->NDK
                   瀏覽選中剛才的路徑,我的是:E:\javaee\my\android-ndk-r14b-windows-x86_64
                  如果出現(xiàn) Not a valid DNKdirectory
                   就在剛才的目錄即E:\javaee\my\android-ndk-r14b-windows-x86_64\下新建一個文件ndk-build
                  
         2.4   新建一個Android工程
                   新建一個jni文件夾
選中工程,右鍵進入properties選項
Builder->new->Program & OK->
在“Name“中輸入新builders的名稱(這個名字可以任意。。
設(shè)置如下
Location為ndk-build.cmd的路徑,路徑如圖。working Directory就點擊Browse Workspace選中當(dāng)前項目即可
繼續(xù)
Build Options勾選項如圖,另外點擊右邊的Specify Resources里選中工程剛才剛才創(chuàng)建的jni文件夾
點擊OK
OK
2.5 聲明本地方法
         在Activity里聲明你要調(diào)用的方法
         例如我的:publicnative String gpsopen(String str);
2.6用cmd生成一個.h的樣式文件
Win+R
Cmd
將src目錄下剛才生成的.h頭文件復(fù)制到工程的jni目錄下
在jni目錄下編寫.c文件,例如gps.c
將.h頭文件里面的內(nèi)容復(fù)制過來
添加一個#include<jni.h>
并實現(xiàn)調(diào)用函數(shù)的內(nèi)容
例如:
                   函數(shù)內(nèi)部的內(nèi)容自己按自己的需要實現(xiàn)就好了
新建文件下,文件夾里新建Android.mk
其內(nèi)容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    :=gpsbdshow //要生成的包名,會生成gpsbdshow.so
LOCAL_SRC_FILES :=gpsbdshow.c//要編譯的本地文件
#liblog.so libGLESv2.so
LOCAL_LDLIBS +=-llog
include $(BUILD_SHARED_LIBRARY)
include $(call all-makefiles-under,$(LOCAL_PATH))
等會將所有文件(JNI,Src,Androidminifast…)等文件一起放入ubuntu的Android目錄下編譯生成.So庫文件
編寫號.mk后,右鍵項目->buildproject
編譯完成,正常生成 *.so
就可以直接在目標(biāo)機上運行
也可以將其目錄下的 *.apk復(fù)制到目標(biāo)機安裝運行。
當(dāng)然這些內(nèi)容只是一個JNI程序例程,并不是串口,串口的內(nèi)容后續(xù)再補充。






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1