一、android studio JNI 的简单编写使用。
来源:互联网 发布:淘宝助手数据包 编辑:程序博客网 时间:2024/05/23 14:33
jni网上资料挺多的。好吧好吧,感觉坑点有点多。敢不敢写的详细点啊。只能自己写写了。
首先就是先创建一个项目了。这个不用说了。然后新建一个类。写一个native 方法 ,如
public class JniTest { public native String getHelloJniString();}然后build make project项目。我们从build/intermediates/classes/debug 中就能找到JniTest.class 文件了。如果没有生成,那就是你项目报错了。处理一些重新build项目即可。
这里就要用到命令行了。找到AS下的Terminal 然后进入到你的module中,如 cd myjnitest/src/main/java 中。使用javah - jni com.jnitest.JniTest 命令。
这样就会生成一个.h的头文件。把它复制到main下的jni文件夹中(没有jni文件夹就创建一个)。
然后在jni下你可以自己写一个.c的文件。简单点如这样
自动会在jni下生成一个jnitest.c文件。简单的改写一下如下:
#include <jni.h>JNIEXPORT jstring JNICALL Java_test_com_myjnitest_JniTest_getHelloJniString(JNIEnv*env, jobject instance){return (*env)->NewStringUTF(env, "JNI TEST");}然后在MainActivity我们加入
static { System.loadLibrary("jni");}
在gradle加入
ndk{ moduleName "jni" //生成的so名字 abiFilters "armeabi", "armeabi-v7a", "x86"}
这里的ndk中的名称和static块中的名称要一致。
然后就是调用了。如下:
s = (TextView) findViewById(R.id.s);s.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { JniTest j = new JniTest(); s.setText(j.getHelloJniString()); }});
这时候成不成功就要看你的API了。如果你使用了API 25的话,你中奖了。会报这样的错误,楼主亲测:
Android NDK: Aborting . Stop.
改一下API,重新编译一下就ok了。原因查资料说不支持API 25.
你会发现在build/intermediates/ndk/debug/ 中生成了.so文件。复制出来就可以用了。大功告成!
这里的槽点也是我的槽点,书写c文件的时候因为c语法不精,出现的问题。还是挺简单的。
阅读全文
0 0
- 一、android studio JNI 的简单编写使用。
- android studio JNI/NDK的简单使用
- Android Studio 编写Jni
- JNI(一) - Android Studio简单开发流程
- android studio jni使用的几种方法(一)
- Android Studio下的JNI使用全解析(一)
- Android Studio 下配置JNI的使用 ---CMakeList【开篇一】
- Android studio JNI的使用
- Android studio 初步使用JNI(三)简单使用JNI
- Android studio下使用jni(一)
- android studio编写jni成功
- android studio 加入jni的简单操作
- Android studio简单的JNI实现
- android jni 的编写一(JNI的静态注册)
- 关于android studio使用cmake 编写jni调用静态库、动态库的方式
- Android-JNI的简单使用
- android studio JNI使用
- Android Studio使用JNI
- const的用法,特别是用在函数前面与后面的区别
- 样本标准差
- 开机自启动:从busybox到debian
- springmvc的两个处理器适配器(四)
- Android自定义View
- 一、android studio JNI 的简单编写使用。
- Keil中Use MicroLIB的作用
- spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题
- android硬件 NFC开发
- app中蓝牙开启与关闭
- PCSHANGPython3连接MariaDB
- pymsql excute_many 出现 not all arguments converted with on duplicate key update
- visual studio code 简介
- 又瞅了几眼Hibernate,整理下知识点____Hibernate