Open4
.NET Native AOTを調べる
5年ほど前、Unityを使わずにC#でiOS/Android/Mac対応のライブラリを作ったことがあったが、数少ないドキュメントを探しながらMonoのソースコードからビルドしてなかなか大変だった。当時Xamarinという選択肢はあったもの、統合アプリではなく、ライブラリとしてC#をマルチプラットフォーム対応するとなると、Monoから手を付ける必要があり、大変だった。
時は流れMonoは.NET内部に統合, Xamarinは.NET MAUIになった。
更に.NETでもNativeAOTなるものが登場して、monoを使わずWindows以外のプラットフォームでもネイティブ動作するようになってきたらしい。NativeAOTをmacOSで動作するのは確認できたので、iOS/Androidむけの.NET NativeAOTビルドを目標に調べる。
実験中のリポジトリはこちら↓
リンク集
NativeAOTとは
iOS対応はまだExperimental Supportっぽい。
NativeAOT最小サンプル
ちょうど最新のPRでiOS frameworkの作り方のドキュメントが更新されてる。
Test 01: macOSコマンドライン
このHelloWorldをmacOSでビルドしてみた。なんの問題もなく、macOSで動くバイナリができた。
❯ du -h ./bin/Release/net8.0/osx-arm64/publish/HelloWorld
1.6M ./bin/Release/net8.0/osx-arm64/publish/HelloWorld
❯ du -h ./bin/Release/net9.0/osx-arm64/publish/HelloWorld
1.3M ./bin/Release/net9.0/osx-arm64/publish/HelloWorld
しかも思ったよりもバイナリ小さい。つい先日リリースされた.NET9.0のほうだと1.3MB