Open4

.NET Native AOTを調べる

Koki IbukuroKoki Ibukuro

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ビルドを目標に調べる。

実験中のリポジトリはこちら↓
https://github.com/asus4/dotnet-nativeaot-test

Koki IbukuroKoki Ibukuro

Test 01: macOSコマンドライン

https://github.com/dotnet/samples/tree/main/core/nativeaot/HelloWorld

この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