こんにちは!コネヒトでiOSエンジニアをやっていますyanamuraです。
ママリのiOSアプリでXcode14でビルドが通るように対応を行いました。そんなに大変ではありませんでしたが、多少修正するところがあったのでまとめてみました。
やったこと
ライブラリのアップデート
ママリではRealmを使っていて、バージョンを上げる必要がありました。RealmSwiftを10.28.1、RxRealmを5.0.4にアップデートしました。
また、Xcode14にするとSwiftのバージョンが5.7になります。ママリではswift-formatを使っていて、こちらのバージョンを0.50700.1にアップデートしました。
ソースコードの修正
以下のようなエラーがコンパイル時に出るようになったので修正を行いました。
The compiler is unable to type-check this expression in reasonable time: try breaking up the expression into distinct sub-expressions
コンパイルエラーが発生した箇所はcombilneLatestでネストしている部分でした。
このようにcombineLatestの数の制限を突破するためにネストしている箇所が!
Observable.combineLatest( Observable.combineLatest( x, y ), a, b, c, … ) )
このようにネストしている箇所を外に出してやることでエラーは解消できました。
let xy = Observable.combineLatest( x, y ) Observable.combineLatest( xy, a, b, c, … ) )
archiveに失敗する問題対応
上記対応でビルドはできるようになったのですが、archiveで失敗するようになりました。
CocoaPodsで追加しているライブラリで署名のエラーが出ました。
Signing for “XXX” requires a development team. Select a development team in the Signing & Capabilities editor
CocoaPodsのほうでもissueとしてあがっていました。 https://github.com/CocoaPods/CocoaPods/issues/11402
解決方法としてはこちらのようにTeam IDを設定するか https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1149585364
post_install do |installer|
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings["DEVELOPMENT_TEAM"] = " Your Team ID "
end
end
end
end
CODE_SIGNING_ALLOWEDをNOにすることで解決できました。 https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1201464693
post_install do |installer| installer.pods_project.targets.each do |target| if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle" target.build_configurations.each do |config| config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' end end end end
まとめ
Xcode14にあげることで、iOS16の実機デバッグができるようになりますし、Swift5.7の新機能が使えるようになります。
Swift5.7ですぐに使いたいのがif letなどの短縮で
var startDate: Date? if let startDate = startDate { …
と書いていたのが以下でよくなりますね!
var startDate: Date? if let startDate { …
Swift 5.7については公式のだとSwift language announcements from WWDC22 が見やすい感じになっていますのでXcode14対応が終わったら見てみると良いかなと思います。
例年春頃にはXcode14にあげないとAppStoreに申請できなくなってしまうのでお気をつけください。
コネヒトでの開発に興味を持っていただいた方はカジュアルにお話しましょう〜 TwitterのDMなどでも大丈夫ですのでお気軽にどうぞ www.wantedly.com