techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

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

それぞれ、

てな感じで 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 対応もベータ版からちょくちょくやっとかないと、プロダクトだと博打すぎますね。(趣味アプリだからいいけど