在我的安卓项目中,我使用JavaCV,我还需要FFmpegMediaMetadataRetriever来检索给定位置的帧:
dependencies {
...
compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.3.3'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-x86'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-x86'
compile 'com.github.wseemann:FFmpegMediaMetadataRetriever:1.0.14'
...
}gradle编译失败,出现DuplicateFileException错误:
Error:Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK lib/x86/libavcodec.so
File1: C:\Users\pingu\.gradle\caches\modules-2\files-2.1\org.bytedeco.javacpp-presets\ffmpeg\3.2.1-1.3\65a0880fd927fe901cead47b9c4be9ae76a28764\ffmpeg-3.2.1-1.3-android-x86.jar
File2: C:\Users\pingu\.android\build-cache\957befefe8a63ddc13213dcddf7f709338e00edc\output\jni有没有办法在我的android应用程序中同时拥有这个库?提前感谢
发布于 2017-08-10 17:44:20
下面的步骤对我很有效。
首先,将以下行添加到build.gradle文件中:
packagingOptions {
pickFirst 'lib/x86/libavcodec.so'
pickFirst 'lib/x86/libavformat.so'
pickFirst 'lib/x86/libavutil.so'
pickFirst 'lib/x86/libswscale.so'
pickFirst 'lib/armeabi/libavcodec.so'
pickFirst 'lib/armeabi/libavformat.so'
pickFirst 'lib/armeabi/libavutil.so'
pickFirst 'lib/armeabi/libswscale.so'
...
}然后编译看起来是可以的,但是在运行时得到一个错误:
java.lang.UnsatisfiedLinkError: [...] couldn't find "libjniopencv_core.so"要修复它,请执行以下操作:
从opencv-3.2.0-1.3-android-x86.jar到app/src/main/jniLibs/x86
然后重新生成项目
https://stackoverflow.com/questions/45462553
复制相似问题