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