之前文章写过一篇JNI生成so库文件   并调用里面的方法

手把手教你---JNI的实现

实际开发中  so库是别人给你的,不是你自己写的没所以就要用别人的so库文件。

有很多情况,有一种是比较简单的:既有so库文件又有对应的jar包,这样的话  直接就可以调用里面的方法了。

第二种比较坑爹,限制也比较多,所以现在就主要研究一下 第二种吧(只有so库  其他什么都没有)

第一步:

sourceSets {main {jniLibs.srcDirs = ['libs']}}

把这个添加到build gradle (app)  里面  (abdroid 下)

整体的代码如下:

android {compileSdkVersion 26buildToolsVersion "26.0.1"defaultConfig {applicationId "com.example.administrator.hongyangzzzb"minSdkVersion 15targetSdkVersion 26versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}sourceSets {main {jniLibs.srcDirs = ['libs']}}}

第二步:

工作区间切换到Project,在libs里面 把之前的so库文件添加进去,如图:

然后把同样的东西  在src/main 下新建文件夹jniLibs  粘贴到里面,如图:

第三步: 新建JNIUtils 类

这个就有点麻烦了,有一些要求在里面,因为我之前的调用C的方法的那个类名字加JNIUtils 多以这个类也必须交这个,名字不一样就报错,而且包名也必须一致,修改包名下一篇再说(凑篇幅),放改好包名就会使这样(因为上一个的包名是 hongyangzzz):

里面的是:

public class JNIUtils {static {System.loadLibrary("huazict");}public native String getString();}

然后在MainActivity调用就行了:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);JNIUtils j = new JNIUtils();Toast.makeText(this, j.getString()+"123", Toast.LENGTH_SHORT).show();}
}

----------------------------------------------------------------------------------------------------

下面的会写一篇专门关于报错的,,,,。。今天没时间了。

调用so库文件以及里面的方法相关推荐

  1. linux下Qt调用C++库文件(.so)程序实现

    文章目录 主要内容 一.编程环境及实现方法 二.项目实现 1.创建项目 2.导入库文件 三.项目中遇到的问题 总结 主要内容 如标题所示,在linux下使用qtcreator创建项目调用C++库文件, ...

  2. C#调用不同.cs文件下数据的方法

    C#调用不同.cs文件下数据的方法 在相同namespace下 在不同namespace下 在相同namespace下     我们希望在yuvvideo.cs文件中调用transform.cs文件中 ...

  3. qt linux 调用外部库文件 (safenet加密狗开发一)

    一加密狗开发基本原理: 经过我的探索,加密狗的基本原理就是每个加密狗有不同的id,根据加密狗的id生成独一无二的库文件,然后再在程序中加入vendorcode文件,比对插入的加密狗和code文件,如果 ...

  4. linux python qt 安装目录,Linux 下QT调用Python库文件 以及Linux 安装Python3.8开发环境 问题...

    最近想运用linux系统下Qt来实现c++ 与python的混合编程,linux系统会自带python2.7版本或者python3.5版本(深度linux). Qt调用python文件需要在pro文件 ...

  5. linux命令封装sh,shell脚本学习之调用脚本将文件打包zip的方法示例

    前言 本文主要给大家介绍的是关于调用脚本将文件打包zip的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍: 最近刚刚接触shell脚本,写了一点简单的练手.这里是用python调用脚本执行 ...

  6. 【python 3.6】调用另一个文件的类的方法

    文件1:test12.py 文件2:test13.py 文件1 如下: #!/usr/bin/python # -*- coding: utf-8 -*- '''''' class abcd(obje ...

  7. 【PyQt】pyqt加载调用ui界面文件的两种方法

    使用PyQt开发界面软件,自然会用到Qt Designer进行界面设计,拖拖按钮.设置菜单什么的,然后保存为 .ui 文件.但是在 Python 代码里面如何使用这些 .ui 文件呢? 有两种方法: ...

  8. qt linux 添加库文件路径,Linux下Qt调用共享库文件.so

    jvm--4垃圾收集 6. 垃圾收集GC (1)当需要排查各种内存溢出,内存泄漏等问题,当GC成为系统达到更高性能的瓶颈时,我们就需要对这些自动化的GC进行监控和调节. (2)PC计数器.本地方法栈. ...

  9. android 加载三方so的方法_Android开发教程之动态加载so库文件的方法

    Android开发教程之动态加载so库文件的方法,我想对于静态加载 so 库文件,大家都已经很熟悉了,这里就不多说了.在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静 ...

  10. java 动态库_java调用dll动态库文件的一般总结

    前一段时间,在项目需求中,需要调用一下第三方的动态库文件,下面是本人一些尝试的经历. 首先需要明白的是,在java中是不能直接调用动态库文件的,因为动态库文件是使用c或是c++编写的,作为一种跨   ...

最新文章

  1. JButton类,简单应用
  2. .NET Core IdentityServer4实战 第一章-入门与API添加客户端凭据
  3. 八、Pandas的基本使用
  4. 内卷的世界,我们是否可以换一种思维生活?
  5. java 线程变量put_Java线程(篇外篇):线程本地变量ThreadLocal
  6. 微信机器人红包java_微信机器人_奇迹蛋_java实现
  7. 2.学习管理系统项目学习一
  8. 自己写的一个分享按钮的插件(可扩展,内附开发制作流程)
  9. mac install torch0.4.1
  10. 十八:Java8新特性
  11. docker常用操作(二) docker安装mysql5.7
  12. Azure-发布个人静态网站
  13. floodFill详解
  14. 01--背包问题以及构造最优解
  15. DAY 9 | 自学前端第九天
  16. 程序员生存状态调查报告
  17. 农村信息化服务亟待破解五大难题
  18. 网站安全检测之信息收集类工具
  19. 稀土永磁材料磁矩(磁偏角)测量比对实验
  20. Baymax (Android版的Siri)之百度语音识别SDK调用

热门文章

  1. 农商银行招聘计算机人员考什么,农商银行招聘考试考什么内容
  2. VC6中如何让改变控件Botton的字体(大小和字体)
  3. 计算机经典书籍大全(内含下载方式)
  4. HHUOJ 1019 Friendship of Mouse(水题)
  5. jQuery Fancybox插件介绍
  6. c语言数组升序排列,数组输入各数之间用空格隔开,输出用空格隔开
  7. 银行等单位工作日计算的实现
  8. android12.0(S) 从SD卡导入vCard文件到通讯录 号码带“-“ 如何把横线去除
  9. 在做产品经理的实习收获(第一篇)
  10. ubuntu10.10下smbd服务配置——实现主机WinXP与虚拟机Ubuntu10.10共享