アップルがiOSアプリ開発者向けて、2015年2月以降の新規アプリおよび更新には64bit対応および iOS 8 対応を義務付けることを宣言しました。
~~先日申請しようとした際に64bitに対応してないよと怒られたので、現段階でも申請するアプリには64bit対応が義務付けられているようです。~~いつかはくることがわかっていましたが、今回やっと64bit対応しました。
※(11/18更新)現在でも64bit対応が義務付けられていると書いてありますがおそらく間違いです。混乱させてしまい申し訳ありません。
私の場合、validateの時点でワーニングが表示され、64bit対応してから申請したため、64bit対応前に申請していないのですが、おそらく申請はできると思います。validateもあくまでワーニングであり、validateはpassしたと記憶しています。曖昧な記憶で申し訳ありません。
今回は、そのときにおこなった対応をまとめておきます。いろいろ調べていても情報が少なく、結構時間を取られたので同じ症状の方は参考にしてください。
正しい解決策かわからないので、間違っていることがあれば言っていただけると幸いです。
公式の移行ガイド
Cocoa Touch 64ビット移行ガイド
公式ガイドを読む
バイト長が変わったり、関数呼び出しが変わったようです。
また、実機でないと発生しないときもあるようなので、実機テストが必要とのことでした。
ここはガイドの通りに対応しました。
その他におこなったこと
Valid Architectureにarm64を追加
昔64bitが入っているとエラーが出たときに64bitを外すことで対応したので、今回64bitを追加しました。
Project > Build Settings > Architectures > Valid Architectures に arm64 を追加します。
Apple Mach-O Linker Errorを解消
とりあえずこれで実行してみるとApple Mach-O Linker Errorが出ました。エラー文は以下の通りです。
ライブラリを使っていると起こるエラーだと思いますが、公式ドキュメントにはライブラリに関する話はもちろん無いので、ここで結構詰まりました。
ld: warning: directory not found for option '-L/Users/.../Pods/build/Debug-iphoneos'
ld: library not found for -lPods-AFNetworking
clang: error: linker command failed with exit code 1 (use -v to see invocation)
これを解消するために以下の操作をおこないました。
Build Active Architecture OnlyのDebugをNoにする
Pods > Build Settings > Architectures > Build Active Architecture Only のDebugをNoにすると動くようになりました。