2017-08-02 185 views
0

在我的Android项目中,我使用JavaCV,我还需要FFmpegMediaMetadataRetriever在给定位置检索框架:JavaCV&FFmpegMediaMetadataRetriever:DuplicateFileException

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应用程序中拥有这个库?在此先感谢

回答

0

以下过程适用于我。

首先这些行添加到您的的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" 

要解决这个问题:

  • 创建文件夹app/src/main/jniLibs/{arm, armeabi,armeabi-V7A,86}
  • 提取*。所以文件从的OpenCV-3.2.0-1.3-机器人-x86.jar应用程序/ SRC /主/ jniLibs/86
  • 的OpenCV-3.2.0-1.3-机器人-arm.jar应用程序/ SRC /主/ jniLibs/{臂,armeabi,armeabi-V7A}

提取*。所以文件。然后重建项目