Yuniframeパッケージングまつり2

CI用にとりあえずアプリケーションにアセットファイル(少数)を足す方法を考えたい。ちゃんとした奴はあとで考える。

iOS / macOS
add_executable
に足して RESOURCE
にする。
パスを得るのが超むずかしい。SDLはBundle自体の filesystemRepresentation
を取得して済ませている。
... これってディレクトリとして使えるって保証されてるんだっけ。。?
いちばん回りくどい方法はひとつひとつURLを得る方法。
アクセス
パスに変換したあとは普通のstdioが使える。

Android
CMakeには ANDROID_ASSETS_DIRECTORIES
プロパティがある。 ...なんで。。?
AndroidのGradleはデフォルトで src/main/assets
のようなディレクトリを使うので、そこに合わせて手動でコピーすることになるのではないか。
アクセス
AAsset
API群でアクセスする。
fd
を得ることもできるが、パスの解決等をAAsset側に任せる必要があるのでReadも含めて抽象化してしまった方が良いと思う。圧縮リソースのfdを得ることはできないが、AAPT2 https://developer.android.com/tools/aapt2 は生assetを圧縮することは無い(はず)。

Emscripten
さっき実装した。 emcc
コマンドに --preload-file
オプションに続けて 相対 パスを渡すとパッケージできる。 @
を続けてファイルのマッピングを書くことも。
アクセス
普通のstdioでアクセスできるが、メインスレッドではブロッキングアクセスができないのに注意。Preloadで作成したファイルシステムはRAMディスクになるので普通に使えるが、アプリの起動時に全量をロードするため起動に時間が掛かる。