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 问题。
我现在通过在两个地方硬编码名称解决了这个问题。
我注意到最近初始化 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 问题。
我现在通过在两个地方硬编码名称解决了这个问题。