Azure SpatialAnchors Android NDK操作AppProperties触发崩溃如何解决?
崩溃触发原因
该问题是Azure Spatial Anchors 2.9.0~2.11.0版本Android NDK包的已知原生封装缺陷:CloudSpatialAnchor::AppProperties() getter方法返回的IMap实例虚函数表存在偏移错误,调用Insert、Lookup等修改/查询方法时会访问空地址,触发SIGSEGV崩溃,和业务代码逻辑无关。
解决方案
可根据业务需求任选以下两种方案修复:
- 降级依赖库版本到2.8.1,该版本不存在该接口缺陷,现有代码不需要做任何修改即可正常运行。
- 若需使用更高版本的库,不要直接操作getter返回的
IMap实例,改用整体赋值的方式设置属性,示例代码如下:
visual.cloudAnchor = std::make_shared<CloudSpatialAnchor>(); visual.cloudAnchor->LocalAnchor(visual.localAnchor); // 先在本地std::map中填充所有需要的自定义属性 std::map<std::string, std::string> customProperties; customProperties["model-type"] = "frame"; // 直接调用AppProperties的setter方法整体赋值 visual.cloudAnchor->AppProperties(customProperties);
该setter接口在所有版本中均无兼容性问题,可正常写入自定义属性。
内容的提问来源于stack exchange,提问作者Sergei
相关产品推荐
相关产品推荐

