我在这里遵循了设备虚拟化(DV(引擎开发的HMS开发者指南-https://developer.huawei.com/consumer/en/doc/development/connectivity-Guides/devicevirtualization-preparation,我将DV SDK集成到我的应用程序中,编译和构建都完成得很好。但在将我的DV应用程序部署到手机后,硬件设备列表将不会显示在应用程序GUI中。这可能是什么原因?
请检查您是否已经完成了以下操作:
- 首先,您需要将DV引擎的使用权限应用程序发送到:devConnect@huawei.com
- 一旦您的应用程序获得批准,请确保在AndroidManifest.xml中包含所有必需的权限和您的应用id作为元数据。DV Engine的虚拟设备权限,这对于使用分布式虚拟设备是强制性的
com.huawei.permission.DISTRIBUTED_VIRTUALDEVICE
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="appid=xxxxxxxxx"/>
确保代码中的DV SDK版本与手机中的版本相同。下面是一个示例代码,展示了如何检查DV版本:CURRENT_KIT_version是该应用程序兼容的华为DV引擎版本。您的应用程序需要记录版本,并检查您手机上的DV引擎版本是否与该应用程序兼容的DV引擎版相同。
boolean isSupport=true;
尝试{
// Obtain the running version of DV Kit.
字符串版本=DvKit.getVersion((;
if (version.compareTo(CURRENT_KIT_VERSION) < 0) { // The current DV Kit version does not meet the app running requirements. isSupport = false; }
}catch(NoClassDefFoundError e({
// The current running environment does not support the DV Kit.
isSupport=false;
Log.e(TAG, "DvKit not exist", e);
}
if(isSupport({
// The current DV Kit version meets the app running requirements. Intent intent = new Intent(MainActivity.this, DvKitDemoActivity.class); startActivity(intent);
}
1。请检查设备兼容性:
目前,DeviceVirtualization Engine只支持华为手机。当应用程序在不支持的运行环境中调用DV Engine中的API时,或者在运行不支持的EMUI版本的华为手机上调用API时,系统会抛出NoClassDefFoundError。因此,应用程序应该检查运行环境和DV引擎版本之间的兼容性。有关详细信息,请参阅文档。
2.检查回调方法connect是否调用成功:
如果是,则说明您的配置是正确的
如果没有,请检查您是否有访问相关API的权限。出于安全考虑,您需要向华为申请使用DeviceVirtualization Engine的开放API的权限。正如@Zinna所说,申请API权限需要在AppGallery Connect上创建应用程序后生成的应用程序ID,并且指纹已经配置。如需申请许可,请发送电子邮件至devConnect@huawei.com,并指定主题";DeviceVirtualization Engine权限应用程序"有关详细信息,请参阅文档。
3.首次启动应用程序时需要网络连接
检查回调方法startDiscovery是否已成功调用。如果是这样,并且设备参数不为空,则可以通过线程向UI线程发送数据。有关详细信息,请参阅官方网站上提供的演示。