之前用eclispse的时候写过一篇关于ndk配置和Jni实现的博客,由于现在大部分都使用android studio了,刚好接到android 串口的一个需求。就整体实现了一遍,希望整个过程写出来可以给大家一点帮助。
1.首先创建一个android工程,这个就不详细解释了。
2.在android中配置NDK
(1)首先下载NDK,我没有用sdk直接下载,而是另外下载的android-ndk-r9d

(2)在androidstudio中设置,file–>product structor

3.在src–>java包中导入serialPort的java文件,在同级目录下建立jni目录,导入serialPort.c文件,如图

4.配置各种ndk的路径,如下:
打开Project的local.properties文件添加NDK路径,系统一般在第二步的时候自动生成。
在gradle.properties添加android.useDeprecatedNdk=true
在app路径的build.gradle 的defaultconfig中添加

5.生成类文件,点击bulid–>make project即可生成。在如图的路径下

6.然后生成.h文件,打开android studio下的终端terminal命令行:
输入命令为:javah -d jni -classpath C:\Users\huchang\AppData\Local\Android\sdk\platforms\android-19\android.jar;
E:\androidDevelop\MConcentrator\app\build\intermediates\classes\debug com.system.mconcentrator.mconcentrator.serialport.SerialPort
一个是我android jar包的路径,一个是我的串口类的路径。串口类为SerialPort.class
如图:

6.生成.so动态库
(1).在jni目录下,新建Android.mk文件,编写代码如下:

(2)在工程根目录下新建application.make文件,写入以下内容:
APP_PROJECT_PATH := $(call my-dir)
APP_MODULES := nativeTest

3,在命令行下,cd到jni目录(就是之前javah -d jni生成的那个文件夹)下,输入指令: ndk-build,等一会即可生成.so文件。位于lib目录下,将其放到app/src/main/jniLibs目录下就能用了。
备注:其实第三步也可以不用,只要前面的配置好,直接rebuild工程,系统会自动生成如下文件,将其放到app/src/main/jniLibs目录下就能用了。

另外备注下h文件的生成
4、使用javah 命令生成JNI的 .h头文件
(1)使用windows自带的命令行或则使用Android Studio打开 Terminal(View -> Tool Windows -> Terminal),进入JNI工程的根目录下,
使用执行javah -classpath . -jni SerialPort
这个步骤很容易出现找不到类文件的情况,如:微笑
a、

b、

出现第一种,就是没有找到jni的根目录,第二种就是没有指定路径
记住通用格式——
javah -classpath . -jni 类路径.JNI类
这个步骤需要注意的地方是什么才算工程的根目录,请看下面图的解释:

看文字可能有点难理解,举个例子,那我当前的工程目录来说:
E:\androidcode\SerialPortNDK\app\src\main\java\com\serialport
则根目录就是E:\androidcode\SerialPortNDK\app\src\main\java —》 java就是根目录
其实,还有个窍门大笑,直接看.java类文件的包名也可以知道,如:查看SerialPort.java 文件
上图中包名为 com.serialport 则包名的上一层目录就是根目录。

因此,执行在java目录,执行javah -classpath . -jni com.serialport.SerialPort 如图:

更多相关文章

  1. Android多媒体开发(5)————利用Android(安卓)AudioTrack播放mp3
  2. Android(安卓)单选框RadioGroup
  3. Android多媒体开发(2)————使用Android(安卓)NKD编译原版FFmpeg
  4. ANDROID NDK文档系列--(一)Android(安卓)NDK Overview
  5. android 开发中java.net.UnknownServiceException: CLEARTEXT co
  6. AndroiManifest.xml文件中android属性
  7. Android(安卓)Studio(The Official IDE for Android)安装使用
  8. Android(安卓)将从网络获取的数据缓存到私有文件
  9. qt for android

随机推荐

  1. Android动态时钟壁纸开发
  2. Android开发之基本控件和详解四种布局方
  3. activity启动模式探究
  4. Android 蓝牙开发(3)——蓝牙的详细介绍
  5. Android 的坐标系及矩阵变换
  6. 超级原创xxMix android:onClick上帝啊,不
  7. android利用爬虫实现模拟登录
  8. Android 引入广播机制的用意
  9. android文件下载与保存
  10. 解决FLIR One Android Demo项目加载问题