android studio的jni和so
1. android studio自己添加代码生成so
代码地址:https://github.com/maogefff/Android-Test-Sample/tree/master/MyJni
参考资料:https://www.2cto.com/kf/201607/526887.html
http://blog.csdn.net/yanbober/article/details/45310589 (jni用法实例)
注意两点:(不然都生成不了so文件)
1. 名字之间不要有空格
2. 生成的so名字不要跟JAVA类重名
步骤1:修改ndk的路径(其实也可以不修改,使用默认下好的就行)
ndk.dir=E\:\\AndroidStudio\\android-ndk-r14b

步骤2:
android.useDeprecatedNdk=true

步骤3:
ndk{
moduleName "myjniso" //生成的so名字
// abiFilters = ['armeabi']
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。目前可有可无。
}

步骤4:添加一个JAVA类,然后make project;这个时候在中间文件MyJni\app\build\intermediates\classes\debug就会产生相应的类

步骤5:进入中间文件,使用javah,就会在当前文件夹下产生.h文件
F:\test\MyJni\app\build\intermediates\classes\debug>cd F:\test\MyJni\app\build\intermediates\classes\debug

javah com.example.myjni.JniTest

注意:在这一步不一定能成功,我之前这样操作没问题,但是在重装系统以后就不行了,不同版本的JDK的javah有一定的差别:(2017.12.13)
JDK1.8的使用为:
C:\Users\aplex\Desktop\\Android-Test-Sample\MyJni\app\build\intermediates\classes\debug>javah -classpath . com.example.myjni.JniTest
步骤6: 在源码src下新建立一个jni文件夹,将.h头文件拷贝进去,然后写一个.c文件,去实现.h里面的函数

#include "com_example_myjni_JniTest.h" JNIEXPORT jstring JNICALL Java_com_example_myjni_JniTest_HelloJni
(JNIEnv * env, jobject obj){
return (*env)->NewStringUTF(env,"HelloJni");
}
步骤7: 编译后生产so文件了


2. 直接使用已经编写好的so文件
接着上面的步骤
步骤1: 删除app下的build目录,然后重启android studio
步骤2:如果是使用别人的so,则自己写一个java类一定要和so文件名对应的上

步骤3:建立jniLibs文件夹,将之前build目录下的so拷贝进来

步骤4:删除gradle下面的ndk生成so或者换一个名字

android studio的jni和so的更多相关文章
- Android studio 下JNI编程实例并生成so库
Android studio 下JNI编程实例并生成so库 因为公司需要为Android相机做美颜等图像后期处理,需要使用JNI编程,最近学了下JNI,并且在Android Studio下实现了一个小 ...
- Android studio 配置JNI环境
Android studio配置jni开发环境,主要配置是两个build文件,以及新建一个jni文件,放c代码. 代码如下1: apply plugin: 'com.android.model.app ...
- android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测
目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
相信很多小伙伴都在android开发中遇到调用jni的各种巨坑,因为我们不得不在很多地方用到第三方库so文件,然而第三方官方通常都只会给出ADT环境下的集成方式,而谷歌亲儿子android studi ...
- Android Studio中JNI程序的单步调试和日志打印
近日有个算法(检测碰撞)需要用C++实现,目的是IOS和ANDROID中共享同一段程序. 下面说说android调用这段程序过程中遇到的一些事情.(过程中网上搜索了一些相关文章,大部分说的是eclip ...
- Android Studio使用JNI和NDK进行开发
想要学习一下在Android Studio中进行JNI的开发,文章挺多的,但是几乎没有一个完整的说明的,中间总是有一两步漏掉.分享技术就应该完整的让读者学会,藏着掖着不是君子所为.对于那些故意含糊过去 ...
- android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!
目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. ------------------------------------- ...
- Android Studio新建Jni工程
2.2版本的Android Studio支持新建Jni工程,不用再像以前自己构建工程目录,首先把自己的升级自己的AS到2.2以上 然后打开Tools->Andorid->SDK manag ...
- Android Studio使用JNI
0x01 前言 本文讲述使用Android Studio通过静态注册.动态注册使用JNI的方法,以及加载第三方so文件的方法 0x02 Android Studio静态注册的方式使用JNI 1. 添加 ...
- windows android studio 编译Jni动态库
项目需要,折腾了半天搞定windows android studio环境编译Jni动态库,现记录下来. 准备安装环境: 1. android studio 下载地址是http://www.androi ...
随机推荐
- WPF ControlTemplate 动画板 结束事件不触发
解决此问题很简单 将Storyboard单独提取出来及可 给定Key名称,然后在触发器中的BeginStoryboard的storyboard绑定即可 <!--单独提取并设置Xkey--> ...
- jquery改造轮播图1
g改造轮播图1:https://www.cnblogs.com/huanghuali/p/8677338.html <!DOCTYPE html> <html lang=" ...
- LOJ#3083. 「GXOI / GZOI2019」与或和(单调栈)
题面 传送门 题解 按位考虑贡献,如果\(mp[i][j]\)这一位为\(1\)就设为\(1\)否则设为\(0\),对\(or\)的贡献就是全为\(1\)的子矩阵个数,对\(and\)的贡献就是总矩阵 ...
- DBHelper--Java JDBC SSH 连接数据库工具类
概述 JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. ----------------------------- ...
- 简单列举几种常用 FTP
简单说下几种FTP FTP:文件传输协议(File Transfer Protocol,FTP) SFTP:OPENSSH 提供的隧道级文件传送(file transfer) FTPS:支持传输层安全 ...
- SYN 洪泛攻击
在 TCP 三次握手中,服务器为了响应一个收到的 SYN,分配并初始化连接变量和缓存.然后服务器发送一个 SYNACK 进行相应,并等待来自客户的 ACK 报文段. 如果某客户不发送 ACK 来完成三 ...
- lnmp环境搭建错误集合
错误1: 页面显示:No input file specified nginx错误日志:FastCGI sent in stderr: "PHP message: PHP Warning: ...
- HDU - 3085 Nightmare Ⅱ
HDU - 3085 Nightmare Ⅱ 双向BFS,建立两个队列,让男孩女孩一起走 鬼的位置用曼哈顿距离判断一下,如果该位置与鬼的曼哈顿距离小于等于当前轮数的两倍,则已经被鬼覆盖 #includ ...
- ubuntu配置实验
实验:ubuntu配置 需求: caterpillar公司管理员小李需要将公司系统由windows全部更换为ubuntu,并制定SOP(操作指导书) 环境:vmware workstation 1 ...
- 部署到docker容器后图片验证码显示不出来
Dockerfile如下: FROM openjdk:8-jre-alpineARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["java&qu ...