Slide 11
Slide 11 text
© ZOZO, Inc.
11
ݱঢ়Ѳ
(PBM·Ͱͷ50%0Λ֬ೝ͢Δɻ
Կ͕ୡ͞ΕΕɺ3PTFUUBϑϦʔͰ͖Δͷ͔ɻ
༷ʑͳՄೳੑʹ͍ͭͯݕ౼
Xcode 14.2対応の際にRosettaフリー化を目指しましたが、リリーススケジュールに間に合わず諦めました。その際に調査した内容を一旦まとめま
す。またそこから今後やるべきこともまとめたいです。
現時点でやってみたこと(途中・成功してなくても可)
きた
Rosetta前提のCarthageのXCFramework化は完了
https://github.com/
Rosetta前提 = arm64-simulatorなし
carthage-fixのxconfigはそのままで、--use-xcframeworksをつかう手法
下記でopencvのXCFramework化もできた
https://medium.com/strava-engineering/convert-a-universal-fat-framework-to-an-xcframework-39e33b7bd861
carthageコマンドに上記のXCFramework化をフックさせる方法が不明
Rosettaフリーに向けたstatic libraryのXCFramework化はこれでできるかも?(再ビルド不要なやり方もありそう)
これはまだ成功してない
https://anuragajwani.medium.com/how-to-build-universal-ios-static-libraries-using-xcframework-a3f70f998c38
ばんじゅんさん
Carthageを消して(つまりZOZOMATも消して)、Rosettaフリー化できるか試して、(おそらく)成功した
Rosettaフリー化 = ios-arm64 と ios-arm64-simulator の両方を達成する
ZOZOGLASSなどCocoaPodsのもの、 については、Rosettaフリー用の特別なビルドをする
ことはなく、xcframeworkに置き換えていくことでできる。ただしちょっと裏技っぽい
↑ bogoの手法による(mach-oの書き換え) https://bogo.wtf/arm64-to-sim.html
ZOZOGLASSのopencvもこれでやった
x86_64は実験手順短縮のために、入れていない。けど入れられるんじゃないかな?予想
手でつくれるだけで、手順化はしてない
Carthageのときのフックみたいなシナリオは、つくらないといけない。つくってない
最悪は、post installで、最終形へのdiffをpatchにしたやつをapplyでも、ギリギリ許容?
Carthage側で同様の手法は、別種の課題があることまでが分かっている
Lottieですでにつまずく
dynamic frameworkだから? swiftmoduleだから? みたいな。よくわかってない。
としさん
CarthageでZOZOMATのXCFramework化
OpenCVはXCFrameworkにする必要がある
この時はそれぞれビルドしてまとめる方法で実現した
Arm64-simulatorとArm64-iPhone持っている
https://www.cathand.app/entry/2020/11/23/214000
ここのbuild.shが改修の必要がありそうだなーと直感的にみています。
https://github.com/
現状の分岐だとArm64-iPhoneとArm64-simulatorの違いを見分けるのが難しい
→ (ばんじゅん) bogoの手法でごまかしてもいいんじゃない?
ZOZOMATのCocoaPods移行
計測チームよきさんによる解析
https://github.com
自分が挑戦した際のログ
https://github.com
当時はx86_64のsimulatorに対してやっていた(かも)
これに関しては致命的ではないのだが、CocoaPods移行に際して、ライブラリの参照の衝突があるので、grpcのアップデートは必
要になる
StaticFrameworksについては
GoogleMapsは一応公式でもXCFrameworkは提供されている(beta表記ではあるが)
ただし手動で入れる必要あり
CocoaPodsやCarthageでは現状無理
BuildSettingsのExcluded ArchitectureにArm64を追加する(XcodeはRosettaを外すことができる)
実際の動きとしては、x86_64向けのバイナリが作成されているので、Simulatorの慣性は効かない
細かいメモ