Flutter を使用して Mac を使用せずに iOS アプリを開発および配布する
公開: 2019-08-23編集者からのメモ: Miquido では、Flutter 愛好家のコミュニティをサポートしており、Flutter ネットワーク全体での知識共有に常に貢献しています。 本日は、Flutter を使用して iOS アプリを開発するというトピックを打ち立てた Codemagic によるゲスト記事を紹介します。macOS デバイスは使用しません。 そのすべての部分をお楽しみください!
ほとんどの場合、iOS アプリは macOS マシンから開発および配布されます。 macOS なしで iOS プラットフォーム用のアプリを開発することは想像しがたいです。 しかし、Flutter と Codemagic の組み合わせにより、macOS を使用せずに iOS アプリを開発および配布できます。 前回の投稿では、Mac を使用せずに iOS アプリにコード署名するプロセスについて説明しました。 この投稿では、Linux で Flutter アプリを開発するプロセスと、Codemagic でカスタム/手動コード署名を使用して Comagic-Demo アプリの例でアプリ署名を完全に制御するプロセスについて詳しく説明します。
Linux での Flutter アプリの開発
Flutter は、同じソース コードから iOS アプリと Android アプリを開発できる、クロスプラットフォームのモバイル アプリ開発フレームワークです。 ただし、iOS アプリの開発に使用される Apple のネイティブ フレームワークは、Linux や Windows などの他のプラットフォームではコンパイルできません。 ネイティブ iOS コンポーネントには、iOS アプリを開発および配布するための macOS または Darwin が必要です。 ただし、Flutter などのテクノロジーにより、Linux または Windows でクロスプラットフォーム アプリを開発でき、Codemagic CI/CD ソリューションを使用してアプリを Google Play ストアまたは Apple App Store に配布できます。
Linux で Flutter アプリを取得する
Android アプリは、Linux プラットフォームからビルド、テスト、公開できます。 この Android 機能を利用して、Linux で Flutter アプリを開発できます。 私たちの Flutter アプリは Comagic-Demo と呼ばれています。 そのアプリを使用して、Linux で Android と iOS をビルドする方法を示します。 ただし、iOS ではなく Linux 上の Android に対してのみ開発できることに注意してください。 Linux で Android アプリを開発しながら、App Store にデプロイできる iOS アプリを取得します。 さまざまな方法を使用して、Comagic-Demo を Linux に取得できます。
Linux マシンを入手する
Linux がインストールされたコンピューターを既にお持ちの場合、プロセス全体は簡単です。 Linux マシンに Android SDK と Flutter をインストールするだけです。 Comagic-Demo アプリのクローンを作成したら、すぐに作業を開始できます。
Docker コンテナを作成する
Linux で Flutter アプリを取得するもう 1 つの方法は、Docker を使用することです。 Docker エコシステムに精通している場合は、Android SDK と Flutter がインストールされたDockerfileを作成できます。 Dockerhub には多くの Android Dockerfile があり、Flutter SDK でそれらのイメージを拡張するだけです。 Android と Flutter の環境を Docker コンテナに取り込むために、ここでサンプルの Android Docker イメージを拡張する簡単な Dockerfile を作成しましょう。 Dockerfile はアプリをコンテナーにコピーし、Flutter Android 環境を実行する必要があります。 Comagic-Demo のサンプル Dockerfile は次のようになります。
from runmymind/docker-android-sdk mkdir /codemagic-demo を実行します。 WORKDIR /codemagic-demo 追加 。 /codemagic-デモ apt-get update を実行 && \ apt-get install -y lcov git-core curl unzip && \ git クローン https://github.com/flutter/flutter.git && \ /flutter/bin/フラッタードクター && \ apt-get remove -y curl unzip && \ apt autoremove -y && \ rm -rf /var/lib/apt/lists/* 環境パス $ PATH:/flutter/bin/cache/dart-sdk/bin:/flutter/bin RUNフラッタードクター
このコード スニペットは説明のみを目的としていますが、必要に応じて Dockerfile をカスタマイズできます。 Dockerfile と Docker をインストールしたら、Docker を使用して Codemagic-app を取得できます。
$ docker build -t codemagic-demo . $ docker run --name codemagic-demo
これらのコマンドを実行すると、Flutter 環境で Docker コンテナが実行されます。
Futter アプリの Dockerizing は別のトピックであり、今後の記事で詳しく説明します。
App Store Connect からのコード署名アセットの生成
iOS アプリにコード署名するには、Apple 開発者アカウント、開発および配布証明書、アプリ ID、アプリ用に作成されたプロビジョニング プロファイルが必要です。 コード署名活動の詳細については、以前の投稿で取り上げました。 Codemagic で iOS アプリの開発ビルドまたはデバッグビルド用に手動コード署名を構成するには、次のものが必要です。
- .P12 形式の開発または配布証明書
- App Store Connect または Apple Developer portal からダウンロードしたプロビジョニング プロファイル
- iOS アプリのバンドル識別子
証明書とプロビジョニング プロファイルの両方を、Apple 開発者ポータルの [証明書]、[識別子]、および [プロファイル] セクションからダウンロードできます。 の
同様に、Apple 開発者ポータルからプロビジョニング プロファイルをダウンロードできます。
Codemagic で iOS アプリにコード署名するには、証明書とプロビジョニング プロファイルの両方が必要なので、後で使用できるようにこれらのファイルを保存します。
Xcode プロジェクト ファイルの更新
これで、Apple Developer portal からすべてのコード署名アセットを入手できました。 次に、正しいチームとプロビジョニング プロファイルで手動コード署名を使用できるように、Xcode プロジェクト ファイルを整理する必要があります。 Xcodeproj Gem を使用して Ruby スクリプトを使用するか、i os/YOUR_APP.xcodeproj/project.pbxprojファイルの次のフィールドを変更することでこれを行うことができます。

- 開発チーム = YOUR_DEVELOPMENT_TEAM_ID
- ProvisioningStyle = 手動
- PROVISIONING_PROFILE_SPECIFIER = NAME_OF_YOUR_PROVISIONING_PROFILE
Codemagic-Demo アプリでは、GitHub の Xcode プロジェクト ファイルを編集する必要があります。 内部ビルドのデバッグ構成と App Store ビルドのリリース構成に対して、これらの変更を確実に行う必要があります。 project.pbxproj に値を設定したら、問題なく Codemagic から iOS アプリをデプロイする準備が整いました。
Codemagic での手動コード署名の設定
Linux で開発する場合、Xcode と iOS ツールを Linux にインストールしたり実行したりできないため、Android アプリの状態しか確認できません。 Swift および iOS ツールを Linux に導入するための継続的な取り組みがいくつかありますが、それには多くの時間がかかります。 アプリを配布する準備ができたら、Codemagic を使用してアプリの CI/CD を簡単にセットアップできます。こちらの入門ガイドを参照してください。 OnCodemagic では、Apple 開発者ポータルからダウンロードした証明書とプロビジョニング プロファイルをアップロードすることで、発行セクションから iOS コード署名を有効にできます。 Codemagic アプリで、 [設定] → [公開] → [iOS コード署名] → [手動]に移動し、そこに証明書とプロビジョニング プロファイルをアップロードします。
ビルドを実行すると、プロビジョニングされたデバイスに展開できる IPA ファイルの形式で iOS アプリが取得されます。 Codemagic のビルド アーティファクトのリストは次のようになります。
アーティファクトセクションにあるように、codemagic_demo.ipa とクラッシュ レポート用のdSYMファイルを取得しました。 プロビジョニング プロファイルに追加された任意の iOS デバイスにこのアプリをインストールして、iOS アプリをテストできます。 バグが見つかった場合は、いつでも Linux 環境に戻ってバグを修正できます。
iOS アプリを App Store に配布する
現在、内部テスト用に iOS アプリのデバッグ バージョンをビルドしています。 同様の方法で、iOS アプリを App Store に配布できます。 アプリを App Store にデプロイする準備ができたら、リリースモードでアプリをビルドする必要があります。 これは、配布証明書と本番用プロビジョニング プロファイルを使用して実行できます。 同様の方法で、証明書とプロファイルを生成できます。 ただし、プロビジョニング プロファイルを作成するときに、 App Storeディストリビューションを選択する必要があります。
配布プロビジョニング プロファイルは、任意のデバイスで iOS アプリを実行するため、プロビジョニング プロファイルにデバイスを明示的に追加する必要はありません。 App Store プロビジョニング プロファイルは次のようになります。
iOS 配布証明書と本番用プロビジョニング プロファイルが手元にあると、[リリースモード] を選択できます。 以下に示すように、Codemagic でセクションをビルドします。
また、ビルド引数を debug ではなく release に設定しました。 発行セクションでは、配布証明書と製品プロビジョニング プロファイルをアップロードして、アプリの App Store バージョンを生成する必要があります。
Codemagic がビルド アーティファクトを生成したら、App Store のガイドラインに従って App Store Connect (旧称 iTunesConnect) にビルドし、レビューのためにアプリを送信できます。
結論
クロスプラットフォームのモバイル アプリケーション開発フレームワークと Codemagic のような魅力的な CI/CD ソリューションの組み合わせにより、iOS アプリ開発用の Mac を所有することはまったく必須ではありません。 iOS 向けの開発中にアプリをデバッグする際に問題が発生する可能性がありますが、Flutter と Codemagic の組み合わせを使用して iOS アプリを開発し、App Store に公開することは完全に可能です。
ビジネス用に将来性のあるアプリを構築したいですか?
一緒に仕事しましょう