找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2472|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

手把手教你寫JNI(android NDK)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:246554 發(fā)表于 2017-11-6 15:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本例是通過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ǔ)充。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表