使用ARMv8的每臺設備都聲稱,它也向後兼容ARMv7的。
這很可能是由於項目配置和導入庫文件的錯誤導致的。
如果您正在構建您的項目在搖籃,你需要遵循類似的結構如下所示:
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文件夾的位置並不真正重要,只要你的項目配置適當地引用它們。
這裏是引用庫和上述jniLibs的位置進行比較的build.gradle的片段:
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')
}
如果上述失敗,您可以捕獲錯誤並通過在您正在使用的Detector對象的構造函數週圍放置一個try/catch塊,並圍繞對detector.start()的調用,防禦性地編程潛在的初始化錯誤。如果您捕獲UnsatisfiedLinkError,然後再檢查一個空檢測器實例,您將知道此時情感檢測不可用。