HERE 地图:MISSING_SERVICE 错误

HERE Maps: MISSING_SERVICE error

我注意到最近初始化 HERE android SDK 的错误有所增加。 具体来说,我看到了错误 MISSING_SERVICE。当我查看文档时,它说这意味着地图服务不可用。 AFAICT 我对这项服务没有太多控制权。您知道什么可能导致服务无法运行吗?

我假设您按照此处 [1] 的描述将 MapService 嵌入到应用程序的清单中,而不依赖于另一个应用程序提供的全局 MapService

如果是这样,您可以尝试更改服务 process 属性,使其在私有进程中运行 [2] 或尝试使用隔离磁盘缓存功能 [1] 以查看它是否有助于解决问题。如果您最终尝试了其中任何一个并且有帮助,请反馈!

我花了一天的大部分时间试图弄清楚为什么会这样,包括 -使我的缓存失效并重新启动 -删除apk并重建(强制创建一个新的) - 关闭 Instant 运行 -擦除模拟器中的所有数据 - 在 build.gradle 文件

中明确指定 manifest.srcFile

最后,我的问题不是这些(它们包含在此处以防其他人发现它们有帮助),但这是因为我的代码中的缓存名称和清单中的意图 activity 名称不匹配。 具体来说,我正在使用

设置缓存
    boolean success = com.here.android.mpa.common.MapSettings.setIsolatedDiskCacheRootPath(
            getActivity().getApplicationContext().getExternalFilesDir(null) +
                    File.separator + ".here-maps", getResource().getString(R.string.app_str);

并在清单中设置 HERE 地图服务

    <service
            android:name="com.here.android.mpa.service.MapService"
            android:exported="false"
            android:label="@string/app_name">
        <intent-filter>
            <action android:name="@string/app_str"/>
        </intent-filter>
    </service>

据我所知,问题是虽然上面 XML 中的标签将该字符串解释为引用,但操作名称却没有。这意味着代码和清单指向不同的地方,这导致了我的 MISSING_SERVICE 问题。

我现在通过在两个地方硬编码名称解决了这个问题。