Android Studio JNI 开发.so库
来源:互联网 发布:三星c5网络权限设置 编辑:程序博客网 时间:2024/05/17 01:51
自己学习了一下Android的NDK开发,在网上看了很多相关资料,也试着写一下,主要是记录一下,方便以后查阅,好了,开始进入学习吧.
首先是搭建NDK开发环境,AS已经方便了很多,我们只需进行少量修改即可.
那么我们就从创建工程开始吧,
首先创建一个jni工程 我的包是 encrypt.duojiankj.cn.jnitest
创建好后查看下你的AS有没有NDK开发环境(我的是快捷方式是eclipse,在工程名下按F12),进入到这个界面,查看Android NDK location:是否是空,我的已经下载完毕,没有下载的会有个下载链接,点击即可.
创建JniTest.java
public class JniTest { static { System.loadLibrary("jary"); } public native String getString();}
在工程下build.properties中添加 android.useDeprecatedNdk=true
在app下build.gradle下的defaultConfig下添加
ndk { moduleName "jary" //生成的so名字 abiFilters "armeabi", "armeabi-v7a", "x86", "arm64-v8a" //输出指定四种abi体系结构下的so库。 stl "stlport_static" //打开.c 的 debug (此句是打开的debug的关键)}debug { jniDebuggable true //此句不加在真机上 debug 不受影响,但是在虚拟机上不能 debug}
在MainActivity中做如下修改;
tv = (TextView) this.findViewById(R.id.tv);tv.setText(new JniTest().getString());
点击
生成.class文件
我的路径是:
F:\AndroidStudioProjects\JniTest\app\build\intermediates\classes\debug\encrypt\duojiankj\cn\jnitest
最重要的一步 然后生成.h文件
打开cmd,切换到项目所在的盘符下,我的是F盘(我的是win10,其他的盘符切换可能略有不同)
切到项目所在的main下
输入 javah -d jni -classpath 加上你的项目路径 注意:debug 之后有2个空格
然后在会生成jni文件夹及.h文件
编写jary.c文件
#include "encrypt_duojiankj_cn_jnitest_JniTest.h" //这里是.h文件的名子JNIEXPORT jstring JNICALL Java_encrypt_duojiankj_cn_jnitest_JniTest_getString(JNIEnv *env ,jobject object){ return (*env)->NewStringUTF(env,"hello jni !!!!");};
运行app
运行后会出现以下目录表示成功
到这里.so库就生成了,下面来说一下调用so库
复制出libjary.so文件
在需要调用的工程app\src\main\下新建jniLibs文件夹将.so文件复制进去
创建包,要与之前的包一致
编写调用代码(与之前的内容一致)
运行编译即可
如有疑问欢迎留言讨论
- Android Studio JNI 开发.so库
- Android Studio使用jni、so库
- Android Studio使用jni、so库
- Android Studio JNI生成so库
- JNI使用实例:Android Studio使用JNI编译so库
- android studio开发jni无法生成so文件
- android studio开发jni无法生成so文件
- Android Studio NDK jni 开发生成头文件和加载so库
- Android Studio cmake方式jni开发,在c层使用其它动态链接库*.so
- eclipse android jni 开发,so库编译
- Android studio通过JNI调用动态链接库SO
- Android studio项目中添加JNI so库
- Android studio 下JNI编程实例并生成so库
- Android Studio JNI配置及.so库使用
- Mac 下Android Studio JNI 制作so库
- Android studio 初步使用JNI(二)制作.so库
- Android Studio中使用JNI和第三方.so库
- Android studio 下JNI编程实例并生成so库
- java类对象创建过程,装载与实例化分析
- 删除指定下标的数组
- FlatBuffers学习总结
- ffmpeg在VS2013中的配置
- 将自制网格制作为预制体
- Android Studio JNI 开发.so库
- WebSocket在容器化管理平台的应用
- java内存分析
- 【微信小程序】微信开发者工具的使用
- 使用DOM解析XML
- 查找------B树、Trie树
- 机器学习
- 基于Android VideoView播放器的封装
- BZOJ 3209 花神的数论题