M2(M1) Mac Book AirでElixir DesktopのサンプルをビルドしてiPhone13Proで動かしたメモ
はじめに
今回はElixir DesktopのサンプルアプリをiOS向けにビルドして動かしてみたので各種設定のメモになります。
同様の環境を使っている方の参考になれば幸いです。
環境
結論ですが最終的には下記のような環境で動作しています。
実行環境
-
Mac Book Air
- OS:13.2.1
- CPU:M2
- MEM:24GB
-
iphone13Pro
- OS:16.3.1
各種バージョン
・Xcode(app store)
Version 14.2
Settings > Platforms
iOS:16.2
MacOS:13.1
watchOS:9.1 ※追加インストール(これがないとSwift の依存パッケージ (ZIPFoundation)で失敗する)
tvOS:16.1 ※追加インストール(これがないとSwift の依存パッケージ (ZIPFoundation)で失敗する)
Team: personal Team
Bundle Identifier: com.example.kiyomaru ※デフォルトだとビルドが動かない
・carthage(brew管理)
/opt/homebrew/Cellar/carthage/0.39.0 (8 files, 7.2MB) *
・wxwidgets
wxwidgets: stable 3.2.2.1 (bottled), HEAD
・Elixir(asdf管理)
Erlang/OTP 25 [erts-13.0.4] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
Elixir 1.13.4 (compiled with Erlang/OTP 25)
・Erlang カスタムOTP(asdf管理)
※RyoWakabayashiさんがForkしたOTP
ref:diode/beta
・nodejs
v19.3.0
構築手順
下記の記事を参考に構築しました。
Xcodeのインストール
当時の最新をインストールしました。(14.2)
Xcode関連の各種設定
Xcode のコマンドラインツールを明示的に指定する
sudo xcode-select -s /Applications/Xcode.app
Platformsの追加インストール
のちのち登場するSwiftの依存パッケージ(ZIPFoundation)をインストール際にこれらが不足していて失敗するためにインストールしておきます。
Settings > Platformsに移動
下記をインストール
watchOS:9.1
tvOS:16.1
Elixir環境および周辺環境のセットアップ
asdfによる管理をしていますので下記コマンドでインストールをします。
asdfのインストールはこちら
asdfでバージョン管理できるように各種プラグインをインストールします。
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
カスタムOTPのインストール
参考記事の執筆者のRyoWakabayashiさんがフォークしてasdfにてインストールできるようにしたカスタムOTPをインストールするように環境変数を設定します。
export OTP_GITHUB_URL="https://github.com/RyoWakabayashi/otp"
Elixir,nodejsのインストール
.tools-versionsを作ってインストールします
# .tool-versions
erlang ref:beta
elixir 1.13.4-otp-25
nodejs 19.3.0
インストール
asdf install
ElixirDesktopサンプルの実行
下記のリポジトリからcloneしてきます。
サンプルをclone
git clone https://github.com/elixir-desktop/ios-example-app.git
cd ios-example-app
asdfのバージョン指定
asdf local elixir 1.13.4-otp-25
asdf local erlang ref:beta
asdf local nodejs 19.3.0
Swiftの依存パッケージ(ZIPFoundation)をインストール
brew install carthage # asdfでインストールしたけどエラー吐いたのでとりあえずはこれはbrew管理にした
carthage update --use-xcframeworks
xcodeを起動、各種設定
open todoapp.xcodeproj #ios-example-appディレクトリ内で実行
Targets>Todoapp>General>Signningを開く
ここで下記のTeamとBundle Identifierを設定する。
Team: personal Team
Bundle Identifier: com.example.kiyomaru ※デフォルトだとビルドが動かない
とりあえずBundle Identifierはデフォルトだと動かないので下記の記事を参考にexample.comを使った。
公開予定もなくてサンプルなのでこれでいいかなと思います。
xcodeをはじめて触るのでまだよくわかってない。
実行環境iphone13pro側の設定
下記の記事を参考に開発者モードを有効にして信頼できるアプリ登録した。
ビルドして実行
参考記事では環境変数だったり細かい設定を入れていますが、自分の環境では特に何もせずbuildしてその後runでアプリケーションを実行できました。
終わりに
ElixirDesktopが動きました!
構築自体は少し詰まったものの参考記事のおかげでだいぶスムーズに作ることができました。
まだ内部の動作原理はわかっていないのでこのサンプルをベースにElixirDesktopの実装を知っていこうと思います。
あと、初めてiPhoneにxcodeでビルドしたアプリに転送して動かしたのでとても楽しい気持ちです。
今回の記事が多くの方の参考になれば幸いです。
参考リンク
### 手順だったり調べる中で参考になったいろんなリンク
elixirdesktopやそのxcodeや動作環境などの周辺知識
Discussion