java.lang.RuntimeException:无法创建映射:无法读取配置文件:

时间:2018-08-19 20:54:41

标签: here-api

我正在为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$1.onEngineInitializationCompleted(MapFragmentImpl.java:135)
    at com.nokia.maps.MapsEngine$10.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%的时间发生。

我可以在这里https://github.com/heremaps/here-android-sdk-examples/issues/134

的地图站点中看到此问题

我从HERE地图团队寻求帮助,任何解决此问题的方法都会有所帮助。

先谢谢了。

2 个答案:

答案 0 :(得分:2)

很可能是您的设备上使用SDK的另一个应用程序,并且两个应用程序中的MapServices相互冲突。您可以尝试按照文档(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() {
    ...
}

答案 1 :(得分:0)

就我而言,此错误仅发生在 android 11 版本中。经过一些研究,我发现将文件目录从 getExternalFilesDir 更改为 getFilesDir 对我来说效果很好。在这种情况下,成功变量应该是:

布尔成功 = com.here.android.mpa.common.MapSettings.setIsolatedDiskCacheRootPath( m_fragment.getContext().getFilesDir().getPath() + File.separator + ".here-maps", "MAP_INTENT KEY 应该与清单文件中的键匹配");