2012年2月19日日曜日

意外と面倒くさいリソースの扱い

Androidの場合、独自形式の読み込み専用データファイルは、コンテキスト上のRawResourceという領域(正確にはzip形式に圧縮したapkファイル内にあり、AndroidJVMがそれをアプリケーション・コンテキストの一部として扱う)で保持していて、それを取得してFileReadStream等で読み込むのですが、それが意外と面倒くさい。

上記の説明内容からして、明らかに面倒臭い訳ですが。
ただ、面倒なのはJNIからそれを読み込ませる方法。
結局以下のような形で、実装。
簡単に解説すると、
  • RawResourceの内容を読み込むextractResource関数というのを実装
  • バイト配列形式で読み込みsetResource(独自JNI関数)でCヒープに展開
  • Cヒープでは、リソース名(getResourceName)をキーとした線形リストで保持
という感じ。

ちょっと失敗したなぁ~と、思っているのは、独自形式のファイルを1つのファイルに纏めて、それだけJava経由でCヒープに展開すれば良かったか・・・という点。


0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...