【问题标题】:Error trying to create a new instance of SDKNativeEngine尝试创建 SDKNativeEngine 的新实例时出错
【发布时间】:2021-08-09 02:08:28
【问题描述】:

我正在尝试以这种方式创建 SDKNativeEngine 的新实例

SDKOptions sdkOptions =
          SDKOptions.withAccessKeySecretAndCachePathCacheSizeAndPersistentMapPath(
              accessKeyId, accessKeySecret, externalPath, cacheSizeBytes, externalPath);

     
// Trying to use external map folder
await SDKNativeEngine.sharedInstance.internaldispose(() async {
          SDKNativeEngine sdkNativeEngine;
          try {
            sdkNativeEngine = SDKNativeEngine(sdkOptions);
          } on InstantiationException {
            // Handle exception.
            print('$InstantiationException');
          }
          SDKNativeEngine.sharedInstance = sdkNativeEngine;
          isLoaded = true;

          MapDownloadService mapDownloadService = ServiceProvider.of<MapDownloadService>();
          await mapDownloadService?.fetchListRegions(forceRefresh: true);
        });

对我来说重要的是设置自定义路径来保存地图(externalPath变量),值是/storage//Android/data//files/MyMaps,但我遇到这个错误

[错误] SDKNativeEngine - 无法锁定缓存目录。查看上面的日志以获取更多详细信息。这通常发生在 SDKNativeEngine 的第二个实例创建时使用与现有实例相同的访问密钥 ID(例如,共享实例)。如果在创建新实例之前对现有实例调用 SDKNativeEngine.dispose() 方法,则该问题可能会得到解决。请记住,SDKNativeEngine 的实例可能存在于单独的进程中。

另外地图数据不保存在自定义路径中,它始终保存在内部私有存储中

【问题讨论】:

    标签: android ios flutter android-studio here-api


    【解决方案1】:

    SDK 创建了 SDKNativeEngine 的全局单例,您必须在创建新单例之前对其进行处理。

    最简单的方法是执行以下操作 - 等待 SDKNativeEngine.sharedInstance?.dispose(); 在创建 SDKNativeEngine 之前。 但也许您甚至不需要新实例,只需将您的 应用代码 放到 info.plist 和 Android 的 Manifest 中,然后只设置共享实例上的应用密码? 喜欢 - SDKNativeEngine.sharedInstance.setAccessKeySecret(accessKeySecret)

    用于在外部存储中存储地图数据 - 如果您打开 SDKOptions 的文档,您可能会看到您需要的所有选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-19
      • 2016-01-20
      • 1970-01-01
      • 2013-09-28
      • 2018-10-20
      • 2023-01-26
      • 1970-01-01
      • 2012-06-16
      相关资源
      最近更新 更多