android - Android- 两个依赖库产生冲突,
问题描述
我需要为我的应用程序使用两个库作为依赖项。一种是用于流式传输闭路电视摄像机,SDK 由公司提供,有助于通过 P2P 连接查看他们的摄像机。我需要为 onvif 流添加另一个库。
例如,如果我将任何库添加com.github.pedroSG94.vlc-example-streamplayer:pedrovlc:2.5.14
到您在 android studio 中的演示项目中
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 文件夹
这些库来自 SDK 模块的 JniLibs 文件夹
解决方案
您似乎没有所需库的 64 位版本。因此,您可以通过从构建中删除 64 位 lib 文件夹来解决您的问题,或者将 ABI 属性设置为仅打包 32 位架构。
原因:在Android上安装应用程序时,在APK文件的“lib”文件夹内(解压文件可以看到文件夹),设备搜索本地库的文件夹,如armeabi、armeabi-v7a、arm64-v8a、x86、 x86_64。因此,如果 arm64-v8a 文件夹缺少“lib”文件夹,则库将不会从另一个文件夹安装并且会丢失。因此,您的应用程序必须为每种架构提供全套库,这就是它无法找到“布尔值”的原因。
推荐阅读
- javascript - When Chrome clears disk cache?
- angularjs - Angular 6:在屏幕中心显示登录表单以及控件
- java - 引起:java.lang.IllegalArgumentException:不是托管类型:& 引起:org.hibernate.AnnotationException:没有为实体指定标识符:
- java - 如何使用 Cron 编写 ThreadPoolTaskScheduler?
- c# - 使用从 C# 远程传递的参数运行 Powershell 脚本
- c++ - 使用 CMake 设置 c++ 覆盖率
- php - PHP购物车数组检查项目是否已经添加
- javascript - 创建一个函数来排序表React,JSX
- automated-tests - Is there a way to upload .feature files in Rally
- react-native - react-native-webview :对于 iOS 文本太小