Xcode 9 対応
Xcode 9 対応
Xcode 9 正式リリース!ということで、重い腰を上げ現在作成中のアプリも環境移行をば。
kfurue_rails-tutorial-ios at mvvm
現状の構成
- Xcode
- 8.3
- CI
- Travis CI
- パッケージ管理
- Carthage
- Lint
- SwiftLint
こんな感じ。
順次対応
パッケージ管理
SPM に変更、とかも一瞬考えたが、現状使用しているのが以下の通り。
github "Alamofire/Alamofire" "4.5.0" github "OAuthSwift/OAuthSwift" "1.1.2" github "ReactiveX/RxSwift" "3.6.1"
うち、OAuthSwift
が SPM 対応していなさそうなので断念。
(と思って進めたんだけども いけるやん となったので今度やってみよう)
Carthage は Cartfile
に依存パッケージを記載していく。
使用するパッケージの バージョンも指定できる 。
>= 1.0
で、バージョン 1.0 以上ならなんでも来い
~> 1.0
で、バージョン 1.0 と互換性のある者
== 1.0
で、バージョン 1.0 決め打ち
といった風。
github "OAuthSwift/OAuthSwift" ~> 1.1.0 github "Alamofire/Alamofire" >= 3.1.0 github "ReactiveX/RxSwift" ~> 3.0
それぞれ、
- OAuthSwift
Switch CI to Xcode 9 and iPhone 8
- Alamofire
Swift 3.2 and Xcode 9
- RxSwift
Fixes compilation issue with Xcode 9b3.
てな感じで Xcode 9 対応されている。(RxSwift はまだ Xcode ベータっぽいけど
ので $ carthage update
でいけそう。
実行後の Cartfile.resolved
は下記の通り。
github "Alamofire/Alamofire" "4.5.1" github "OAuthSwift/OAuthSwift" "1.2.0" github "ReactiveX/RxSwift" "3.6.1"
CI 環境や、新たにソースコードを clone した時には $ carthage bootstrap
で上記 resolved ファイルのバージョンが使われる。
CI
で CI。
The OS X Build Environment - Travis CI
を参照。
osx_image: xcode9
でいける、と。
osx_image: xcode9 language: objective-c before_install: - carthage bootstrap --platform ios script: - swiftlint - xcodebuild test -project SampleApp.xcodeproj -scheme SampleApp -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.3.1'
SwiftLint は特に対応不要だった。
その他
Xcode 9 対応もベータ版からちょくちょくやっとかないと、プロダクトだと博打すぎますね。(趣味アプリだからいいけど