Sweet Brissie life

ブリスベンでのサトウキビ博士研究生活の甘くない備忘録

React Native + Expo - WindowsでアプリビルドからAppストア申請まで!【2020年3月時点】

f:id:tkd708:20200321221611p:plain


 ついについに、もう長いこと取り掛かってきたReact Native + Expoでのアプリ作成の第一号をAppストアに申請しました。

 

アプリ作成自体にも苦戦し続けてきたわけですが、とりあえずできた!というところからストアに置くまでの手順もなかなか手強かったです...特にWindowsゆえに。

ネット上の情報をかき集めて見た限り方法も繰り返し変更されてきているので、いつまで役に立つかは分かりませんが、React Native + Expoで作成したアプリのWindowsでのビルドからストア申請までの一連の流れを記しておきます。

 

(ちなみにアカウント認証などの関係でiPhone所持は前提になってます、まぁApp Storeに申請、てことだからきっと大丈夫だよね?)

 

 

 

 Apple Developer Program加入

こればかりは他にどうしようもありません。年間99USD必要ですが、お金で解決です。

https://developer.apple.com/programs/

 

 

 

 Build

アプリのDirectoryでやることとして、まずはapp.jsonをいくつか加筆修正します。これについては、全体的な流れも含め、下記サイトにはお世話になりました。

【React Native】【Expo】iOS/Android ストア申請用のビルドを作る - React Native Tech Blog

非iOSエンジニアがExpoのReact Native(CRNA)で作ったアプリを初めてAppleに申請するまで - Qiita

 

公式によると色々とオプションの設定項目あるみたいですが、今回は深入りせず。

docs.expo.io

 

 

Buildの時点でIconとsplash screenの画像が必要になります。

ちなみに下記サイトなどで簡単に画像サイズ調整できます。

PEKO STEP - 無料で楽しめるゲームやアプリの配信サイト

 

 

とりあえずビルドしてみまっしょい。

expo build:ios

 

すると。。。

ios build error

Authentication with Apple Developer Portal failed! bash exited with non-zero code: 127

 

公式によると

f:id:tkd708:20200316225345p:plain

docs.expo.io

 

Windows Subsystem for Linux

早速Windows不遇の始まりです。下記案内を参考にWindows Subsystem for Linuxを導入しましょう。

docs.microsoft.com

 

 Expoの方の説明でUbuntu推奨とあったので、よく理解しないままに選んで進めました。

 

Ubuntu

Get Ubuntu 18.04 LTS - Microsoft Store en-AU

【3分でわかるシリーズ】Ubuntuとは?

 

Initialize the distro (e.g. Ubuntu)

Initialize a new WSL Linux distro | Microsoft Docs

 

さて、こうしてWSLを導入、実行したことを確認して再度expo build:ios

 

 無事にBuildが始まりました。途中でCertificateのことやらなんやら聞かれますが、自分で何か設定したいわけでなければ基本的にLet Expo handle the processで大丈夫です。

Expoがよしなにやってくれるわけですね、ありがたや。

f:id:tkd708:20200316231404p:plain

 

このままBuild完了かと思いきや、下記のようなエラーが。。。 

f:id:tkd708:20200316230344p:plain

 ECONNREFUSE 127.0.0.1:19001、調べてみるとExpoにてあるあるエラーとして取り上げられてました。

f:id:tkd708:20200316231512p:plain

Common Development Errors - Expo Documentation

 上記の方法あるいは単にプロジェクトのディレクトリ内にある.expoフォルダを削除しちゃっても平気です。

 

再びのbuild!

f:id:tkd708:20200316232038p:plain

 

f:id:tkd708:20200316232407p:plain

 ようやく無事にBuildされました。リンク先にいけば生成されたipaファイルをダウンロードできます。

 

 

App Store ConnectでのApp登録

My App → 新規App と進む。

 

App名、言語、Bundle Identifier (Build したときに生成されたものが選択できるはず)、SKU (開発者ごとにアプリを識別するための値なのでご自由に)、年齢制限、などなど

 

で、App登録をすると更に色々と記載項目がずらりと並びます。このあたりの詳細は下記リンク参照で! 

[2018年版] よく分かる!iOSアプリのリリース手順のまとめ | Developers.IO

AppStoreの審査でリジェクトされない登録方法 | iTunes Connect - ITブログ時々なんでもブログ

 

些細なことですが、スクリーンショットは6.5、5.5、12.9インチと3バージョン必要になります。

自分はこの用意を面倒くさがり自分のiPhone7でのテストをスクショしたものをリサイズして使いまわしたために縦横比がひどいです...ちゃんとしたアプリ公開の時には、それぞれのエミュレータでのスクショなどをアップしましょう。

(というかそれぞれのエミュレータでUIチェックしてないという。。。次回からちゃんとするんだ。)

 

しかも後から気づいたけど、ここって普通スクショ+簡単な説明だよね、、、これも次回からは(汗)

 

 

 

ipaファイルのアップロード

作成したAppをBuildし、Appの情報もApp Store Connectで登録した、後は手元のipaファイルをApp Store Connectにアップロードだ!

 

expo upload: ios で一発さ!

docs.expo.io

Unsupported platform! This feature works on macOS only.

...なんて思ったら大間違い、そうWindowsユーザーならね!(怒泣)

 

マニュアルでアップロードするにはTransporterなるソフトウェアを使わねばならないみたい。

が、こちらもMacのみ対応となっております。。。

Transporter

Transporter

  • Apple
  • Developer Tools
  • Free

apps.apple.com

 

自分が調べた限りでは、Windows機体からアップロードするには下記のような方法があるみたいです。

 

1.AppUploaderなる中国製のソフトウェア

www.appuploader.net

うーん、どうなんでしょう。利用例もそんなにネット上で見つけられず、、、最初のお試し期間はタダだけど以降は有料、そんなシステムみたいですね。

【Unity】Windows で iOS アプリをリリース(詳細)Part 3 : Lab 7 in Singapore

 

 

2.VirtualBoxなどで仮想MacWindows上で動かす。

技術的には全然問題ないみたいですが、なんでもライセンス違反だとの記載がちらほら。

Xcode をインストールする、 iOSアプリ作成準備

Xcode - windowsPCによるiOS開発|teratail

 

 

3.MacInCloud

ExpoのForumでもやはりWindowsでアップロードできないの?的な質問がちょこちょこ、、、そんな中で挙がっていたのがMacInCloudというクラウド上でMacPCを借りるシステム。

(これは2番とは違って違反にならないのか?疑問ですが突っ込まずにいます。)

iOS test app step by step - Help: Expo SDK - Forums

Build Expo ios without mac and ios phone - Help: Expo-CLI/Build Service - Forums

www.macincloud.com

日本語のレビューもちらほら。悪くなさそうですね。

 Windowsユーザーでも気軽にMacOSが手に入る!?MacinCloudを契約してみた | Maromaro Blog

https://waction.org/macincloud%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9-widondows-pc%E3%81%97%E3%81%8B%E3%81%AA%E3%81%8F%E3%81%A6%E3%82%82ios%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8B%E6%96%B9/

 

MacInCloudのサイトの説明でもちゃんと最新版のXcodeを搭載しているよ、とのこと。

最新アップロードツールのTransporterも記載ありました。

Xcode Updated to 11.3.1 on MacinCloud Catalina Servers : MacinCloud Support Portal

 

 

MacInCloudによるTransporter実行 

 というわけで、このMacInCloudを試してみることにしました。

f:id:tkd708:20200319212048p:plain

f:id:tkd708:20200319212120p:plain

レンタルする機体の設定項目がいくつか並ぶ。スペック的には最低限のもので十分!

 

f:id:tkd708:20200319212313p:plain

 で、MacInCloudにログイン(PWは自分で設定)、更にメールに届いたログイン情報で仮想Macにログイン!(そんな迷わないだろうけど、上記リンクのレビューにも解説あり)すると....

f:id:tkd708:20200319214923p:plain

 ありました、例のTransporter。

 

f:id:tkd708:20200319213852p:plain

プラスシンボルからipaファイルを選択(自分はドロップボックス経由でこの仮想Macからipaファイルにアクセスしました。)し、Deliver!

 

無事にipaがアップロードされた模様です。MacInCloudの役目はこれだけです笑

 

実機の方からApp Store ConnectのTest Flightのセクションを見てみると....

f:id:tkd708:20200319215256p:plain

 

このアップロードからテストフライトまでの流れもExpoのドキュメントに記載されてますね。

Uploading Apps to the Apple App Store and Google Play - Expo Documentation

 

しばらく経つと(自分の場合は20分くらいでした)、メールにて処理完了とのお知らせが届きます。

 

f:id:tkd708:20200319221302p:plain

 

と、ここで輸出コンプライアンス情報に関する回答項目が....ちょろっと調べた範囲で対応しましたが、何も問題ないことを祈るばかりです。

https://www.ateliee.com/archives/3363

iOSアプリ提出の輸出コンプライアンスで、通信にHTTPSを使っているだけの場合の解釈 - Qiita

 

 

Test Flight

さて、いよいよアプリもアップロードされ、Test Flightでの最終チェックです!

ビルドのテスターの追加ですが、サイドメニューの”App Store Connectユーザを追加”からだと自分自身のAppleアカウントをサクッとテスターに追加できます。

 

そして自分のiPhoneにTestFlightのアプリをインストールした状態で、メールに届くテスター招待を開くと...

アップロードした自分のアプリが!!!

もちろんExpoで開発中に実機で動かしてきたわけですが、今度はちゃんとStandaloneでインストールした上で動作を確認できます。

感動ですね。これで異常がないか改めてチェックしたら、いよいよ審査に提出です。

 

 

 

App審査に提出

審査に提出したら、翌朝には返事が来てました。結果はReject

まぁ何かしら不備があるだろうとは思っていたので

詳細はApple Store ConnectのResolution Centerを見てね、とのこと。

 

内容としてはSupport URLが正しくないですよ、と...そりゃそうですね、サポートページなんぞ用意していなかったのでとりあえずGithubのレポジトリのリンクを載せるという雑っぷりでしたから。

ちょっと古いですが、調べてトップに出てきた下記情報を信じてメールアドレスを記載したgithubのプロフィールページで代用しました。

アプリで飯を食う: iOSアプリのサポートURLは何でもいい

あるいは簡単にアプリ用サイトを作るかですね。。。

アプリ申請のサポートURLはLPで!簡単LP作成Webサービス『ペライチ』のご紹介 | モナカプレス

 

Resolution Centerにフィードバックに対する返事を送信するフォームがあるので、実際に修正を加えたらこちらで直しましたよ、と申告した方が親切でしょう。

 

再提出してみると、また翌朝には返事が。

 

 

審査通りました!Yay!

 

24時間以内にApp Storeに並ぶはず、とのこと。

 

App Storeで検索してみると....

 

あったーーーーーーーーー!!

 

ついに自作アプリ公開です!!

長い道のりでした...我ながらお疲れさまでした!

 

 

OTA Update

実際にアプリを公開してからバグ修正や新機能実装などなど、アプリを更新することがあるでしょう。

自分も公開してから早速、ここは直しておきたい!という点が...

 

更新がjsのみの変更であれば、expo publishだけでOK!

このOTAアップデートがExpoの大きな魅力の一つでしょう。

Configuring OTA Updates - Expo Documentation

 

ただ、下記リンクにもあるようにOTAアップデートの最新版に追いつくためにはアップデートの回数分アプリ再起動が必要になるなど、注意点もいくつか。 

ExpoのOTAアップデートとrelease-channelについてまとめてみた。 - Qiita

 

アイコンやスプラッシュスクリーンや、js以上の変更となる場合はBuildからやり直しです。その際にはapp.json

version
ios.buildNumber
android.versionCode
を変更しておく(基本的にただ数値増やす)ことを忘れずに!

 

 

 

おわりに

以上が、React Native + Expoで作成したアプリをWindowsでビルドからAppストア申請まで行う方法のまとめでした。

通常のウェブサイトのデプロイと比べても結構な手間だと思います。特にWindowsユーザーとしては。。。

まぁアップルのストアにアプリを置くんだから仕方ないのかもですが、Transporterのあたりとか、排他的な印象ありますよね。

それでも、この流れで無事にアプリを公開することができました。

 

開発そのものも楽しんでいますが、やっぱり使われてこそのアプリでありユーザーの声を元に更に発展していくものでしょうから、暫定版でももっと早く公開したかったなという思いもあります。

この辺りのアプリ開発の振り返りはまた別記事で。

 

WindowsでのBuildから申請までをまとめた記事は調べた限りでは無かったので、この記事が少しでもWindowsユーザーのiosアプリ開発の助けになればと願います。

 

他にも注意点や改善点などあれば遠慮なくご連絡ください!