最近更新了一次我的《上海轨道交通》App,结果爆了。为了加入街区图功能我用了WP自带的Map控件,并且也申请了正确的API Key,发布之前在模拟器和真机上测试一切OK,结果发布后就是这个样子的:

具体的异常信息是:

Cannot create instance of type 'Microsoft.Phone.Maps.Controls.Map' [Line: 84 Position: 38]Exception from HRESULT: 0xD0000022

根据之前的经验,这像是没有在AppManifest中打开需要的权限。可是我分明已经勾选了ID_CAP_MAP了,还需要什么权限呢?最后经过一番苦逼的研究,在MSDN上看到了这样一个警告:

你TM在逗我?VS居然在我部署测试程序的时候偷偷把这个capability选上了而不告诉我一下!我的App设计的目的就在于尽量不要使用网络。所以我选择了可以支持离线浏览的手机自带的地图。没想到Map控件是隐含依赖于NETWORKING的,可能是考虑到不是所有人都会主动去下载离线地图。目测就是这个capability引起的了。勾上后重新发布,一切OK。

总结:

使用Map控件一定要记得选上ID_CAP_NETWORKING,不然发布到应用商店后就会爆。