java.lang.RuntimeException:无法创建地图:无法读取配置文件:
java.lang.RuntimeException: Cannot create map: Failed to read configuration file:
我正在为 Android 应用程序实施 HERE 地图,我在 HERE 地图 SDK 中不断崩溃并出现以下错误
Process: my.app.package, PID: 30682
java.lang.RuntimeException: Cannot create map: Failed to read configuration file: /data/user/0/my.app.package/files/.here-maps/someid/mwconfig_client
at com.nokia.maps.MapImpl.<init>(MapImpl.java:451)
at com.here.android.mpa.mapping.Map.<init>(Map.java:710)
at com.nokia.maps.bw.m(MapFragmentImpl.java:546)
at com.nokia.maps.bw.a(MapFragmentImpl.java:583)
at com.nokia.maps.bw.a(MapFragmentImpl.java:85)
at com.nokia.maps.bw.onEngineInitializationCompleted(MapFragmentImpl.java:135)
at com.nokia.maps.MapsEngine.run(MapsEngine.java:2471)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6753)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
它并非总是可重现,但有 50% 的时间会发生。
我可以看到这个问题在 HERE 地图站点中仍然存在,https://github.com/heremaps/here-android-sdk-examples/issues/134
我向 HERE 地图团队寻求帮助,任何解决此问题的方法都会有所帮助。
提前致谢。
可能是您的设备上有另一个应用程序在使用SDK,这两个应用程序的地图服务相互冲突。您可以尝试按照文档 (https://developer.here.com/documentation/android-premium/dev_guide/topics/map-service.html) 中的描述为您的应用程序设置独立的磁盘缓存帮助
AndroidManifest.xml
<service
android:name="com.here.android.mpa.service.MapService"
android:label="{YOUR_LABEL_NAME}"
android:exported="false">
<intent-filter>
<action android:name="{YOUR_INTENT_NAME}">
</action>
</intent-filter>
</service>
MapActivity.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Search for the map fragment to finish setup by calling init().
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapfragment);
boolean success = com.here.android.mpa.common.MapSettings.setIsolatedDiskCacheRootPath(
getApplicationContext().getExternalFilesDir(null) + File.separator + ".here-maps",
"{YOUR_INTENT_NAME}");
if (!success) {
// Setting the isolated disk cache was not successful, please check if the path is valid and
// ensure that it does not match the default location
// (getExternalStorageDirectory()/.here-maps).
// Also, ensure the provided intent name does not match the default intent name.
} else {
mapFragment.init(new OnEngineInitListener() {
...
}
在我的例子中,这个错误只发生在 android 11 版本中。经过一些研究,我发现将文件目录从 getExternalFilesDir 更改为 getFilesDir 对我来说效果很好。在那种情况下,成功变量应该是:
布尔值成功=com.here.android.mpa.common.MapSettings.setIsolatedDiskCacheRootPath(
m_fragment.getContext().getFilesDir().getPath() + File.separator + ".here-maps",
"MAP_INTENT 应与清单文件中的键匹配的键");
我正在为 Android 应用程序实施 HERE 地图,我在 HERE 地图 SDK 中不断崩溃并出现以下错误
Process: my.app.package, PID: 30682
java.lang.RuntimeException: Cannot create map: Failed to read configuration file: /data/user/0/my.app.package/files/.here-maps/someid/mwconfig_client
at com.nokia.maps.MapImpl.<init>(MapImpl.java:451)
at com.here.android.mpa.mapping.Map.<init>(Map.java:710)
at com.nokia.maps.bw.m(MapFragmentImpl.java:546)
at com.nokia.maps.bw.a(MapFragmentImpl.java:583)
at com.nokia.maps.bw.a(MapFragmentImpl.java:85)
at com.nokia.maps.bw.onEngineInitializationCompleted(MapFragmentImpl.java:135)
at com.nokia.maps.MapsEngine.run(MapsEngine.java:2471)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6753)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
它并非总是可重现,但有 50% 的时间会发生。
我可以看到这个问题在 HERE 地图站点中仍然存在,https://github.com/heremaps/here-android-sdk-examples/issues/134
我向 HERE 地图团队寻求帮助,任何解决此问题的方法都会有所帮助。
提前致谢。
可能是您的设备上有另一个应用程序在使用SDK,这两个应用程序的地图服务相互冲突。您可以尝试按照文档 (https://developer.here.com/documentation/android-premium/dev_guide/topics/map-service.html) 中的描述为您的应用程序设置独立的磁盘缓存帮助
AndroidManifest.xml
<service
android:name="com.here.android.mpa.service.MapService"
android:label="{YOUR_LABEL_NAME}"
android:exported="false">
<intent-filter>
<action android:name="{YOUR_INTENT_NAME}">
</action>
</intent-filter>
</service>
MapActivity.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Search for the map fragment to finish setup by calling init().
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapfragment);
boolean success = com.here.android.mpa.common.MapSettings.setIsolatedDiskCacheRootPath(
getApplicationContext().getExternalFilesDir(null) + File.separator + ".here-maps",
"{YOUR_INTENT_NAME}");
if (!success) {
// Setting the isolated disk cache was not successful, please check if the path is valid and
// ensure that it does not match the default location
// (getExternalStorageDirectory()/.here-maps).
// Also, ensure the provided intent name does not match the default intent name.
} else {
mapFragment.init(new OnEngineInitListener() {
...
}
在我的例子中,这个错误只发生在 android 11 版本中。经过一些研究,我发现将文件目录从 getExternalFilesDir 更改为 getFilesDir 对我来说效果很好。在那种情况下,成功变量应该是:
布尔值成功=com.here.android.mpa.common.MapSettings.setIsolatedDiskCacheRootPath( m_fragment.getContext().getFilesDir().getPath() + File.separator + ".here-maps", "MAP_INTENT 应与清单文件中的键匹配的键");