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. 我对于C#的想法

    前言 首先,感谢各位的回答,还看到了好几个大神过来回答受宠若惊,有叫我坚持的,有叫我放弃,感谢. 一开始我学的是Java,但是没有实际的工作经验,因为从工作开始到现在已经两年的时间了我用的一直都是C# ...

  2. 函数IsValid()

    功能:检查对象变量是否已经实例化,即实例变量的值是否是个有效的对象句柄. 语法:IsValid(objectname) 参数:objectname:要检查的对象名. 返回值:Boolean.如果指定对 ...

  3. golang plugin的依赖问题

    golang plugin的依赖问题 此文中涉及的plugin运行环境为mac 10.14,go版本为1.11 主要是想讨论一下插件依赖的第三方库的问题. 例子是在https://github.com ...

  4. Java50道经典习题-程序6 求最大公约数及最小公倍数

    题目:输入两个正整数m和n,求其最大公约数和最小公倍数.分析:用辗转相除法求最大公约数    两个数的最大公约数:设两个数分别为n和m,(n>=m);用定义一个变量i,使用for循环,将i的取值 ...

  5. 阿里云ros实例

    模板文件 { "ROSTemplateFormatVersion": "2015-09-01", "Parameters": { " ...

  6. jquery源码解析:jQuery数据缓存机制详解2

    上一课主要讲了jQuery中的缓存机制Data构造方法的源码解析,这一课主要讲jQuery是如何利用Data对象实现有关缓存机制的静态方法和实例方法的.我们接下来,来看这几个静态方法和实例方法的源码解 ...

  7. [Objective-C语言教程]内存管理(36)

    内存管理是任何编程语言中最重要的过程之一.它是在需要时分配对象的内存并在不再需要时取消分配的过程. 管理对象内存是一个性能问题; 如果应用程序不释放不需要的对象,则应用程序会因内存占用增加并且性能受损 ...

  8. 【Qt】Qt在Windows下的开发与调试环境配置

    前文已经交待了从源码编译Qt自定义版本.现在可以开始配置一下开发与调试程序并写个Hello World了. 1. IDE 虽然Qt官方有VS插件使我们可以在VisualStudio中开发Qt应用,但我 ...

  9. linux中创建一个回收站

      1. mkdir /tmp/trash_tmp 建立一个回收站目录 2. vi /bin/trash 编辑一个文件     mv $@ /tmp/trash_tmp     :wq 保存退出 3. ...

  10. 爬虫2:urllib

        了解即可,不好用   一. 概述   python内置的http请求库,包括4个模块,分别如下   urllib.request   请求模块 urllib.error       异常处理模 ...