📱

React Native (expo)でAppleのDeveloperに課金しないでiOSのアプリを実機にインストールする

2024/08/21に公開

備忘録的なやつ

やりたいこと

イベントで使う目的で、expoでiOSアプリを開発していた

1台にインストールして使うだけだから、アプリストアに公開するつもりもないし、Developer Programに課金する必要もない

が、それをexpoでやろうとしたときに若干詰まったので残しておく

試したこと

eas-cli

expoではEASというクラウドでアプリをビルドする仕組みが用意されている

eas build -p ios

それのcliを使ってビルドしようとしたが、Apple IDでのログインを求められてログインすると

Authentication with Apple Developer Portal failed!
You have no team associated with your Apple account, cannot proceed.
(Do you have a paid Apple Developer account?)
    Error: build command failed.

というエラーが出て、ビルドさせてくれなかった

EASでは開発用の署名だと有効期限が7日しかないのでサポートしない方針らしい

https://github.com/expo/eas-cli/issues/997#issuecomment-1059976154

XCodeでビルド

expoはexpo prebuildコマンドでネイティブのコードを吐き出してくれるらしい

https://docs.expo.dev/workflow/prebuild/

これを実行して、./iosディレクトリをXCodeで開けば、XCode上でビルドできると思った

まず、使用する端末でデベロッパモードを有効化する必要がある

iOS17では、設定->プライバシーとセキュリティ->デベロッパモードから有効化できた

再起動されたら、Macに繋いで、Xcodeの上のメニューからWindow->Devices and Simulatorsを開いて、ペアリングする

あとはプロジェクトに戻って、繋いだデバイスを選んでビルドすれば、インストールはできる

署名がアレなので、インストールしたデバイスで設定->一般->VPNとデバイス管理からインストールしたアプリを信頼する的なやつをやらないといけない

そこまでやると起動はできた

が、No bundle URL presentというエラーが出て動いてくれなかった

解決した方法

https://github.com/expo/expo/discussions/27489#discussioncomment-8707035

これを見つけた

これの通り、

npx expo export:embed --entry-file='node_modules/expo/AppEntry.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios'

を実行してからXCodeでインストールするといけた

Discussion