android - HMS Cloud DB SDK UnsatisfiedLinkError No implementation found for AGConnectCloudDB instance
问题描述
我遵循华为开发者网站上关于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)
CloudDBQuickStartApplication 类的 initAGConnectCloudDB 方法:
public class CloudDBQuickStartApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//Initialize AGConnectCloudDB
CloudDBZoneWrapper.initAGConnectCloudDB(this);
}
@Override
public void onTerminate() {
super.onTerminate();
}
CloudDBZoneWrapper类内容调用AGConnectCloudDB类的initialize方法:
public static void initAGConnectCloudDB(Context context) {
AGConnectCloudDB.initialize(context);
}
解决方案
出现此问题是因为您正在运行 Android 模拟器并且所选设备是 x86 架构。
解决方案是:
A. 下载 ARM 仿真器映像并创建一个 VM。建议您使用 Nexus 6p 或更高版本,并在运行过程中增加内存(至少两倍默认值,因为 ARM 模拟器在 x86 系统上运行缓慢)。
B、使用命令行编译生成APK,然后在x86模拟器上安装APK。
C. 使用真机调试应用。
D. 在编译脚本中设置 splits 参数。
推荐阅读
- javascript - 如何从我的屏幕中的组件获取道具?
- python - 使用 pandas 和“loc”在 DataFrame(使用 read_excel)中查找值,但不区分大小写
- r - Using purrr to create several new variables based on values of existing variables
- asp.net-core - 如何为 Asp 核心 OData 添加除 json 之外的格式化程序?
- javascript - Electron 中的图像文件上传和检索
- javascript - 如何将 JSON 数组从 REST API 转换为对象
- powershell - 使用 CD 命令启动 powershell 时,如何在路径名中包含“x64”?
- php - 执行同步和异步操作
- react-native - 如何在 React-native 中制作 e.target.value?
- python - 如何将 cursor.executemany 用于插入以外的其他操作