«Образец Movesense ECG продолжает останавливаться» и ошибка «не может найти« libmds.so » - PullRequest
0 голосов
/ 18 февраля 2019

Я использую Android Studio версии 3.3 на Windows 10 (64 бит).Вот характеристики виртуальных устройств, на которых произошла ошибка:

  • Nexus 5X API 28, Android 9.0, CPU / ABI: x86
  • Nexus 5X API 28, Android 9.0, CPU/ ABI: x86_64
  • Nexus 5 API 24, Android 7.0, CPU / ABI: x86
  • Pixel API 27, Android 8.1, CPU / ABI: x86

Версия мобильной библиотеки Movesense: 1.28.1.

Я загрузил папку suunto-movesense-mobile-lib-e78baa174a4a с веб-сайта Movesense (https://bitbucket.org/suunto/movesense-mobile-lib/downloads/) и попытался запустить различные образцы для AndroidПроблема, которую я собираюсь показать, задокументирована для ECGSample, но она также возникла для остальных трех приложений. Приложение построено правильно, но при запуске приложения на виртуальном устройстве появляется следующая ошибка:

Установка не удалась с сообщением Не удалось завершить сеанс:

INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113.
It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing.

(При изменении устройства Android и версии API возникла та же ошибка). Я решил эту проблему, добавив ее в скрипт build.gradle моего модуля Inside Android {} block:

 splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi-v7a'
            universalApk true
        }
    }

После этого приложение было запущено на виртуальном устройстве, но, к сожалению, сразу вылетает.Приложение запускается правильно, но сразу же закрывается со следующим сообщением:

" Movesense ECG sample keeps stopping".

При проверке Logcat у меня появляются следующие ошибки:

2019-02-08 12:03:28.641 4770-4770/com.movesense.samples.ecgsampleE/AndroidRuntime: FATAL EXCEPTION: main
Process: com.movesense.samples.ecgsample,PID: 4770
java.lang.UnsatisfiedLinkError:No implementation found for void com.movesense.mds.SDSInternalWrapper.sdsSetDelegate(java.lang.Object)(tried Java_com_movesense_mds_SDSInternalWrapper_sdsSetDelegate and Java_com_movesense_mds_SDSInternalWrapper_sdsSetDelegate__Ljava_lang_Object_2)
at com.movesense.mds.SDSInternalWrapper.sdsSetDelegate(NativeMethod)
at com.movesense.mds.SDSInternalWrapper.setDelegate(SDSInternalWrapper.java:167)
at com.movesense.mds.internal.operation.MdsOperationHandler.<init>(MdsOperationHandler.java:87)
at com.movesense.mds.Mds$Builder.build(Mds.java:357)
at com.movesense.samples.ecgsample.MainActivity.initMds(MainActivity.java:85)
at com.movesense.samples.ecgsample.MainActivity.onCreate(MainActivity.java:70)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(NativeMethod)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Чтобы выявить реальную проблему, мы отлаживаем программу, он получает ошибку, и ошибка «не могу найти« libmds.so ».Сведения:

System.loadLibrary(mds) FAILED! Error: sds: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/base.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_dependencies_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_resources_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_0_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_1_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_2_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_3_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_4_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_5_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_6_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_7_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_8_apk.apk", zip file "/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.movesense.samples.ecgsample-gmciklKIfxkuippl92JJAQ==/lib/x86, /system/lib]]] couldn't find "libmds.so"

Код ошибки:

private native void sdsSetDelegate(Object var1);

static {
    try {
        Log.d("SDSInternalWrapper", "Start load library call [mds]");
        System.loadLibrary("mds"); (Error occurred)
        Log.d("SDSInternalWrapper", "Finished load library call [mds]");
    } catch (UnsatisfiedLinkError var2) {
        String error = String.format("System.loadLibrary(mds) FAILED! Error: sds: %s", var2);
        Log.e("SDSInternalWrapper", error);
    }

}

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Текущая версия MDS не поддерживает x86 или x64, поэтому вы получаете UnsatisfiedLinkError.Поэтому он пока не может использоваться с симулятором Android, только отладка на устройстве.

Полный отказ от ответственности: я работаю в команде Movesense

0 голосов
/ 19 февраля 2019

В build.gradle в приложении-витрине библиотека mdslib-.aar должна находиться в папке Movesense, расположенной в «../Movesense/» относительно проекта, или, если вы пробуете другие примеры, она должна быть расположенав "../../../Movesense/" вы разместили его там?

Если не пытаетесь сохранить структуру папок, как здесь https://bitbucket.org/suunto/movesense-mobile-lib/src/master/android/

|_Movesense/ 
| |_libmds-<version>.aar
|  
|_Showcasapp/
| |_gradle/
| |_src/
| |
| 
|_Samples/
...