見出し画像

【Flutter】iOSアプリのビルド対応をする(CocoaPodsなど)


概要

主旨

先日、Xcode16を導入したので、いよいよFlutter環境構築においてiOSのビルドに対応してみたので備忘録を記す🛠️

意外かも知れないけど、CocoaPodsをインストールするためのRubyバージョンで苦労した。
rbenv(Rubyバージョンの管理ツール)を導入して使い慣れている人は、すんなり進むであろう💎

FlutterでiOSビルドの環境構築をしたい人は、是非とも参考にしてほしい📝

検証環境

●検証環境
macOS Sequoia 15.0
Flutter 3.22.3
Xcode 16.0
Dart 3.4.3
VSCode 1.92.1

※ 基本的なFlutter開発環境は整っている事を前提とします

Flutter環境構築のこれまで

本記事ではiOSアプリのビルドについて掲載している。
それ以前に、Flutter環境構築のこれまでしてきたこと(Androidなど)については、以下の記事を参考にして欲しい。

●Flutterのインストール

●FlutterのAndroidビルド対応

●Homebrewのインストール

Flutter Doctor

FlutterでiOSアプリ用のビルドを出来るようにしましょう。

$ flutter doctor

Flutter Doctor で環境診断します

1.DEVELOPER_DIRの指定 / ビルド開始
2.CocoaPodsのインストール

の2点が必要と表示されています。
これらの対応をしていきましょう。

DEVELOPER_DIRの指定 / ビルド開始

DEVELOPER_DIRの指定

✗ Xcode installation is incomplete; a full installation is necessary for iOS
    and macOS development.
    Download at: https://developer.apple.com/xcode/
    Or install Xcode via the App Store.
    Once installed, run:
    sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
    sudo xcodebuild -runFirstLaunch

これをGoogle翻訳で日本語に訳すと

✗ Xcode のインストールが不完全です。iOS および macOS 開発には完全なインストールが必要です。
ダウンロード先: https://developer.apple.com/xcode/
または、App Store から Xcode をインストールしてください。
インストールが完了したら、以下を実行します:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch

Google翻訳で日本語に訳したもの

のようになります。
とは言えXcodeは最新のをインストール済みなので、後は表示通り、コマンドを打っていきましょう。

●DEVELOPER_DIRの確認

$ xcode-select -p

「DEVELOPER_DIR」の設定を確認

これですね、最近のHomebrewはインストールすると「Command Line Tools for Xcode」まで勝手にインストールされて、その際にパスが変な風に設定されてしまいます。

よって、以下のように修正します

/Library/Developer/CommandLineTools
↓ 修正
/Applications/Xcode.app/Contents/Developer

●DEVELOPER_DIRの設定
修正コマンドは以下の通り

# パスを修正
xcode-select --switch /Applications/Xcode.app/Contents/Developer
# 確認
xcode-select -p

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

パスを修正します。
(後は念のために「xcode-select -p」で確認すると良いでしょう)

ビルド開始

$ sudo xcodebuild -runFirstLaunch

ビルド開始実行のコマンドを打ってみます

特に何も出力などされませんでした。
Xcodeを起動し、さらにシュミレーターは立ち上げている最中だったからかも知れません。

再度、Flutter Doctor で確認。
何はともあれ、残すはCocoaPodsのみとなりました。

CocoaPods

CocoaPods - 失敗編

CocoaPodsに着手しましょう。
Flutter Doctorでは以下のように表示されてます。

✗ CocoaPods not installed.
    CocoaPods is used to retrieve the iOS and macOS platform side's plugin
    code that responds to your plugin usage on the Dart side.
    Without CocoaPods, plugins will not work on iOS or macOS.
    For more info, see https://flutter.dev/platform-plugins
  To install see
  https://guides.cocoapods.org/using/getting-started.html#installation for
  instructions.

公式を見ながら対応します

●CocoaPodsのインストール

$ sudo gem install cocoapods

公式に沿ってコマンドを入力します

以下のようにエラーが出る

CocoaPodsをインストールするにはRubyバージョンは 2.7.0 以上必要
と言う事なので、Rubyを最新バージョンにします。

Ruby - バージョンを確認

●Rubyのバージョンアップ
・現在のRubyバージョンの確認

$ ruby -v

Rubyのバージョンを確認

M3 Mac にプリインストールされているRubyは 2.6.20p210 なので2.7.0以上にする必要がある。

Ruby - rbenvのインストール

・rbenvのインストール
rbenv」はRubyバージョンの管理ツールです。
まずは、これをインストールします。

$ brew -v

Homebrewはインストール済みとする
(インストールされていない場合は各自インストールしてください)

$ rbenv -v

一応、rbenvがインストール済みか確認。初期はこのようにインストールされていない

$ brew install rbenv

rbenvをインストール

Ruby - インストール可能一覧の表示

$ rbenv install -l

rbenvよりインストール可能な、Rubyバージョンの一覧を表示する

現時点(2024年9月26日時点)では3.3.5が最新

Ruby - バージョン指定してインストール

$ rbenv install 3.3.5

今回は 3.3.5 をインストールしたいと思います

Ruby - 環境変数の設定

$ rbenv versions

インストールされているRubyのバージョンを確認
「*」(アスタリスク)が付いているのが「現在」のバージョンです

●Rubyバージョンの切り替え
環境変数の追記からしたいと思います

$ export PATH="$PATH:/Users/macbook/.rbenv/bin"
$ eval "$(rbenv init -)"

※ macbookの部分はユーザー名によって違います
を打つだけでも一時的に変わりますが、ターミナルを再起動したら、元に戻ってしまうので

$ export PATH="$PATH:/Users/macbook/.rbenv/bin"
$ eval "$(rbenv init -)"

~/.zshrc に追記
※ macbookの部分はユーザー名によって違います

~/.zshrc に追記します

$ echo "export PATH=\"\$PATH:/Users/macbook/.rbenv/bin\"" >> ~/.zshrc
$ echo "eval \"\$(rbenv init - zsh)\"" >> ~/.zshrc

※ macbookの部分はユーザー名によって違います
.zshrcを直接編集しても良いが、echoで一気にぶち込む。

この場合、中の「"」「$」はバックスラッシュでエスケープシーケンスを用いる(直接開いて編集する場合は不要)

$ cat ~/.zshrc

一応確認

$ . ~/.zshrc

実行をして反映させる(もしくはターミナル再起動)

Ruby - Rubyバージョンの切り替え

●Rubyバージョン切り替え

【バージョン切り替えのコマンド】
rbenv global x.x.x
→ どのディレクトリ配下でも反映
rbenv local x.x.x
→ 特定のディレクトリ配下で反映する
( localはglobalを上書きします )

$ rbenv local 3.3.5

Ruby 3.3.5に切り替えする例

$ rbenv versions

切り替わっているかの確認。

$ ruby -v

Rubyのバージョンの確認

Ruby - rbenvのオプション

紛らわしいのですが
「$ rbenv versions」は、切り替え可能なRubyバージョン一覧
「$ rbenv -v」は、 rbenv自体のバージョン となります。

Ruby - コマンドのまとめ

ごちゃごちゃして分かりづらいので「最新Rubyバージョンにする」コマンドを端的にまとめて見た。

1.Rubyバージョンは 2.7.0 以上必要
CocoaPodsをインストールするにはRubyバージョンは 2.7.0 以上必要。
それ未満の場合、バージョンアップする

2.Homebrewはインストール済みとする

$ brew -v

(インストールされていない場合は各自インストールしてください)

3.rbenvのインストール / Rubyのインストール / バージョン切り替え

# 既にrbenvがインストールされているか確認
$ rbenv -v

# Homebrewでrbenvをインストール
$ brew install rbenv

# rbenvよりインストール可能な、Rubyバージョンの一覧を表示
$ rbenv install -l

# バージョン指定にてRubyをインストール(3.3.5の例)
$ rbenv install 3.3.5

#インストールされているRubyのバージョンを確認
#「*」(アスタリスク)が付いているのが「現在」のバージョンです
$ rbenv versions


# === Rubyバージョンの切り替え ===

# --- 環境変数の設定 ---
# .zshrcを直接編集しても良いが、echoで一気にぶち込む
# 環境変数の追記( macbookの部分はユーザー名によって違う)
$ echo "export PATH=\"\$PATH:/Users/macbook/.rbenv/bin\"" >> ~/.zshrc
$ echo "eval \"\$(rbenv init - zsh)\"" >> ~/.zshrc
# ↑この場合、中の「"」「$」はバックスラッシュでエスケープシーケンスを用いる(直接開いて編集する場合は不要)

# 実行をして反映させる(もしくはターミナル再起動)
$ . ~/.zshrc

# --- Rubyバージョンの切り替え(3.3.5の例) ---
$ rbenv local 3.3.5

# 切り替わっているかの確認
$ ruby -v

CocoaPods - 再度チャレンジ編

Rubyをバージョン3.3.5にしたので、再度チャレンジしたいと思います。

$ sudo gem install cocoapods

フェッチされていき

インストール成功。
新しくなったので「3.5.16 → 3.5.20」にしてねと出ますが、面倒なのでこのまま進めます。

$ pod --version

CocoaPodsのバージョン確認

$ flutter doctor

Flutter Doctor で環境診断します

「No issues found!」オールグリーン達成 🎊

苦労を重ねて、遂に勝ちとったオールグリーン。
控えめに言って最高です❗️

iOS動作確認

早速、iOSでの動作確認をしましょう。

先日、記事にしたPDFアプリのプロジェクトでビルドしたいと思います📄

・コマンドパレット(Command + Shift + P)を開き「flutter」と入力し、「Flutter: Select Device」を選択。

iOSシュミレーターを選択

実行します。

このようなダイアログが出たので「許可」押下

ビルド成功

PDFビューワーが表示されます

「印刷」ボタン押下🖨️

iOSビルドでの動作確認問題なし📱

著書

【辛島信芳の著書】
IT技術などに興味のある方は、是非ご覧になってください。


この記事が気に入ったらサポートをしてみませんか?