根据Apple要求,升级开发SDK到iOS13

1574

背景

Apple发文,2020年4月起所有提交审核的app均需要使用基于iOS13的SDK进行开发。针对此条要求,公司的app代码需要一些变更。
为了紧跟Apple步伐,我们建议开发机器和开发环境都升级到最新。这样后面也更方便。

屏幕截图 20201012 011255.jpg

MacOS升级到10.15.3

这个基本没什么好说的

Xcode升级到11.3.1

这个也没什么好说的

cocoapods升级

Xcode升级到了11.3.1后,swift版本提升到了5.0,而第三方依赖库的swift版本最低不能低于4.2,据此,我们需要作出一些调整。原先的依赖库,很多都是基于swift3的。大部分知名的第三方库如Alamofire,Kingfisher更新还是很给力的。
而其他更新不及时的库,就需要你自己做取舍了,毕竟,你要保持app迭代的话,还是要跟着Apple的步伐。

cocoapods升级成功.png

依赖库升级

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不在默认的路径:

  1. 找到xcode-select的当前路径终端命令行
    xcode-select --print-path
    /Library/Developer/CommandLineTools
    
  2. 设置xcode-select到指定位置
    sudo xcode-select --switch 
    /Applications/Xcode.app/Contents/Developer/ 
    
  3. 验证是否设置成功
    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'

pod update json error.png

解决方案:
这可能是由于之前的项目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")

截屏20200312下午12.23.12.png

解决方案:
PodFile中找到相关库,pod install删除,然后再添加回来,重新pod install即可