expoでつくったenterpriseアプリがios15で起動できない問題を対処した
現象
ios15で新規インストール、インストール済み関係なくアプリが起動できない状態になっていた。
調査
Expoの下記のスレッドで今回の現象について話し合われていた。
要約すると
- Xcode13にアップデートしなきゃいけない
- 
eas buildを使ってlocalでbuildすれば動く
- 
expo build:iosが機能していないよ
という感じっぽいですね
そして、AppleのDeveloper Forumsにも問題が報告されていました
原因としては、enterprise appのcode signの仕様が変わったことっぽいです。
再度署名することで回避できそうなので、buildをし直していきます。
easってなんじゃらほい
- ビルドするよ!
- クラウドでビルドも署名もしちゃうよ
- TestFlightとか使わないでテスターに配布しちゃう!!
 
- storeに公開するよ!
- easならコマンド一発でstoreに公開できちゃう!
 
- アップデートもおまかせだよ!
- 安全にアップデートするよ
- 近日公開だからちょいまち!
 
っていってます。(大雑把)
今までできてたことは何が違うんじゃろ?ってお気持ちです。
ちなみにこの記事公開時は有料です。(expo課金してるので優先的に使えるみたい)
ちゃんと知りたい人は、下記公式サイトをチェック!
対応
調査の結果、expo buildは機能していないようなのでeas buildを試していきます。
(ちなみに、SDK42でexpo buildでも対応される予感)
easは初めてなので下記を参考に進めていきます。
 eas.jsonをつくる
Configuring EAS Submit with eas.jsonを参考にeas.jsonを準備
{
  "build": {
    "release": {},
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    }
  }
}
さらに、xcode13でビルドしてもらえるようにimageを指定
コメントに「xcode13のimageつくったから、これつかいなはれ」って書いてあるので
感謝の気持ちを込めながらimageにコピペしていきます。 (ありがとう wkozyraさん)
xcode13 image is available, to use it set image field in eas.json to macos-big-sur-11.4-xcode-13.0
https://forums.expo.dev/t/ios-15-cannot-launch-enterprise-signed-application/53701/22
easの使い方ドキュメントも一緒に乗っけてくれるとこもポイント高いですね。
baseに追加することで、extendsでばら撒くことができるようです!(最高)
{
  "build": {
    "base": {
      "distribution": "internal",
      "ios": {
        "image": "macos-big-sur-11.4-xcode-13.0"
      }
    },
    "release": {
      ...
    },
    "development": {
      "extends": "base",
      "developmentClient": true
    }
  }
}
- node
- yarn
- expoCli
あたりは設定した方が幸せになる気もするけど、一旦そのまま動かしてみる
(関係ないので折り畳む)意気揚々とどうやってビルドするんじゃい!って探しまくってたら
SDK 41+ apps are supported
EAS Build only supports SDK 41+ managed projects. You must upgrade your project to migrate to EAS Build.
おぅ...。
このプロジェクトSDK39じゃ...
ということでバージョンを上げます....
エラー対応編
TypeError: Cannot read property 'enabled' of undefined
eas logout / esa login をしたら治るっぽい
TypeError: Cannot destructure property 'sessionSecret' of 'body.data' as it is undefined.
esa loginしたら上記のエラーが出た
nodeのバージョンが問題なようです。
$ node -v
v14.0.0
nodenvを使用しているのでインストールされてる14系で最新のものにした
v14.17.5
Logged in 優勝
一個目のエラーもこれで治ったのかもしれない。
参考
- https://forums.expo.dev/t/eas-build-error-typeerror-cannot-read-property-enabled-of-undefined/51868/5
- https://forums.expo.dev/t/eas-login-as-member-of-organization/52012/10
 eas build始動
いよいよビルド。
$ eas build --platform ios
Appleのログインやらいろいろやって
とりあえず、Build successfulでた!
最後に
ご飯食べて戻ってきたらexpo build:iosでできるようにしたよってスレッドに投稿されてました。
めでたしめでたし


Discussion