• 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文件你所须要知道的

  • 相关阅读:
    爬虫入门三(代理和cookie)
    爬虫入门二(数据解析)
    爬虫入门一(爬虫概述和requests模块的使用)
    爬虫环境搭建
    人生苦短,我用Python
    MySQL数据库事务、数据类型和约束
    jmeter学习笔记(1)-查看结果树+正则表达式+json+xpath的使用
    如果生成allure报告过程中报错AttributeError: module 'allure' has no attribute 'severity_level'
    银行借贷用例设计
    unittest与pytest的区别
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7131161.html
Copyright © 2020-2023  润新知