Chromium for iOS をシュミレータにインストールしてみる

iOSシミュレータを使った、限りなく Chrome に近い環境のテストということで、
Chrome はソースが入手できないためインストールできませんが、 代わりに Chromium を試します。

はじめに

公式のガイドは、以下にあります。
Checking out and building Chromium for iOS

システム要件

公式のガイドには以下のようにありました。

  • A 64-bit Mac running 10.12.6 or later.
  • Xcode 12.0 or higher.
  • The current version of the JDK (required for the Closure compiler).

一方で、それに加えて、

  • git、pythonのコマンドが実行できること(Macであれば、おそらくOK?)
  • ストレージが十分にあること(少なくとも100GB程度は必要)
  • パスに半角スペースが含まれないこと

あたりが準備できてから始めましょう。
とても、とても時間がかかるので、寝ている間などに実行しておくのがおすすめ…

depot_tools を インストールする

リポジトリをクローンする

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

※ここで、クローンする先のパス(の一部)に半角スペースが含まれていると、うまくいかないようです…

パスを通す

$ export PATH="$PATH:/path/to/depot_tools"

※必要に応じて、~/.bashrc~/.zshrcにも。

ソースコードをダウンロードする

$ mkdir chromium && cd chromium
$ fetch --no-history ios
$ cd src

※時間短縮のため、--no-historyオプションを付けています。
※それでも、30分程度かかります。
※ソースコードについても、半角スペースが含まれないディレクトリにおく必要があるようです…

🚩これ以降は全て、srcディレクトリ内でコマンドを実行します。

インストールしたい Chromium バージョンに戻す

リリースバージョンについては、以下のサイトで確認をしました。
https://chromiumdash.appspot.com/releases?platform=iOS

※この手順はスキップ可能ですが、その場合は開発版の最新のソースがビルドされます。
※今回は、本日(2020/12/17)時点での最新の安定バージョン(87.0.4280.77)をビルドします。

戻したいバージョンのソースコードを取得する

リモートからタグの一覧を取得し、戻したいバージョンのタグへチェックアウトします。

$ git fetch --tags
$ git checkout refs/tags/87.0.4280.77

依存関係を同期する

$ gclient sync

※公式ガイドの通りです。

必要であれば、Xcodeのバージョンを変更する

$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

$ sudo xcode-select -s /Applications/Xcode11.7/Xcode.app/Contents/Developer

$ xcode-select -p
/Applications/Xcode11.7/Xcode.app/Contents/Developer

ビルドの設定を行う

$ python ios/build/tools/setup-gn.py

※ここでエラーが出た場合には、outディレクトリの中身を一旦全て削除し、その後もう一度実行すれば良いようです。

ビルドする

今回は、iOSシミュレータ向けのデバッグビルドを行いました。

$ ninja -C out/Debug-iphonesimulator gn_all

※公式ガイドには、autoninjaコマンドが紹介されていますが、ninjaコマンドでも問題なかったです。
※ビルドの種類について、setup-gn.pyを見るとDebug/Release/Profile/Official/Coverage の 5つが指定できるようでしたが、それぞれの違いについては、よく分かりませんでした。。
※ビルドが完了するまで、私の環境では5時間以上かかっていたようでした。
 (翌朝になって、終わっていることを確認したので、正確な時間は不明です)

アプリをインストールする

今回はシミュレータ向けのデバッグビルドを行ったので、
ビルドされたアプリは、out/Debug-iphonesimulatorディレクトリ内に作られています。

上記ディレクトリから、Chromium.appファイルを探し出し、
iOSシミュレータを起動させた状態で、シミュレータの画面上へドラッグ&ドロップすれば、
インストールは完了です。お疲れさまでした。