根据Apple要求,升级开发SDK到iOS13
背景
Apple发文,2020年4月起所有提交审核的app均需要使用基于iOS13的SDK进行开发。针对此条要求,公司的app代码需要一些变更。
为了紧跟Apple步伐,我们建议开发机器和开发环境都升级到最新。这样后面也更方便。
MacOS升级到10.15.3
这个基本没什么好说的
Xcode升级到11.3.1
这个也没什么好说的
cocoapods升级
Xcode升级到了11.3.1后,swift版本提升到了5.0,而第三方依赖库的swift版本最低不能低于4.2,据此,我们需要作出一些调整。原先的依赖库,很多都是基于swift3的。大部分知名的第三方库如Alamofire,Kingfisher更新还是很给力的。
而其他更新不及时的库,就需要你自己做取舍了,毕竟,你要保持app迭代的话,还是要跟着Apple的步伐。
依赖库升级
pod update
常见问题1
如果你是从低版本的MacOS升级到10.15.3,可能会报错
zsh: /usr/local/bin/pod: bad interpreter: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: no such file or directory
解决方法:
sudo gem install -n /usr/local/bin cocoapods
详情请见 stackoverflow pod install not working
常见问题2
如果在执行gem install cocoapods的时候,给出下面的编译错误
Building native extensions. This could take a while...
ERROR: Error installing cocoapods:
ERROR: Failed to build gem native extension.
current directory: /Library/Ruby/Gems/2.6.0/gems/ffi-1.12.2/ext/ffi_c
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20200311-46214-1s8wf1t.rb extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/include/ruby.h
You might have to install separate package for the ruby development
environment, ruby-dev or ruby-devel for example.
extconf failed, exit code 1
Gem files will remain installed in /Library/Ruby/Gems/2.6.0/gems/ffi-1.12.2 for inspection.
Results logged to /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-19/2.6.0/ffi-1.12.2/gem_make.out
解决方案:
安装xcode命令行工具。
sudo xcode-select --install
常见问题3
由于网络环境原因导致pod update提示timeout
解决方案:
通过代理服务器进行访问无法更新的repo源
export http_proxy="http://127.0.0.1:1087"
export https_proxy="http://127.0.0.1:1087"
常见问题4
xselect路径问题可能会导致如下报错:
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
解决方案:
报这个错误的原因是xcode-select不在默认的路径:
- 找到xcode-select的当前路径终端命令行
xcode-select --print-path /Library/Developer/CommandLineTools
- 设置xcode-select到指定位置
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
- 验证是否设置成功
xcode-select --print-path /Applications/Xcode.app/Contents/Developer
代码迁移
为了升级构建app的swift代码版本,可能需要一些代码变更,这个具体根据编译器提示来改基本就行了。
常见问题1
当执行pod update时,可能触发下面的json解析错误:
JSON::ParserError - 767: unexpected token at ''
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/json/common.rb:156:in `parse'
解决方案:
这可能是由于之前的项目repo源和更新后的不一致:
pod repo remove trunk
rm -rf ~/.cocoapods/repos/trunk/
pod update
常见问题2
/Users/Shared/Previously Relocated Items/Security/Juhua/iOS/ShaoXingRD/Pods/Target Support Files/xxx/xxx.xcconfig: unable to open file (in target "xxx" in project "Pods")
解决方案:
PodFile中找到相关库,pod install删除,然后再添加回来,重新pod install即可