美文网首页
android 引用so文件UnsatisfiedLinkErr

android 引用so文件UnsatisfiedLinkErr

作者: 我是李小米 | 来源:发表于2017-12-05 13:29 被阅读95次

    在很多项目中都需要使用so文件,但是在使用的时候也许会出现各种错误,下面记录一下UnsatisfiedLinkError错误的解决方式。

    1、先看一下怎么在android studio中怎么添加so文件:

    在java的同级目录下创建jniLibs文件夹,然后把so文件所在的文件夹放进去就好了。如下图:


    so文件在android studio中的位置.png

    2、调用so文件中的方法:

    2.1引用so文件

    static {
            System.loadLibrary("so名称");
        }
    

    2.2调用方法:

    public native void xxxx();
    

    然后在代码中直接调用类.方法名()就好了

    示例代码如下:

    package com.android.XXX;
    
    public class DXXX {
        static{
    
            System.loadLibrary("XXX");
        }
    
        public native String XXX(short[] inBuf);  
        
        public native static int XXX();
    }
    

    3、报错信息:

     Process: com.example.dell.voiceapp, PID: 15461  java.lang.UnsatisfiedLinkError: No implementation found for int com.example.dell.voiceapp.utils.myUtils.EncoderCore.XXX()
    

    报错原因及解决:
    在so文件在编译时,已经固定了包名,所以需要在应用中调用时,需要创建一个和包名相同的包,并把
    调用so相关的方法,都放在这个包里边就搞定了。比如so文件中定义的报名是com.example.dell.lixiaomi.utils,那么在使用so文件的时候就需要在java目录下创建一个com.example.dell.lixiaomi.utils的包,然后把调用so文件方法的类都放在这个包里边。就可以了。

    相关文章

      网友评论

          本文标题:android 引用so文件UnsatisfiedLinkErr

          本文链接:https://www.haomeiwen.com/subject/fwzqixtx.html