急に会社の人から
「iOS11になったら〇〇アプリが動かなくなったんだがなんとかしろ」
と言われたので、最後にビルドしたのが何年前(3年前ぐらいかな)なのかわからないアプリをビルドできるようにしました。
ビルドできなくなった理由
基本的に、起動できなくなった理由は64bit対応だと思います。
iOS11から64bit対応していないアプリは起動できなくなったっぽい。
(アプリを起動すると、最新版をストアから落としてね!みたいな固定文言が出て落ちたような気がします)
※未だに64bit対応していないアプリが64bit対応だけで申請できるようになるほどAppleは甘くありません。
参考
http://sbapp.net/appnews/app/upinfo/ios11/32bit-67893
早速64bit対応
ちゃんとやりたい人は以下参照
https://developer.apple.com/jp/documentation/CocoaTouch64BitGuide.pdf
Project → [Build Settings] → [Architectures] → [Valid Architecture] にarm64を追加。
左(上)から armv7 armv7s arm64 になっていたらOK。
適当に調べると上で終わりのところが多かったのですが、それだけでは動かなかったので、動かない人は以下参照。
上記で動かない方
その1 Architecture
Project → [Build Settings] → [Architectures] → [Architecture] を Standard architecture...に変更。
※元々は $(ARCHS_STANDARD_32_BIT) - $
みたいな感じになってました。たぶんこのままだと32bitビルドになりますのでiOS11でビルドできません。
その2 Bitcode
Project → [Build Settings] → [Build options] → [Enable Bitcode] を NO に変更。
※YESでもちゃんと設定したり、使ってなかったりするとYESでも大丈夫かもしれません。めんどくさいのでNOで。
その3 許可系
ATS
もう説明不要でしょうが、iOS9から追加されたATSを無効にしましょう。
※できればちゃんと対応してほしいが、広告とか入れているアプリはどうせ無効にするので...
参考
https://qiita.com/tonkotsuboy_com/items/9c056b4b2b1ffb85615e
カメラとか写真(PhotoLibrary)とか音楽とかマイクとか...を使っている場合
iOS10から許可をとらないといけないです。
※ビルドはできるが実行時に落ちるので注意
カメラだったらKeyは、Privacy - Camera Usage Description
です。
Valueに書いた内容がアラートに表示されます。
対象となる操作 対応するキー 1 メディアライブラリへのアクセス NSAppleMusicUsageDescription 2 Bluetooth インターフェースへのアクセス NSBluetoothPeripheralUsageDescription 3 カレンダーへのアクセス NSCalendarsUsageDescription 4 カメラへのアクセス NSCameraUsageDescription 5 連絡先へのアクセス NSContactsUsageDescription 6 ヘルスデータへのアクセス NSHealthShareUsageDescription 7 ヘルスデータの変更 NSHealthUpdateUsageDescription 8 HomeKit の設定データへのアクセス NSHomeKitUsageDescription 9 位置情報へのアクセス (常に許可) NSLocationAlwaysUsageDescription 10 位置情報へのアクセス (使用中のみ許可) NSLocationWhenInUseUsageDescription 11 マイクへのアクセス NSMicrophoneUsageDescription 12 加速度計へのアクセス NSMotionUsageDescription 13 フォトライブラリへのアクセス NSPhotoLibraryUsageDescription 14 リマインダーへのアクセス NSRemindersUsageDescription 15 Siri へユーザーデータ送信 NSSiriUsageDescription 16 Speech Recognition Server へのユーザーデータ送信 NSSpeechRecognitionUsageDescription 引用:[iOS 10] 各種ユーザーデータへアクセスする目的を記述することが必須になるようです
https://dev.classmethod.jp/smartphone/iphone/ios10-privacy-data-purpose-description/
最後に
最後に1024 * 1024 のアプリアイコンを用意して入れましょう。(余裕があればiPhoneX用のスプラッシュ画像も)
入れなくても申請できるかもなんですが、アーカイブ上げた時にエラーが出るので入れておいたほうが無難です。