iOS应用程序拒绝cocos2d-x和libCurl上的非公共API(SSL相关)
我刚刚提交了基于cocos2d-x(C ++)和libcurl构建的评论和应用程序。
我使用libcurl和SSL支持,以便从Facebook下载个人资料图片
当我从组织者validation我的应用程序或尝试分发时,我收到以下错误:
您的应用包含非公共API使用情况。 请修改错误..
该应用程序引用Payload / …. app / {appName}中的非公共符号:SSLCopyPeerCertificates,{appName}:SSLDisposeContext等。
当我在应用程序中搜索此函数时,我得不到匹配项,但我认为它与libcurl有关,因为我在与libcurl相关的代码中不使用SSL
有什么建议么 ?
我发了一条消息到苹果公司的appreview,但恐怕这可能很长。
错误的屏幕截图: http : //accessdev.s3.amazonaws.com/apps/ssl_reject.png
提前致谢
我建议使用最新的libcurl版本,即撰写本文时的7.28.1版本。 这包括与iOS本机SSL API相关的几个修复,请参阅:
- http://curl.haxx.se/mail/lib-2012-10/0142.html
- https://github.com/bagder/curl/commit/f1d2e1850819f54d1c950989614da7445bdd457f
我认为这应该解决你的问题与你不应该使用的各种符号( SSLDisposeContext
等)。
如果我参考Nick的libcurl 7.28.1 iOS构建 ,则无法找到您附加的Xcode警告窗口中列出的非公共符号:
$ xcrun -sdk iphoneos nm -j -arch armv7 libcurl-device.a 2>/dev/null | grep SSL _SSLClose _SSLCopyPeerTrust _SSLCreateContext _SSLGetBufferedReadSize _SSLGetNegotiatedCipher _SSLGetNegotiatedProtocolVersion _SSLGetSessionState _SSLHandshake _SSLRead _SSLSetConnection _SSLSetIOFuncs _SSLSetPeerDomainName _SSLSetProtocolVersionMax _SSLSetProtocolVersionMin _SSLSetSessionOption _SSLWrite
当然,同样适用于armv7s
架构。