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拷贝一份
![](https://img-my.csdn.net/uploads/201210/12/1350036161_5246.jpg)
4-2粘贴到项目的frameworks下。
![](https://img-my.csdn.net/uploads/201210/12/1350036318_8747.jpg)
4-3,粘贴后,项目整体结构;:
![](https://img-my.csdn.net/uploads/201210/12/1350036488_5526.jpg)
虽然看似重复了,可是这种土方法还是很灵验的哦
5,大功告成,保存一下,这个时候,你再真机调试一下,运行就应该是sussessd吧?
![](https://img-my.csdn.net/uploads/201210/12/1350036542_6834.jpg)
6,总体总结: 根据我个人感觉,总体出的问题就在于当在模拟器环境下运行时,会调用lib下
Debug-iphonesimulator下的libMAMapKit.a,但是我们转到真机环境下时,系统无法找到lib下Release-iphoneos下的libMAMapKit.a,所以我们手动的copy一份到了framework下,这样部署运行时,就可以找到此库文件了。
还有,目前我使用的高德ios API版本叫旧,一直没有更换新的api,大家也可以尝试一下下载最新的API看看还有没有此问题。
------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------
解决方法二:官方给出的方法
![](https://img-my.csdn.net/uploads/201211/07/1352253877_7332.jpg)
看自己的出错日志,肯定会有如上的话:意为没有发现此路径下的Debug-ophonesos目录,所以我们就需要手动创建一个。
1,到工程的lib目录下,新建个Debug-iphoneos目录,然后把release-iphoneos目录下的.a文件拷贝到刚才新建的Debug-iphoneos目录下(Debug-iphonesimulator别动,要不可能会影响你模拟器调试)。
再编译运行,你会发现没有错误了。
添加后的项目列表如下截图所示:
![](https://img-my.csdn.net/uploads/201301/14/1358153248_2615.jpg)
保存,编译,运行,如果还出错的话,请注意了:
![](https://img-my.csdn.net/uploads/201301/14/1358153484_4493.jpg)
我们模拟器就用Debug来调试,真机调试时,也用Debug,如果按照要求,创建了Debug-iphoneos文件夹和内容,是不会有错的,或许你真机调试时,用的时Release,接下来打开Device edit界面设置一下:
![](https://img-my.csdn.net/uploads/201301/14/1358153605_9808.jpg)
在这里面设置一下,还有在项目的Code sigin identity 里确保设置的是真机调试的证书~~~
真机运行 要选择 release 模式 高德的 debug模式下 他的包里没有 armv7
路径一定要正确 debug 对应debug路径
release 要对应 release模式
路径一定要正确 debug 对应debug路径
release 要对应 release模式
如果到这里,还不行的话,打客服电话吧。
20130109更新
加载mapview时控制台出现很多ImageIO:警告,如:
![](https://img-my.csdn.net/uploads/201301/09/1357733212_9294.png)
这个不用怕,是我们安装官方教程导入地图库等资源时有一步骤有错误,修改后就不会出现此问题了。
解决方案:
把assets目录在Xcode环境下删除,然后再去工程文件夹下看一看有没有此文件夹,有的话一同删除了。
重新添加assets文件包
在添加 assets 文件包时 选择 Create folder references for any added folders选项
![](https://img-my.csdn.net/uploads/201301/09/1357733465_7677.jpg)
看到了吗?当时你添加assets文件时,肯定选中的是第一项,Create groups for any added folders
说到这里,我就介绍一下这俩选项的区别。
在copy items into destination group·s folder 的基础上(这个是copy目标文件到当前工程里,不勾选的话,只是引用关系,相当于副本)
Create groups for any added folders 意思是指为添加的文件创建group组(文件夹),在finder里打开工程文件就会有你创建的这个文件夹,
![](https://img-my.csdn.net/uploads/201301/09/1357734084_5471.jpg)
Create folder references for any added folders 意思是指为添加的文件创建虚拟的group组(文件夹),只在Xcode环境下才会显示。
选中第二项references 导入assets 后,保存再运行,就没有imageIO错误了。
项目涉及Map或是LBS定位服务的朋友可以加我一下噢~,我主要是做这方面的开发,希望一起交流学习。
QQ:315481491