HMS Cloud DB SDK UnsatisfiedLinkError Для экземпляра AGConnectCloudDB реализация не найдена.
Я следовал инструкциям на веб-сайте Huawei Developer об услуге Cloud DB. Затем я просто создал простое приложение, пытающееся запрашивать данные из Cloud DB и тестировать его через Android Studio Emulator.
Но я получаю следующую ошибку, из-за которой приложение перестает работать с сообщением на экране: ExampleCloudDBApp продолжает останавливаться.
Process: com.huawei.agc.clouddb.quickstart, PID: 6400
java.lang.UnsatisfiedLinkError: No implementation found for long com.huawei.agconnect.cloud.database.AGConnectCloudDB.nativeGetInstance(com.huawei.agconnect.cloud.database.CertificateService, java.lang.String, java.lang.String) (tried Java_com_huawei_agconnect_cloud_database_AGConnectCloudDB_nativeGetInstance and Java_com_huawei_agconnect_cloud_database_AGConnectCloudDB_nativeGetInstance__Lcom_huawei_agconnect_cloud_database_CertificateService_2Ljava_lang_String_2Ljava_lang_String_2)
at com.huawei.agconnect.cloud.database.AGConnectCloudDB.nativeGetInstance(Native Method)
at com.huawei.agconnect.cloud.database.AGConnectCloudDB.initialize(AGConnectCloudDB.java:128)
at com.huawei.agc.clouddb.quickstart.model.CloudDBZoneWrapper.initAGConnectCloudDB(CloudDBZoneWrapper.java:103)
at com.huawei.agc.clouddb.quickstart.CloudDBQuickStartApplication.onCreate(CloudDBQuickStartApplication.java:28)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871)
at android.app.ActivityThread.access$1100(ActivityThread.java:199)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
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(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Метод initAGConnectCloudDB класса CloudDBQuickStartApplication:
public class CloudDBQuickStartApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//Initialize AGConnectCloudDB
CloudDBZoneWrapper.initAGConnectCloudDB(this);
}
@Override
public void onTerminate() {
super.onTerminate();
}
Содержимое класса CloudDBZoneWrapper, которое вызывает метод инициализации класса AGConnectCloudDB:
public static void initAGConnectCloudDB(Context context) {
AGConnectCloudDB.initialize(context);
}
2 ответа
Вы упомянули, что нужно протестировать приложение Cloud DB на эмуляторе Android Studio.
Основываясь на моих наблюдениях за реализацией комплектов Huawei Kits, было менее болезненно использовать настоящее устройство Android/ Huawei или даже облачную тестовую среду смартфона, представленную на веб-сайте разработчика Huawei. Некоторые ошибки, с которыми я столкнулся при использовании эмулятора, не отображались на реальном устройстве совсем.
Итак, могу ли я предложить вам повторно протестировать свое приложение в онлайн-облачной отладке или на реальном устройстве Android и проверить, сохраняется ли ошибка?
Проблема возникает из-за того, что вы запускаете симулятор Android и выбрано устройство с архитектурой x86.
Решение:
A. Загрузите образ эмулятора ARM и создайте виртуальную машину. Рекомендуется использовать Nexus 6p или новее и увеличивать объем памяти во время работы (удвоить значение по умолчанию, по крайней мере, потому, что эмулятор ARM работает медленно в системе x86).
Б. Используйте командную строку для компиляции и создания APK, а затем установите APK на симуляторе x86.
C. Используйте настоящий телефон для отладки приложения.
D. Установите параметр splits в скрипте компиляции.