1最近项目到了收尾阶段,所以开始了在真机部署调试,之前的模拟器环境下测试项目,一切都没问题,今天真机调试过程中,不料遇到了一些错误,主要错误如下图所示:
主要错误来源提示好像是系统无法找到一个库文件,名称为:LMAMapKit。
2可是我们明明按照官方网站的教程,一步一步导入各种库文件,并且成功在模拟器部署与运行,为什么到真机上就不对了呢?回头查找项目下lib文件夹:
原来libMAMapKit.a文件在这个位置,两个文件夹各有一个。看名称应该能晓得,第一个Debug-iphonesimulator应该是模拟器运行时所调用到的库。莫非下面的那个就是真机时调用的?是否是我们少设置了引用位置的设置?
3,不管了,不知道是否是因为高端官方的失误,导致这样的结果,群里好多做地图应用的朋友都遇到过这种问题,并且使用百度Map API的朋友告诉我,百度的libMAMapKit.a是有两个,一个是模拟器用的,一个是真机调试时用的,如果到了真机调试时,需要把其真机调试的libMAMapKit.a放到项目的frameworks下,这样运行就不会报错。
4,好的,我们就沿用这个原理,手动给它添加一个libMAMapKit.a到frameworks下。
4-1把官方demo或自己项目lib-Release-iphoneos下的libMAMapKit.a拷贝一份
4-2粘贴到项目的frameworks下。
4-3,粘贴后,项目整体结构;:
虽然看似重复了,可是这种土方法还是很灵验的哦
5,大功告成,保存一下,这个时候,你再真机调试一下,运行就应该是sussessd吧?
6,总体总结: 根据我个人感觉,总体出的问题就在于当在模拟器环境下运行时,会调用lib下Debug-iphonesimulator下的libMAMapKit.a,但是我们转到真机环境下时,系统无法找到lib下Release-iphoneos下的libMAMapKit.a,所以我们手动的copy一份到了framework下,这样部署运行时,就可以找到此库文件了。
还有,目前我使用的高德ios API版本叫旧,一直没有更换新的api,大家也可以尝试一下下载最新的API看看还有没有此问题。
------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------
解决方法二:官方给出的方法
看自己的出错日志,肯定会有如上的话:意为没有发现此路径下的Debug-ophonesos目录,所以我们就需要手动创建一个。
1,到工程的lib目录下,新建个Debug-iphoneos目录,然后把release-iphoneos目录下的.a文件拷贝到刚才新建的Debug-iphoneos目录下(Debug-iphonesimulator别动,要不可能会影响你模拟器调试)。
再编译运行,你会发现没有错误了。
添加后的项目列表如下截图所示:
保存,编译,运行,如果还出错的话,请注意了:
我们模拟器就用Debug来调试,真机调试时,也用Debug,如果按照要求,创建了Debug-iphoneos文件夹和内容,是不会有错的,或许你真机调试时,用的时Release,接下来打开Device edit界面设置一下:
在这里面设置一下,还有在项目的Code sigin identity 里确保设置的是真机调试的证书~~~
真机运行 要选择 release 模式 高德的 debug模式下 他的包里没有 armv7
路径一定要正确 debug 对应debug路径
release 要对应 release模式
如果到这里,还不行的话,打客服电话吧。
20130109更新
加载mapview时控制台出现很多ImageIO:警告,如:
这个不用怕,是我们安装官方教程导入地图库等资源时有一步骤有错误,修改后就不会出现此问题了。
解决方案:
把assets目录在Xcode环境下删除,然后再去工程文件夹下看一看有没有此文件夹,有的话一同删除了。
重新添加assets文件包
在添加 assets 文件包时 选择 Create folder references for any added folders选项
看到了吗?当时你添加assets文件时,肯定选中的是第一项,Create groups for any added folders
说到这里,我就介绍一下这俩选项的区别。
在copy items into destination group·s folder 的基础上(这个是copy目标文件到当前工程里,不勾选的话,只是引用关系,相当于副本)
Create groups for any added folders 意思是指为添加的文件创建group组(文件夹),在finder里打开工程文件就会有你创建的这个文件夹,
Create folder references for any added folders 意思是指为添加的文件创建虚拟的group组(文件夹),只在Xcode环境下才会显示。
选中第二项references 导入assets 后,保存再运行,就没有imageIO错误了。
项目涉及Map或是LBS定位服务的朋友可以加我一下噢~,我主要是做这方面的开发,希望一起交流学习。
QQ:315481491