第一次尝试使用 AS 调用JNI~
来源:互联网 发布:大数据与BI 编辑:程序博客网 时间:2024/06/05 05:45
最近项目需要用到NDK编程,要学会如何在AS里调用 jni ,走了不少坑,下面就把自己的心路历程写下来,做个记录。
第一步,下载NDK ,建议下载 最新的包,android-ndk-r12b ,开始用了r10b的包编译的时候有点问题,点击下贼链接:点我点我
第二步,新建一个项目 NdkDemo,项目grade配置有点不一样 下面看图:
这里gradle版本 不能用正常gradle编译 ~·有待研究,这里之前漏了,下文就找了半天的错
第三步,新建一个类Test,看下代码:
public class Test { public native String getMsg(); }
报错红字 可以忽略 ,直接 make project. 通过了就行
在项目 app/build/intermediates/classes/debug 目录下找到 刚才生成的 class 文件,请注意不是.java
然后 cmd 命令 进入 这个目录
这个命令的格式是 javah -classpath .-jni com.xxx.xx.Test
如果看到 无输出 东西 ,那就拍手鼓掌了,我一直是 下面那个图
这里是关键点了,我试了好久 ,才发现 自己ClassPath环境没配置,坑爹啊
第四步:上面通过的话 会生成com_xxx_xxx_Test.h的 C的头文件
自己在app/main/java同级建一个jni文件夹,把上面的C文件 剪切过来,然后 建一个XXX.C文件 ,这个就是c的代码库 代码如下
#include "com_live_ndkdemo_Test.h"JNIEXPORT jstring JNICALL Java_com_live_ndkdemo_Test_getMsg(JNIEnv *env,jobject obj){ return (*env)->NewStringUTF(env,"我是来自 JNI");}
做到这步,回过头在把gradle配置文件 改下,Test类导入so库 即可
android.ndk { moduleName = "test" ldLibs += "log" abiFilters += "armeabi" abiFilters += "armeabi-v7a" abiFilters += "x86" }
public class Test { public native String getMsg(); static { System.loadLibrary("test"); }}
然后自己编译成 apk ,然后解压下 就能看的 三个平台so库了~
——坑都是自己走出来才记忆深刻~待续
0 0
- 第一次尝试使用 AS 调用JNI~
- AS jni调用入门
- 第一次调用JNI
- 使用ndk-build方式在as调用jni
- 第一次使用JNI
- Android JNI 第一次使用
- AS中JNI的使用
- AS jni调用入门(附图)
- as中jni调用姿势(实战)
- 第一次尝试
- 第一次尝试
- 第一次尝试
- 第一次尝试
- 第一次尝试
- 第一次尝试
- 第一次尝试
- 第一次尝试
- 第一次尝试使用python读写Excel文件
- 父视图透明度为零 不影响子视图; TableView的 cell.contentView 透明;
- <LeetCode> 题5:第k大元素
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- ---java 网络编程总结
- Android本地视频播放器mediaplay版
- 第一次尝试使用 AS 调用JNI~
- wpf图片轮播(未释放资源)
- CodeForces 558 C. Amr and Chemistry && 51NOD 1483 化学变换(暴力 + 贪心)
- html5--canvas上篇
- SDWebImage使用——一个可管理远程图片加载的类库
- 【bzoj2654】 tree
- Part2:重新组织函数
- Python爬虫入门六之Cookie的使用
- linux命令zxvf