Android端PyTorch与OpenCV依赖冲突问题求助
你遇到的问题是OpenCV 4.9.0和PyTorch Android 2.1.0两个依赖库都打包了libc++_shared.so动态库,导致打包时出现重复文件冲突。以下是几种可行的解决方法:
方法一:优先保留第一个找到的文件
在你的build.gradle.kts的android代码块中添加packagingOptions配置,让Gradle遇到重复路径的文件时只保留第一个:
android { // 已有的android配置(compileSdk、defaultConfig等)... packagingOptions { pickFirst("lib/*/libc++_shared.so") } }
这个配置会匹配所有架构目录下的libc++_shared.so,自动选择第一个遇到的版本打包,避免冲突。
方法二:主动排除其中一个库的文件
如果你想明确指定排除某一个库的libc++_shared.so,可以用exclude规则。比如排除OpenCV的该文件:
android { // 已有的android配置... packagingOptions { // 针对arm64-v8a架构排除 exclude("lib/arm64-v8a/libc++_shared.so") // 如果你的应用需要支持其他架构,补充对应的路径: // exclude("lib/armeabi-v7a/libc++_shared.so") // exclude("lib/x86/libc++_shared.so") // exclude("lib/x86_64/libc++_shared.so") } }
如果排除OpenCV的文件后出现运行时错误,就换成排除PyTorch的对应文件试试——不同库可能依赖该动态库的特定版本,需要根据实际运行情况调整。
内容的提问来源于stack exchange,提问作者user19013678
相关产品推荐
相关产品推荐

