2015-11-22 7 views
0

Я downloaded в Affdex SDK, и я пытаюсь получить CameraDetectorDemo работать на моем Nexus 5.Android - Ошибка загрузки библиотеки JNI при запуске приложения

я возникновение следующего исключения пытается запустить приложение.

07-23 11:16:19.020: D/dalvikvm(830): Not late-enabling CheckJNI (already on) 
07-23 11:16:23.280: D/AndroidRuntime(830): Shutting down VM 
07-23 11:16:23.280: W/dalvikvm(830): threadid=1: thread exiting with uncaught exception (group=0xada4aba8) 
07-23 11:16:23.390: E/AndroidRuntime(830): FATAL EXCEPTION: main 
07-23 11:16:23.390: E/AndroidRuntime(830): Process: com.affectiva.android.affdex.measureup, PID: 830 
07-23 11:16:23.390: E/AndroidRuntime(830): java.lang.UnsatisfiedLinkError: Couldn't load affdexface_jni from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.affectiva.android.affdex.measureup-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.affectiva.android.affdex.measureup-1, /system/lib]]]: findLibrary returned null 
07-23 11:16:23.390: E/AndroidRuntime(830): at java.lang.Runtime.loadLibrary(Runtime.java:358) 
07-23 11:16:23.390: E/AndroidRuntime(830): at java.lang.System.loadLibrary(System.java:526) 
07-23 11:16:23.390: E/AndroidRuntime(830): at com.affectiva.android.affdex.sdk.detector.AffdexFaceJNI.<clinit>(AffdexFaceJNI.java:21) 
07-23 11:16:23.390: E/AndroidRuntime(830): at com.affectiva.android.affdex.sdk.detector.AffdexFaceJNI$$InjectAdapter.get(AffdexFaceJNI$$InjectAdapter.java:27) 
07-23 11:16:23.390: E/AndroidRuntime(830): at com.affectiva.android.affdex.sdk.detector.AffdexFaceJNI$$InjectAdapter.get(AffdexFaceJNI$$InjectAdapter.java:14) 
+0

Убедитесь, что родной affdexface_jni библиотека создана и развернута в часть вашего APK. –

ответ

0

Это, скорее всего, связано с ошибкой в ​​том, как проект сконфигурирован и импортирует файлы библиотеки.

Если вы строите свой проект в Gradle, вы должны следовать аналогичной структуры, как показано здесь:

AffdexGradleProject 
`-- app 
|-- jniLibs 
| `-- armeabi-v7a 
|  `-- libaffdexface_jni.so 
|-- libs 
| |-- Affdex-sdk.jar 
| `-- Affdex-sdk-javadoc.jar 
`-- src 
|-- main 
| |-- assets 
| | `-- Affdex 
| |  |-- Classifiers.v_9 
| |  | `-- ... 
| |  `-- Affectiva.licence 
| |-- java 
| | `-- ... 
| |-- res 
| | `-- ... 
| `-- AndroidManifest.xml 
|-- app.iml 
`-- build.gradle 

Расположение на ЛИЭС и jniLibs папки на самом деле не имеет значения, пока ваш проект настроен правильно ссылаться на них.

А вот отрывок из build.gradle, который ссылается на расположение в LIBS и jniLibs выше для сравнения:

android { 
    ... 

    sourceSets { 
     main { 
      jniLibs.srcDirs = ['jniLibs'] 
      jni.srcDirs = [] //disable automatic ndk-build 
     } 
    } 
    ndk { 
     abiFilters “armeabi-v7a”, ... (what ever other architecture types additional libraries are using) 
    } 
} 

dependencies { 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.squareup.dagger:dagger:1.2.2' 
    compile 'javax.inject:javax.inject:1' 
    compile files('libs/Affdex-sdk.jar') 
    compile files('libs/Affdex-sdk-javadoc.jar') 
}