高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)


1最近项目到了收尾阶段,所以开始了在真机部署调试,之前的模拟器环境下测试项目,一切都没问题,今天真机调试过程中,不料遇到了一些错误,主要错误如下图所示:高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第1张图片


高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第2张图片

主要错误来源提示好像是系统无法找到一个库文件,名称为:LMAMapKit。


2可是我们明明按照官方网站的教程,一步一步导入各种库文件,并且成功在模拟器部署与运行,为什么到真机上就不对了呢?回头查找项目下lib文件夹:

高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第3张图片

原来libMAMapKit.a文件在这个位置,两个文件夹各有一个。看名称应该能晓得,第一个Debug-iphonesimulator应该是模拟器运行时所调用到的库。莫非下面的那个就是真机时调用的?是否是我们少设置了引用位置的设置?


3,不管了,不知道是否是因为高端官方的失误,导致这样的结果,群里好多做地图应用的朋友都遇到过这种问题,并且使用百度Map API的朋友告诉我,百度的libMAMapKit.a是有两个,一个是模拟器用的,一个是真机调试时用的,如果到了真机调试时,需要把其真机调试的libMAMapKit.a放到项目的frameworks下,这样运行就不会报错。


4,好的,我们就沿用这个原理,手动给它添加一个libMAMapKit.a到frameworks下。

4-1把官方demo或自己项目lib-Release-iphoneos下的libMAMapKit.a拷贝一份

       高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第4张图片
4-2粘贴到项目的frameworks下。
高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第5张图片
4-3,粘贴后,项目整体结构;:
高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第6张图片
虽然看似重复了,可是这种土方法还是很灵验的哦

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别动,要不可能会影响你模拟器调试)。
再编译运行,你会发现没有错误了。
添加后的项目列表如下截图所示:
高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第7张图片
     保存,编译,运行,如果还出错的话,请注意了:
高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第8张图片

我们模拟器就用Debug来调试,真机调试时,也用Debug,如果按照要求,创建了Debug-iphoneos文件夹和内容,是不会有错的,或许你真机调试时,用的时Release,接下来打开Device edit界面设置一下:

     高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第9张图片
在这里面设置一下,还有在项目的Code sigin identity 里确保设置的是真机调试的证书~~~

真机运行 要选择 release 模式  高德的 debug模式下 他的包里没有 armv7  
路径一定要正确  debug 对应debug路径
release 要对应 release模式

如果到这里,还不行的话,打客服电话吧。











20130109更新
加载mapview时控制台出现很多ImageIO:警告,如:

高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第10张图片

这个不用怕,是我们安装官方教程导入地图库等资源时有一步骤有错误,修改后就不会出现此问题了。
解决方案:
把assets目录在Xcode环境下删除,然后再去工程文件夹下看一看有没有此文件夹,有的话一同删除了。
重新添加assets文件包

在添加 assets 文件包时  选择 Create folder references for any added folders选项
高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option)_第11张图片

看到了吗?当时你添加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 

你可能感兴趣的:(高德IOS真机调试LMAMapKit出错问题的解决方法(directory not found for option))