2016-07-09 16 views
0

Also versuche ich JavaCV mit Android Studio zu verwenden. Ich versuche, den Wrapper für die FaceRecognizer-Klasse zu verwenden. Ich habe versucht, diesen Code für Stunden laufen zu lassen, aber bisher kein Glück. Ich erhalte einen Buildfehler:Problem mit der Verwendung von 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' 

ich die .so-Dateien für opencv und in zwei Dateien entpackt: armeabi und x86, so das ist in Ordnung.

Hier ist meine build.gradle Datei:

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' 

    } 

Ich bin nicht sicher, wie man von hier zu gehen. Welche Änderungen muss ich machen, um diese Kompilierung zu erstellen? Ich habe versucht, javacv 1.1 zu verwenden, aber ich habe einen Fehler zur Laufzeit, und die .so-Dateien stammen alle aus javacv 1.2.

Antwort

1

Ich hatte ein ähnliches Problem. Es gibt offensichtlich einen Fehler in Gradle's Abhängigkeitsauflösung. Der Autor von Javacpp hat bereits eine Abhilfe zur Verfügung gestellt, siehe hier: https://github.com/bytedeco/javacv/issues/432

Versuchen Sie, den folgenden Code in Ihrem build.gradle Skript enthalten:

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

Es funktioniert für mich und wird für Dich hoffentlich tun.

+0

danke für das. Ich habe ein anderes Problem. Wenn ich Code in den Android-Satz hochlade, wird dieser Fehler angezeigt: 09-18 12: 49: 23.161 15771-15771/com.example.nasif.myapplication E/AndroidRuntime: FATALE AUSNAHME: mainProcess: com.example.nasif.myapplication, PID: 15771 java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: org.bytedeco.javacpp.opencv_core – user1850484