Android-两个依赖库产生冲突,

时间:2019-06-24 15:43:25

标签: android

我需要为我的应用程序使用两个库作为依赖项。一种是用于流式传输CCTV摄像机,该公司提供的SDK可帮助通过P2P连接查看其摄像机。我需要为onvif流添加另一个库。

如果我在您的android studio中的演示项目中添加任何库,例如com.github.pedroSG94.vlc-example-streamplayer:pedrovlc:2.5.14

 implementation 'com.github.pedroSG94.vlc-example-streamplayer:pedrovlc:2.5.14'

然后,尽管该应用程序已编译,但将报告此类错误

No implementation found for boolean com.company.NetSDK.INetSDK.Init(com.company.NetSDK.CB_fDisConnect) (tried Java_com_company_NetSDK_INetSDK_Init and Java_com_company_NetSDK_INetSDK_Init__Lcom_company_NetSDK_CB_1fDisConnect_2)
2019-06-02 12:25:13.011 15075-15075/com.astrolabetech.iremote E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.astrolabetech.iremote, PID: 15075
    java.lang.UnsatisfiedLinkError: No implementation found for boolean com.company.NetSDK.INetSDK.Init(com.company.NetSDK.CB_fDisConnect) (tried Java_com_company_NetSDK_INetSDK_Init and Java_com_company_NetSDK_INetSDK_Init__Lcom_company_NetSDK_CB_1fDisConnect_2)
        at com.company.NetSDK.INetSDK.Init(Native Method)
        at com.astrolabetech.common.NetSDKLib.init(NetSDKLib.java:51)

这里com.company.NetSDK.INetSDK.Init来自相机公司提供的SDK。

我尝试了多个可以显示ONVIF URI流的库,并在应用程序具有NETSDK时出现此问题。如果我删除NETSDK或streamplayer:pedrovlc lib,则该应用程序将运行。

该问题如何解决?

编辑:

未压缩的APK包含以下libs文件夹

uncomprresed apk lib folder

这些库来自SDK模块的JniLibs文件夹

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎您没有所需库的64位版本。因此,您可以通过从构建中删除64位lib文件夹或将ABI属性设置为仅打包32位体系结构来解决问题。

原因:在Android上安装应用程序时,在APK文件的“ lib”文件夹中(您可以通过解压缩文件来查看文件夹),设备会搜索本机库(如armeabi,armeabi-v7a,arm64-v8a)的文件夹,x86,x86_64。因此,如果的arm64-v8a文件夹缺少“ lib”文件夹,则这些库将不会从另一个文件夹安装,并且会丢失。因此,您的应用必须为每种体系结构提供完整的库集,这就是为什么它无法找到“布尔值”的原因。