Эмулятор Firebase com.facebook.soloader.SoLoader$WrongAbiError

Я пытаюсь протестировать базовое приложение для Android (Kotlin) с библиотекой Android Mapbox. Мои инструментальные тесты проходят на эмуляторе, работающем на моем ноутбуке для разработки. Но они терпят неудачу в тестовой лаборатории Firebase, где работают эмуляторы. Они проходят через тестовую лабораторию Firebase, на которой работают физические устройства.

Я получаю следующее исключение на эмуляторах тестовой лаборатории Firebase Nexus5X и Pixel2:

Что не так с эмуляторами в тестовой лаборатории Firebase? Почему они не могут загрузить собственный код Mapbox?

Трудно полностью диагностировать это только по трассировке стека. Вы создаете свое приложение для целевой архитектуры x86? Используете ли вы разделенный или универсальный APK?


person Michael Osofsky    schedule 10.01.2020    source источник


Ответы (1)


Я думаю, что другое поведение, которое вы видите, связано с тем, что виртуальные устройства Firebase Test Lab работают на x86, в то время как подавляющее большинство физических устройств Android имеют процессоры ARM.

«Не удалось загрузить собственную общую библиотеку. — com.facebook.soloader.SoLoader$WrongAbiError: APK был создан для другой платформы» — кажется, указывает на проблему с поиском собственного кода ARM, а не кода x86.

На этой странице обсуждается аналогичная ситуация с ошибкой: https://github.com/facebook/react-native/issues/5773

Спасибо за вашу помощь. Как определить, для какой архитектуры создано мое приложение? Как определить, использую ли я разделенный или универсальный APK? Вероятно, я использую архитектуру по умолчанию и выбор по умолчанию для разделенного или универсального APK, потому что я создал свое приложение в Android Studio из одного из его шаблонов и не менял эти настройки.

person P. Davis    schedule 15.01.2020
comment
Прочитав о разделениях, я уверен, что не использую разбивается, поэтому мое приложение должно быть создано как универсальный APK. Имейте в виду, что эмуляторы, доступные для Android Studio, не проявляют этой проблемы. Эмуляторы, доступные для Android Studio, похоже, также работают на x86, согласно колонке CPU/ABI, которую я вижу, когда захожу в Tools > AVD Manager. Я предполагаю, что эмуляторы в тестовой лаборатории Firebase чем-то отличаются от эмуляторов в Android Studio. - person Michael Osofsky; 17.01.2020
comment
На каких уровнях API вы пробовали это для виртуальных устройств FTL? Мне любопытно, появляется ли одно и то же сообщение об ошибке для всех уровней API. - person Michael Osofsky; 23.01.2020
comment
Вы можете скомпилировать библиотеку MapBox в код x86? Это решило бы этот вопрос. Или может быть ошибка в солоадере Facebook. Очень сложно отладить это только по информации, доступной здесь. - person P. Davis; 03.03.2021
comment
P. Davis, я запускал его на эмуляторах Nexus5X и Pixel2. Это было давно, но я думаю, что уровень API был 28. Я думаю, что это можно было бы воспроизвести с помощью базового приложения, которое реализует Mapbox, например их демонстрационное приложение для Android на github.com/mapbox/mapbox-android-demo . - person P. Davis; 03.03.2021
comment
java.lang.ExceptionInInitializerError в com.mapbox.mapboxsdk.net.ConnectivityReceiver.instance(ConnectivityReceiver.java:43) в com.mapbox.mapboxsdk.Mapbox.getInstance(Mapbox.java:67) в com.locuslabs.sdk.llpublic. LLMapFragment.onCreateView(LLMapFragment.kt:61) в androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600) в androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881) в androidx.fragment.app .FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238) в androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303) в androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439) в androidx.fragment. app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079) в androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869) в androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(Fragmen tManagerImpl.java:1824) в androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727) в androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2663) в androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated (FragmentManagerImpl.java:2613) в androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:246) в androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:542) в androidx.appcompat.app.AppCompatActivity. onStart(AppCompatActivity.java:201) в com.locuslabs.sdktestapp.MapActivity.onStart(MapActivity.kt:74) в android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1333) в androidx.test.runner.MonitoringInstrumentation.callActivityOnStart (MonitoringInstrumentation.java:714) в android.app.Activity.performStart(Activity.java:6992) в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2780) в droid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) в android.app.ActivityThread.-wrap11(неизвестный источник: 0) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) в android.os .Handler.dispatchMessage(Handler.java:105) в androidx.test.espresso.base.Interrogator.loopAndInterrogate(Interrogator.java:148) в androidx.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:525) в androidx.test.espresso.base. UiControllerImpl.loopUntil(UiControllerImpl.java:484) в androidx.test.espresso.base.UiControllerImpl.injectMotionEvent(UiControllerImpl.java:236) в androidx.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:162) в androidx .test.espresso.action.MotionEvents.sendUp(MotionEvents.java:139) в androidx.test.espresso.action.Tap.sendSingleTap(Tap.java:170) в androidx.test.espresso.action.Tap.access$100( Tap.java:31) в androidx.test.espresso.action.Tap$1.sendTap(Tap.java:47) в androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:137) в androidx.test. espresso.contrib.RecyclerViewActions$ActionOnItemAtPositionViewAction.perform(RecyclerViewActions.java:306) в androidx.test.espresso.contrib.RecyclerViewActions$ActionOnItemViewAction.perform(RecyclerViewActions.java:228) в androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform( ViewInteraction.java:366) в androidx.test.espresso.ViewInteraction.doPerf orm(ViewInteraction.java:255) в androidx.test.espresso.ViewInteraction.access$100(ViewInteraction.java:65) в androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:158) в androidx.test.espresso .ViewInteraction$1.call(ViewInteraction.java:155) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в android.os.Handler.handleCallback(Handler.java:789) в android.os.Handler .dispatchMessage(Handler.java:98) в android.os.Looper.loop(Looper.java:164) в android.app.ActivityThread.main(ActivityThread.java:6541) в java.lang.reflect.Method.invoke( Собственный метод) по адресу com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) по адресу com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Причина: com.mapbox. mapboxsdk.MapStrictModeException: Карта обнаружила ошибку, которая в противном случае завершилась бы автоматическим сбоем: не удалось загрузить собственную общую библиотеку. - com.facebook.soloader.SoLoader$WrongAbiError: APK был создан для другой платформы в com.mapbox.mapboxsdk.MapStrictMode.strictModeViolation(MapStrictMode.java:34) в com.mapbox.mapboxsdk.LibraryLoader.load(LibraryLoader.java: 49) на com.mapbox.mapboxsdk.net.NativeConnectivityListener.(NativeConnectivityListener.java:13) - person Michael Osofsky; 03.03.2021