其实我是做unity的,没有接触过IOS,第一次接ISO的sdk,难免遇到很多操作问题。下面分享一些还记得的解决方法的错误!
接sdk之前看了一下菜鸟教程的OC !感觉只是皮毛。
坑1(lib找不到):
错误ld: library not found for -liPhone-lib
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个问题比较简单,但是对新手的我来说,居然找不到为什么引起的报错,后来发现应该 ld: library not found for -liPhone-lib 就是错误信息,是library search path 设置问题,看了一下设置,多一个双引号,去掉之后就没有这个报错了!
坑2(重复库):
错误ld: 345 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
引起的这个错误很多,是重复的类或者文件!最开始我的解决方法是将Other linker flags 里面的-ObjC去掉!编译能过,但是会报更奇怪的错,我不是很懂!后来又把它加上,将sdk一些重复文件删掉!
坑3(arc错误):
我的项目中之前有下边这样的代码
[[[NSMutableDictionary alloc]init]autorelease];
结果报错如下
'autorelease' is unavailable: not available in automatic reference counting mode
ARC forbids explicit message send of 'autorelease'
重点来了:如果项目中用了autorelease、ratain、release,而工程中的arc(Build Settings->Objective-C Automatic Reference Counting)设置为Yes,这时候你build会报错,而且,你去搜索这个错误的时候,很多人都会叫你把这个设置改为No。这样做我觉得不好,因为我被这样坑过。
正确做法是:在Build Phases中搜索你的文件,然后在compiler flags中加入-fno-objc-arc(这是为了某个文件不支持arc,支持arc是加-fobjc-arc,区别自己百度)。在这里举例的代码经过修改了之后不需要autorelease,所以把它删掉了!
坑4:(苹果支付问题,最头痛)
支付跟android的差不多,有sdk就是调用一个sdk的支付接口,但是我遇到一个报错!
Error Domain=SKErrorDomain Code=0 "无法连接到 iTunes Store" UserInfo={NSLocalizedDescription=无法连接到 iTunes Store}
我表示看不懂,然后检查了产品ID,后台配置,换了好几个账号,都没有解决。然后打了一个IPA给台湾的运营,叫他们帮忙测试!结果遇到安装失败!
sdk那边说的是苹果服务器的问题,我很是不信,一直找问题,最后的最后,发现真的好像是苹果服务器的问题,给两个链接:
http://blog.csdn.net/imanapple/article/details/47174993这个好像写得很清楚的样子。
http://www.cocoachina.com/bbs/read.php?tid-1717246-page-2.html ,好像也有很多人遇到这个问题。
但是最后解决问题是我在网上加了一个人,他给我说重启手机,因为他也是这样的,结果我重启之后真的解决了!
如果你也遇到这个问题,首先检查一下后台的配置和你工程的是不是一样的,产品id是否配置完成,再检查一下你代码有没有问题,如果还是不行,可以试一下重启设备!
坑5:(上传失败)
打了一个ipa给sdk那边的运营安装,手机是越狱的安装失败。在打ipa的select a method of distribution弹窗里选了App Store后,准备上传到
坑6:(Unity导出xcode工程,在xcode上运行无缘无故崩溃)
后来发现是勾选了unity的Strip Engine Code这个选项!取消掉就好了!这个感觉起不了多大的作用,但是还是记一下吧!