2016-07-09 2 views
0

J'essaie donc d'utiliser JavaCV avec Android Studio. J'essaie d'utiliser le wrapper pour la classe FaceRecognizer. J'ai essayé de faire fonctionner ce code pendant des heures mais pas de chance jusqu'ici. Je continue à obtenir une erreur de construction:Problème d'utilisation de JavaCV Android Studio

 Error:A problem occurred configuring project ':app'. 
    > Could not find javacpp-presets-Mac OS X-x86_64.jar 
     (org.bytedeco:javacpp-presets:1.2). 
     Searched in the following locations: 
     https://jcenter.bintray.com/org/bytedeco/javacpppresets/1.2/javacpp-presets-1.2-Mac OS X-x86_64.jar' 

Je décompressé les fichiers .so pour OpenCV et divisé en deux fichiers: armeabi et x86, donc ce bien.

Voici mon fichier build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 
    sourceSets.main.jni.srcDirs = [] 

    //task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') { 
    // ndkDir = project.plugins.findPlugin('com.android.application').sdkHandler.getNdkFolder() 
    // //on Windows, you need to add ".cmd" after "ndk-build" below 
    // commandLine "$ndkDir/ndk-build", 
    //   'NDK_PROJECT_PATH=build/intermediates/ndk', 
    //   'NDK_LIBS_OUT=src/main/jniLibs', 
    //   'APP_BUILD_SCRIPT=src/main/jniLibs/Android.mk', 
    //   'NDK_APPLICATION_MK=src/main/jniLibs/Application.mk' 
    //} 
    //task ndkLibsToJar(type: Zip, dependsOn: 'ndkBuild', description: 'Create a JAR of the native libs') { 
    // destinationDir new File(buildDir, 'libs') 
    // baseName 'ndk-libs' 
    // extension 'jar' 
    // from(new File(buildDir, 'libs')) { include '**/*.so' } 
    // into 'lib/' 
    //} 
    //tasks.withType(JavaCompile) { 
    // compileTask -> compileTask.dependsOn ndkBuild 
    //} 
    defaultConfig { 
     applicationId "com.example.manavdutta1.affdexdemo" 
     minSdkVersion 19 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    packagingOptions { 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
     //exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties' 
     //exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml' 

     //might need these if you use openCV 
     exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties' 
     exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml' 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
    dependencies { 
     compile fileTree(include: ['*.jar'], dir: 'libs') 
     compile fileTree(dir: new File(buildDir, 'libs'), include: '*.jar') 
     testCompile 'junit:junit:4.12' 
     compile project(path: ':openCVLibrary2411') 
     compile files('src/main/libs/faceapi.jar') 
     compile files('src/main/libs/faceppsdk.jar') 
     //compile files('src/main/libs/artoolkitplus.jar') 
     //compile files('src/main/libs/ffmpeg.jar') 
     //compile files('src/main/libs/flandmark.jar') 
     //compile files('src/main/libs/flycapture.jar') 
     //compile files('src/main/libs/javacpp.jar') 
     //compile files('src/main/libs/javacv.jar') 
     //compile files('src/main/libs/arm/opencv-android-arm.jar') 
     //compile files('src/main/libs/x86/opencv-android-x86.jar') 
     //compile files('src/main/libs/libdc1394.jar') 
     //compile files('src/main/libs/libfreenect.jar') 
     //compile files('src/main/libs/opencv.jar') 
     //compile files('src/main/libs/videoinput.jar') 
     compile 'com.android.support:appcompat-v7:23.3.0' 
     compile 'com.affectiva.android:affdexsdk:3.0.1' 
     compile 'com.microsoft.projectoxford:face:1.0.0' 
     compile 'com.microsoft.projectoxford:emotion:1.0.0' 
     compile 'com.android.support:design:23.3.0' 
     compile 'org.bytedeco:javacv:1.2' 
     compile 'org.bytedeco.javacpp-presets:opencv:3.0.0-1.1:android-x86' 
     compile 'org.bytedeco.javacpp-presets:opencv:3.0.0-1.1:android-arm' 
     //compile group: 'org.bytedeco', name: 'javacv', version: '1.2' 

     //compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.10-0.10', classifier: 'android-arm' 
     //compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.5.1-0.10', classifier: 'android-arm' 

    } 

Je ne suis pas sûr de savoir comment procéder à partir d'ici. Quelles modifications dois-je apporter à build.gradle pour obtenir cette compilation? J'ai essayé d'utiliser javacv 1.1 mais j'ai une erreur lors de l'exécution, et les fichiers .so viennent tous de javacv 1.2.

Répondre

1

J'ai eu un problème similaire. Il y a apparemment un bug dans la résolution de dépendance de Gradle. L'auteur de Javacpp a déjà fourni une solution de contournement, voir ici: https://github.com/bytedeco/javacv/issues/432

Essayez d'inclure le code suivant dans votre script build.gradle:

configurations { 
    all*.exclude group: 'org.bytedeco', module: 'javacpp-presets' 
} 

Il fonctionne pour moi et nous espérons le faire pour vous.

+0

merci pour cela. j'ai un autre problème. quand je télécharge du code dans l'ensemble Android, il montre cette erreur: 09-18 12: 49: 23.161 15771-15771/com.example.nasif.myapplication E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.example.nasif.myapplication, PID: 15771 java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: org.bytedeco.javacpp.opencv_core – user1850484