Android Skobbler Maps 2.4 SDK - 离线/预先捆绑的地图崩溃

时间:2015-03-10 01:42:35

标签: android skmaps

我一直在使用旧版Skobbler地图,并且发现它非常成功。我最近开始升级到2.4版本,以获得此版本中提供的一些额外功能('通过积分'是我感兴趣的主要功能)。

我可以运行AndroidSDKDemo项目。我可以让自己的项目运行。但是一旦我添加了一个离线软件包,每次启动时应用程序都会崩溃,其中包含一个"致命信号11 0x00000004"。

将离线地图包添加到SKMaps.zip文件后,如果我将连接模式设置为联机或离线,应用程序仍然崩溃,只是基于预安装的地图中存在的文件并不重要文件夹中。

我通过AndroidSDKDemo项目下载了离线地图包。然后我使用了android" adb backup -noapk"命令创建应用程序文件的压缩版本,并解压缩SKMaps文件夹。然后我移动了" v1"来自"地图"的文件夹进入" PreinstalledMaps",并压缩文件,然后将此文件添加到资产文件夹中的测试应用程序(崩溃的应用程序)。

看起来崩溃可能与SKMaps.zip有关...如果我从演示项目中获取SKMaps.zip文件(未更改,只是直接从网上下载),并将其放入我的测试应用程序 - 应用程序工作正常。如果我采用在备份中创建的SKMaps文件夹(因此包含" Maps"文件夹中的信息,并且在此文件中没有移动任何内容(甚至没有移动任何内容到" / PreinstalledMaps&#34 ;),并将此文件夹放在我的测试项目中,应用程序崩溃。

有没有人对如何解决这个问题有任何想法?这对我来说非常令人沮丧,因为我无法弄清楚为什么事情不起作用。我可能做错了什么,但我不知道这可能是什么。

提前感谢您的帮助

3 个答案:

答案 0 :(得分:6)

在sdk 2.3中加载地图时遇到了类似的问题。 我在初始化地图之前执行此线程解决了这个问题。

final SKPrepareMapTextureThread prepThread = new SKPrepareMapTextureThread(this, mapResourcesDirPath, zip, this);

prepThread.start();

当方法:

@Override
    public void onMapTexturesPrepared(boolean arg0) {

}

"的 onMapTexturesPrepared "在调用时,您可以使用预先安装的地图初始化地图:

initMapSettings.setPreinstalledMapsPath(mapResourcesDirPath+"/PreinstalledMaps");
(....)
SKMaps.getInstance().initializeSKMaps(getApplicationContext(), initMapSettings, API_KEY);

我希望有所帮助,它对我有用。

答案 1 :(得分:4)

事实证明我有点愚蠢。我正在压缩SKMaps文件夹,而不是SKMaps文件夹中的文件。这意味着我的拉链看起来像这样:

SKMaps.zip/SKMaps/PreinstalledMaps /...

它需要看起来像这样: SKMaps.zip/PreinstalledMaps /...

简单的解决方案,但对我来说并不是很明显。

为浪费时间道歉。

答案 2 :(得分:1)

SKMaps.zip中的结构必须与演示中的相同,修改或删除任何文件可能会导致更糟糕的应用程序崩溃时出现意外行为。

对于使用离线地图,首先必须设置preinstalledMapsPath(在我们的AndroidSDKDemo DemoUtils方法中,initializeLibrary取消注释initMapSettings.setPreinstalledMapsPath(app.getMapResourcesDirPath()          +“/ PreinstalledMaps”); )然后有两种方式

  1. 按以下方式更改资产:解压缩SKMaps zip并在文件夹PreinstalledMaps / v1 / 20141230 / package /中重新创建2.4的.skm地图重新制作资产中的存档< - 遗憾的是这种方法不是很可靠对于大地图包
  2. 另一种选择是手动添加包。默认情况下,在我们的AndroidSDKDemo中,如果有空间,则将地图资源放在内部存储器上,但可以在方法chooseStoragePath中的SplashActivity中更改,以便该方法只返回context.getExternalFilesDir(null).toString()。使用文件管理器应用程序(例如,Astro文件管理器)将文件复制到[external storage] /Android/data/com.skobbler.sdkdemo/files/SKMaps/PreinstalledMaps/v1/20141230/package/