Error de enlace no satisfactorio al inicializar el concentrador Myo en Android
Estoy desarrollando una aplicación para Android que utilizará el brazalete Myo . Quiero implementarlo como un servicio de accesibilidad, por lo que los gestos detectados por el brazalete podrían, por ejemplo, navegar a casa, etc.
Estoy intentando inicializar el eje, pero la aplicación para con la pila de error siguiente:
- Java.lang.UnsatisfiedLinkError: No se ha encontrado ninguna implementación para Boolean
- Error en dropboxSync: findlibrary devuelto null
- UnsatisfiedLinkError: Método nativo no encontrado - Android
- UnsatisfiedLinkError en el método nativo
- Android UnsatisfiedLinkError con OpenCV 2.4.2
01-06 23:42:41.222 11979-11979/eu.miko.myoid E/AndroidRuntime: FATAL EXCEPTION: main Process: eu.miko.myoid, PID: 11979 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/eu.miko.myoid-1/base.apk"],nativeLibraryDirectories=[/data/app/eu.miko.myoid-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libgesture-classifier.so" at java.lang.Runtime.loadLibrary(Runtime.java:367) at java.lang.System.loadLibrary(System.java:1076) at com.thalmic.myo.scanner.Scanner.<clinit>(Scanner.java:31) at com.thalmic.myo.Hub.init(Hub.java:201) at eu.miko.myoid.MyoidAccessibilityService.onCreate(MyoidAccessibilityService.java:21) at android.app.ActivityThread.handleCreateService(ActivityThread.java:2877) at android.app.ActivityThread.-wrap4(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1427) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Este es el código que utilizo para la inicialización del concentrador, según la documentación de Myo. He intentado ponerlo en los métodos onCreate y onServiceConnected del servicio de accesibilidad, el error aparece de todos modos.
Hub hub = Hub.getInstance(); if (hub.init(this, getPackageName())) { Intent intent = new Intent(this, ScanActivity.class); startActivity(intent); hub.setLockingPolicy(Hub.LockingPolicy.NONE); hub.addListener(mListener); } else { Log.e(TAG, "Could not initialize the Hub."); }
Estoy usando el Myo Android SDK más reciente. Pruebas en Nexus 5 con el firmware más reciente.
A mí me parece un error dentro del SDK, pero quizás es algo que ver con mi configuración? Cualquier ayuda sería apreciada.
Las muestras dadas en el SDK no parecen sufrir de la misma cuestión sin embargo.
En teoría, se añade el archivo libgesture-classifier.so a través de lo siguiente:
-
Estoy incluyendo el Myo SDK en el proyecto a través del archivo build.gradle:
dependencies { ... repositories { maven { // this must point to the myorepository distributed with the Myo SDK url '../myorepository' } } compile('com.thalmic:myosdk:0.10.+@aar') }
-
El myorepository contiene myosdk-0.10.0.aar.
-
Que, cuando lo examino como un zip, contiene libs / native-libs.jar
-
Que, a su vez, cuando se examina como una cremallera, contiene , Cada uno de los cuales contiene el archivo único libgesture-classifier.so
- UnsatisfiedLinkError (Método nativo no encontrado)
- Error de enlace no satisfecho - OpenCV para Android No nativo
- JNI_OnLoad devolvió la versión incorrecta (-1)
- Uso de jni en Android: UNsatisfiedLinkError
- UnsatisfiedLinkError (com.esri.core.runtime.LicenseImpl.nativeIsClientIdValid)
- Java.lang.UnsatisfiedLinkError después de actualizar a Android 5.0
Podría resolver el problema volviendo a una versión anterior del complemento gradle para Android. Parece que hay un problema con las bibliotecas nativas dentro del myosdk, no se copian correctamente.
Simplemente edite el archivo build.gradle del proyecto. La versión 1.3.0 funcionó para mí.
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { mavenCentral() } dependencies { **classpath 'com.android.tools.build:gradle:1.3.0'** } }