unity接ios的sdk的一些坑

其实我是做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)

unity接ios的sdk的一些坑_第1张图片

这个问题比较简单,但是对新手的我来说,居然找不到为什么引起的报错,后来发现应该 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)

unity接ios的sdk的一些坑_第2张图片

引起的这个错误很多,是重复的类或者文件!最开始我的解决方法是将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}

unity接ios的sdk的一些坑_第3张图片

unity接ios的sdk的一些坑_第4张图片

我表示看不懂,然后检查了产品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后,准备上传到

 TESTFLIGHT 下载来安装,结果上传失败!

ERROR ITMS-90159:“Invalid provisioning profile.This app contains an embedded provisioning profile that is not assocated with your account, Please use a provisioning profile associated with Team ID X6SSLL8LS7.”
unity接ios的sdk的一些坑_第5张图片

这个是证书不对的问题,上传App Store需要打发布包,之前打IPA是用的Automatically manage signing,没有用sdk那边提供的证书。
在证书导入的时候,先把Automatically manage signing 这个选项勾选掉,然后下边就出现很多红色的报错,分别导入就可以了。
unity接ios的sdk的一些坑_第6张图片
unity接ios的sdk的一些坑_第7张图片
如果你打包看到这些问题,很有可能是你的证书没有导入成功!(导证书的时候,不仅要导.mobileprovision文件,还要导.p12或者.cer文件),下边个图就是因为没有打开.p12文件造成的。
unity接ios的sdk的一些坑_第8张图片
error itms-90086错误:
这个是因为上传App Store需要支持64位。如果你是Unity导出的xcode工程,可以将Unity的player setting->other settings ->Architecture设置成Universal。也可以直接在xcode中设置,自己百度,这个很多!

坑6:(Unity导出xcode工程,在xcode上运行无缘无故崩溃)

后来发现是勾选了unity的Strip Engine Code这个选项!取消掉就好了!这个感觉起不了多大的作用,但是还是记一下吧!

你可能感兴趣的:(SDK,IOS,Unity3D)