目录
软件环境与时间
- Unity2017.4.37c2
- Unity2017.4.40f1
- Xcode 12.0.1
- macOS 10.15.5
- 2020年10月13日
问题产生
最近出现Unity的应用在苹果提审时被拒的情况,原因是应用中使用了UIWebView:
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).
问题解决
在Mac上使用终端进入到xcode导出项目目录,执行一下指令查找包含UIWebView的库文件
grep -r UIWebView .
我这里显示的是libiPhone-lib.a这个文件匹配,这里(https://www.jianshu.com/p/327c7fbefc4a)提供了两种解决问题的办法,然而我发现我使用的是2017.4.37的版本,在Unity官方网站2017.4.33的release notes中我也确实找到了有关修复问题说明
iOS: Fixed Deprecated API Usage warning for using UIWebView when submitting Builds to the App Store Connect. (1180664, 1182274)
按理说我的版本应该已经解决了这个问题,后来看到有人说要禁用UnityAds,这个和我的情况也不匹配,于是我将libiPhone-lib.a直接解压,在执行上文的grep指令,发现了问题的所在,原来除了URLUtility.o还有其他的库使用了UIWebView
Binary file ./SADSWebPlayerView.o matches
Binary file ./SSRVInitialize.o matches
Binary file ./SSRVWebViewApp.o matches
在了解这几个文件功能的时候又看到有人(https://blog.csdn.net/u012138730/article/details/106972155)说是Unity中国增强版额外增加的功能导致的问题,我确实使用的是2017.4.37c2的版本,于是重新安装了2017.4.40f1的Unity,重新编译导出项目,再执行grep指令发现已没有UIWebView的使用,问题解决。
吐槽
- 在国内无法正常访问Unity.com,只能访问Unity.cn,在下载界面,上面显示的版本是“2017.4.33”,下面Release notes写的是“2017.4.33f1 Release Notes”,然而点击上面的链接下载来的却是“2017.4.33c1”即中国增强版的安装包,啊这...
- 更换Unity版本之后在Mac上Build不能在原xcode工程上面append,只能重新导出,又要重新配置很麻烦。