调用so库文件以及里面的方法「建议收藏」

调用so库文件以及里面的方法「建议收藏」之前文章写过一篇JNI生成so库文件 并调用里面的方法手把手教你—JNI的实现实际开发中 so库是别人给你的,不是你自己写的没所以就要用别人的so库文件。有很多情况,有一种是比较简单的:既有so库文件又有对应的jar包,这样的话 直接就可以调用里面的方法了。第二种比较坑爹,限制也比较多,所以现在就主要研究一下第二种吧(只有so库 其他什么都没有)第一

大家好,又见面了,我是你们的朋友全栈君。

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

手把手教你—JNI的实现

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

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

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

第一步:

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

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

整体的代码如下:

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.example.administrator.hongyangzzzb"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

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

}

第二步:

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

调用so库文件以及里面的方法「建议收藏」

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

调用so库文件以及里面的方法「建议收藏」

第三步: 新建JNIUtils 类

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

调用so库文件以及里面的方法「建议收藏」

里面的是:

public class JNIUtils {

    static {
        System.loadLibrary("huazict");
    }

    public native String getString();


}

然后在MainActivity调用就行了:

public class MainActivity extends AppCompatActivity {

    @Override
    protected 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();



    }
}

———————————-———————-———————-———————-

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148960.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月16日 下午1:16
下一篇 2022年6月16日 下午1:36


相关推荐

  • Vhr项目分析(三) 菜单初始化 和员工资料查看

    Vhr项目分析(三) 菜单初始化 和员工资料查看菜单和员工资料检查权限初始化菜单 connect 函数检查权限全局守卫 每次跳转页面 全局守卫逻辑开启 检验权限 to meta requireAuth 如若够权限 初始化菜单 如果去 chat 页面 执行 store 的 uodateMsgLis 函数 初始化菜单 get 请求 config sysmenu 若返回 status 为 200 表示成功 将响应消息格式化 加入 router rou

    2026年3月16日
    2
  • ArrayDeque in Java[通俗易懂]

    ArrayDeque in Java[通俗易懂]ArrayDequeinJavaArrayDequeinJavaprovidesawaytoapplyresizable-arrayinadditiontotheimplementationoftheDequeinterface.ItisalsoknownasArrayDoubleEndedQueueorArrayDeck.Thi…

    2026年2月3日
    12
  • 一个架构师谈什么是架构以及怎么成为一个架构师

    一个架构师谈什么是架构以及怎么成为一个架构师新年新事 来点轻松的话题 我们调剂一下后再继续讲 CASSSO 单点登录吧因为后面的内容全部和代码有关 大家会觉得枯燥 所以今天我们先来点 番外篇 讲讲什么是架构师 什么是架构这个永恒的话题吧 此篇源出自我在公司内部写的一个 PPT 它是用于在公司内部向广大技术人员做普及用的一个资料 而 CSDN 这边的编辑不支持图文混排的效果 因此一些章节我就直接截取自我的 PPT 里的内容了 这样可能对大家在阅读上会显

    2026年3月17日
    2
  • 数据库中的having语句_sql的having语句

    数据库中的having语句_sql的having语句SQL语句HAVING的用法HAVING语句通常与GROUPBY子句及聚集函数COUNT,AVG,SUM,MAX,MIN语句联合使用,用来过滤由GROUPBY语句返回的记录集,通常跟在GROUPBY后边作用相当于WHERE。where子句后边是指定行所对应的条件,并且不能含有聚集函数,而HAVING后边是指定组所对应的条件,可以含有聚合函数。HAVING语句的存在弥补了WHERE关键字不能与聚集函数联合使用的不足。我们可以这样理解:where筛选的是行(一个元组),而having筛选的是组(多

    2025年8月30日
    7
  • vr体验心得_在我们新的VR学习体验中逃脱女巫的小屋

    vr体验心得_在我们新的VR学习体验中逃脱女巫的小屋vr体验心得OurbrandnewprojectforUnityLearnisanimmersiveVRescaperoom.ExplorethepotentialofVRinUnityandcreateyourownexperienceinasimpleprototypeenvironment.Letusintroduceyou…

    2022年10月1日
    5
  • docker搭建apache php环境步骤总结「建议收藏」

    docker搭建apache php环境步骤总结「建议收藏」#拉取容器dockerpulldaocloud.io/sectest/php-apache:master-ca84461#创建容器dockerrun-d-it-p 8888:80 –nameapache_php-v/var/www/html:/var/www/htmldaocloud.io/sectest/php-apache:master-ca84461/bin/sh…

    2022年7月12日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号