2017-08-02 7 views
0

Dans mon projet Android J'utilise JavaCV et je dois aussi FFmpegMediaMetadataRetriever pour récupérer cadre à une position donnée: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' 
    ... 
} 

sur la compilation gradle échouer avec l'erreur 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 

Existe-t-il un moyen d'avoir ces libs dans mon application Android? merci d'avance

Répondre

0

La procédure suivante fonctionne pour moi.

d'abord ajouter ces lignes à votre build.gradle fichier:

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' 
    ... 
} 

compilation Ensuite semble être ok, mais obtenir une erreur lors de l'exécution:

java.lang.UnsatisfiedLinkError: [...] couldn't find "libjniopencv_core.so" 

Pour résoudre ce problème:

  • Créer des dossiers app/src/main/jniLibs/{bras, armeabi, armeabi-V7A, x86}
  • extrait * .so fichier de OpenCV-3.2.0-1.3-android-x86.jar à app/src/main/jniLibs/x86
  • extraire * .so fichier de OpenCV-3.2.0-1.3-android-arm.jar à app/src/main/jniLibs/{bras, armeabi, armeabi-V7A}

Ensuite, reconstruire le projet