zoukankan      html  css  js  c++  java
  • UnsatisfiedLinkError: No implementation found for , AndroidStudio使用*.so

    今天工作的时候。发现了一个jni的问题,java.lang.UnsatisfiedLinkError: No implementation found for......




    问题1:后来查了资料后发现。是因为我在java中定义了native方法。可是在jni中没有相应的方法,这种话java就无法链接到本地方法。




    原因:

        造成这样的Error的有两种情况:
        (1) 没有在本地方法中的头文件里定义方法;
        (2) 缺少so文件。




    解决方式:

        (1)在.h文件里第一方法,并在.c中实现方法。
        (2)引入so文件;




    方案实行分析:

        方案1:这个不用多说,定义方法,自己依据自己的需求去实现;


        方案2:
        步骤(这里仅仅解说在Android Studio下的解决方式):

            (1)在  项目名appsrcmain下新建jniLibs目录,并将相应的.so文件放进去{目录结构为:处理器版本号/***.so(如:armeabi/***.so)},

        

               这样Android Studio就能够在编译的时候载入对用的so文件了;
            (2)注意:重点来了,
               在Android Studio下假设你仅仅有部分平台下的.so文件,并且你不在gradle中做不论什么配置的话,

               那么智能的Android Studio就会在编译的时候编译出其它平台下的.so文件(我在Eclipse中測试的时候没有发现这个问题)

               看好了,我如今仅仅在jniLibs中放入了armeabi版本号的*.so文件,可是在apk中却出现了'x86_64','x86','mips64'等多个版本号的*.so文件。

       这样就会造成程序无法执行【如图】

               

              
               解决方式:

               在.gradle指定相应平台的(代码例如以下),这样就能够在编译的时候让studio仅仅生成相应平台的*.so文件【如图】

               

    splits {
            abi {
                enable true
                reset()
                include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' //select ABIs to build APKs for
                universalApk true //generate an additional APK that contains all the ABIs
            }
        }

    Android的.so文件教程參考地址:关于Android的.so文件你所须要知道的

  • 相关阅读:
    好的 文章链接汇总
    webpack之postcss集成
    移动端适配方法合集
    每天干的啥?(2017.3)
    每天干的啥?(2017.2)
    【2016年终总结】
    每天干的啥?(2017.1)
    PHP获取接口数据(模拟Get)
    每天干的啥?(2016.12)
    更换域名后的数据库sql的执行命令
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7131161.html
Copyright © 2011-2022 走看看