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的更多相关文章

  1. Android studio 下JNI编程实例并生成so库

    Android studio 下JNI编程实例并生成so库 因为公司需要为Android相机做美颜等图像后期处理,需要使用JNI编程,最近学了下JNI,并且在Android Studio下实现了一个小 ...

  2. Android studio 配置JNI环境

    Android studio配置jni开发环境,主要配置是两个build文件,以及新建一个jni文件,放c代码. 代码如下1: apply plugin: 'com.android.model.app ...

  3. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...

  4. 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案

    相信很多小伙伴都在android开发中遇到调用jni的各种巨坑,因为我们不得不在很多地方用到第三方库so文件,然而第三方官方通常都只会给出ADT环境下的集成方式,而谷歌亲儿子android studi ...

  5. Android Studio中JNI程序的单步调试和日志打印

    近日有个算法(检测碰撞)需要用C++实现,目的是IOS和ANDROID中共享同一段程序. 下面说说android调用这段程序过程中遇到的一些事情.(过程中网上搜索了一些相关文章,大部分说的是eclip ...

  6. Android Studio使用JNI和NDK进行开发

    想要学习一下在Android Studio中进行JNI的开发,文章挺多的,但是几乎没有一个完整的说明的,中间总是有一两步漏掉.分享技术就应该完整的让读者学会,藏着掖着不是君子所为.对于那些故意含糊过去 ...

  7. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!

    目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. ------------------------------------- ...

  8. Android Studio新建Jni工程

    2.2版本的Android Studio支持新建Jni工程,不用再像以前自己构建工程目录,首先把自己的升级自己的AS到2.2以上 然后打开Tools->Andorid->SDK manag ...

  9. Android Studio使用JNI

    0x01 前言 本文讲述使用Android Studio通过静态注册.动态注册使用JNI的方法,以及加载第三方so文件的方法 0x02 Android Studio静态注册的方式使用JNI 1. 添加 ...

  10. windows android studio 编译Jni动态库

    项目需要,折腾了半天搞定windows android studio环境编译Jni动态库,现记录下来. 准备安装环境: 1. android studio 下载地址是http://www.androi ...

随机推荐

  1. docker容器怎么设置开机启动

    https://my.oschina.net/lwenhao/blog/1923003 docker服务器.以及容器设置自动启动 一.docker服务设置自动启动 说明:适用于yum安装的各种服务 查 ...

  2. C#DataTable一些使用方法

    C#DataTable一些使用方法   1,使用DataTable必须要引用System.Data. 2,定义一个DataTable DataTable dt=new DataTable(); 3,为 ...

  3. c语言博客作业06-文件

    1.本章总结  1.1思维导图  1.2本章学习体会 这周学了结构体和文件,结构体作为一种数据的归类方式,相比数组或变量更具有整体全面性,例如一个数组只可以放一些按照元素顺序存放的单元变量,并且我们用 ...

  4. jQuery表单2

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Java几个基本概念

    To xj 编译:test.java->test.class反编译:test.class->test.java打jar包:test.class->test.jar打war包:test ...

  6. scrapy实战1,基础知识回顾和虚拟环境准备

        视频地址 https://coding.imooc.com/learn/list/92.html   一. 基础知识回顾     1. 正则表达式 1)贪婪匹配,非贪婪匹配 .*? 非贪婪 . ...

  7. Oracle递归查询(start with)

    写代码时碰到要弄清楚Oracle的role之间的传递关系,就是有role A的话,可以通过grant A to B,把A赋予给B,又通过grant B to C .那我想知道所有role中,有哪些ro ...

  8. notepad++常用操作梳理

    在  设置---管理快捷键   可以查询/重置快捷键.如下: 工作or学习中最长用到的操作: Ctrl+ALT-C:列编辑Ctrl+U:转换为小写Ctrl+Shift+U:转换为大写Ctrl+B:跳转 ...

  9. 3.2 Multi-Master Replication

    摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该 ...

  10. ubuntu16.04 安装 mysql-level

    ubuntu16.04 安装 mysql-level 1.下载 mysql-level(直接去官网下载rpm包,我的mysql-server是5.7.9.你下载自己对应的就可以了) 下载连接 2.rp ...