找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2061|回复: 0
收起左侧

手把手教你写JNI(android NDK)

[复制链接]
ID:246554 发表于 2017-11-6 15:26 | 显示全部楼层 |阅读模式
本例是通过JNI调用,并不是通过系统的类来调用。
1.首先调用流程:
         APP->HAL->JNI->内核驱动
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
                  如果出现 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的名称(这个名字可以任意取)。
设置如下
Location为ndk-build.cmd的路径,路径如图。working Directory就点击Browse Workspace选中当前项目即可
继续
Build Options勾选项如图,另外点击右边的Specify Resources里选中工程刚才刚才创建的jni文件夹
点击OK
OK
2.5 声明本地方法
         在Activity里声明你要调用的方法
         例如我的:publicnative String gpsopen(String str);
2.6用cmd生成一个.h的样式文件
Win+R
Cmd
将src目录下刚才生成的.h头文件复制到工程的jni目录下
在jni目录下编写.c文件,例如gps.c
将.h头文件里面的内容复制过来
添加一个#include<jni.h>
并实现调用函数的内容
例如:
                   函数内部的内容自己按自己的需要实现就好了
新建文件下,文件夹里新建Android.mk
其内容如下:
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
就可以直接在目标机上运行
也可以将其目录下的 *.apk复制到目标机安装运行。
当然这些内容只是一个JNI程序例程,并不是串口,串口的内容后续再补充。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表