调用so库文件以及里面的方法
之前文章写过一篇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库文件以及里面的方法相关推荐
- linux下Qt调用C++库文件(.so)程序实现
文章目录 主要内容 一.编程环境及实现方法 二.项目实现 1.创建项目 2.导入库文件 三.项目中遇到的问题 总结 主要内容 如标题所示,在linux下使用qtcreator创建项目调用C++库文件, ...
- C#调用不同.cs文件下数据的方法
C#调用不同.cs文件下数据的方法 在相同namespace下 在不同namespace下 在相同namespace下 我们希望在yuvvideo.cs文件中调用transform.cs文件中 ...
- qt linux 调用外部库文件 (safenet加密狗开发一)
一加密狗开发基本原理: 经过我的探索,加密狗的基本原理就是每个加密狗有不同的id,根据加密狗的id生成独一无二的库文件,然后再在程序中加入vendorcode文件,比对插入的加密狗和code文件,如果 ...
- linux python qt 安装目录,Linux 下QT调用Python库文件 以及Linux 安装Python3.8开发环境 问题...
最近想运用linux系统下Qt来实现c++ 与python的混合编程,linux系统会自带python2.7版本或者python3.5版本(深度linux). Qt调用python文件需要在pro文件 ...
- linux命令封装sh,shell脚本学习之调用脚本将文件打包zip的方法示例
前言 本文主要给大家介绍的是关于调用脚本将文件打包zip的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍: 最近刚刚接触shell脚本,写了一点简单的练手.这里是用python调用脚本执行 ...
- 【python 3.6】调用另一个文件的类的方法
文件1:test12.py 文件2:test13.py 文件1 如下: #!/usr/bin/python # -*- coding: utf-8 -*- '''''' class abcd(obje ...
- 【PyQt】pyqt加载调用ui界面文件的两种方法
使用PyQt开发界面软件,自然会用到Qt Designer进行界面设计,拖拖按钮.设置菜单什么的,然后保存为 .ui 文件.但是在 Python 代码里面如何使用这些 .ui 文件呢? 有两种方法: ...
- qt linux 添加库文件路径,Linux下Qt调用共享库文件.so
jvm--4垃圾收集 6. 垃圾收集GC (1)当需要排查各种内存溢出,内存泄漏等问题,当GC成为系统达到更高性能的瓶颈时,我们就需要对这些自动化的GC进行监控和调节. (2)PC计数器.本地方法栈. ...
- android 加载三方so的方法_Android开发教程之动态加载so库文件的方法
Android开发教程之动态加载so库文件的方法,我想对于静态加载 so 库文件,大家都已经很熟悉了,这里就不多说了.在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静 ...
- java 动态库_java调用dll动态库文件的一般总结
前一段时间,在项目需求中,需要调用一下第三方的动态库文件,下面是本人一些尝试的经历. 首先需要明白的是,在java中是不能直接调用动态库文件的,因为动态库文件是使用c或是c++编写的,作为一种跨 ...
最新文章
- JButton类,简单应用
- .NET Core IdentityServer4实战 第一章-入门与API添加客户端凭据
- 八、Pandas的基本使用
- 内卷的世界,我们是否可以换一种思维生活?
- java 线程变量put_Java线程(篇外篇):线程本地变量ThreadLocal
- 微信机器人红包java_微信机器人_奇迹蛋_java实现
- 2.学习管理系统项目学习一
- 自己写的一个分享按钮的插件(可扩展,内附开发制作流程)
- mac install torch0.4.1
- 十八:Java8新特性
- docker常用操作(二) docker安装mysql5.7
- Azure-发布个人静态网站
- floodFill详解
- 01--背包问题以及构造最优解
- DAY 9 | 自学前端第九天
- 程序员生存状态调查报告
- 农村信息化服务亟待破解五大难题
- 网站安全检测之信息收集类工具
- 稀土永磁材料磁矩(磁偏角)测量比对实验
- Baymax (Android版的Siri)之百度语音识别SDK调用
热门文章
- 农商银行招聘计算机人员考什么,农商银行招聘考试考什么内容
- VC6中如何让改变控件Botton的字体(大小和字体)
- 计算机经典书籍大全(内含下载方式)
- HHUOJ 1019 Friendship of Mouse(水题)
- jQuery Fancybox插件介绍
- c语言数组升序排列,数组输入各数之间用空格隔开,输出用空格隔开
- 银行等单位工作日计算的实现
- android12.0(S) 从SD卡导入vCard文件到通讯录 号码带“-“ 如何把横线去除
- 在做产品经理的实习收获(第一篇)
- ubuntu10.10下smbd服务配置——实现主机WinXP与虚拟机Ubuntu10.10共享