15

Androidに移植しています。私の既存のプロジェクトには、Android プロジェクトに移植する大量のリソース ファイルがあります。それらはすべて /res/raw/ にあり、fopen() などの関数を使用して、ネイティブ ライブラリ内のこれらのリソースにアクセスしたいと考えています。これを行うことはできますか、それとも JNI を経由する必要がありますか? 移植の容易さと、速度とメモリの理由から、そうしないことを本当に望んでいます。

4

2 に答える 2

15

アセットが APK に追加されるときにアセットが圧縮されないようにする場合は、openRawResourceFd() を使用してファイル記述子、オフセット、およびサイズを取得し、それらをネイティブ コードに渡し、そこで fopen と fseek を実行します。一方、アクセスしたいファイルをビルド システムに圧縮させる場合は、libzipなどを使用して APK からファイルを読み取る必要があります。

于 2010-04-18T21:05:28.610 に答える
5

ndkのobb.hをチェックしてください。

AndroidNDKのdocs/STABLE-APIS.htmlから:

<android/obb.h>
        Direct (read-only) access to assets embedded in your .apk. or
        the Opaque Binary Blob (OBB) files, a new feature of Android X.X
        that allows one to distribute large amount of application data
        outside of the .apk (useful for game assets, for example).
于 2012-08-28T02:50:59.510 に答える