2017-08-02 100 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}

提取*。所以文件。然後重建項目