0

背景:

アプリのコードベース (C/C++) の移植性を高めるために、Android のネイティブ AAssetManager の使用を最小限に抑え、APK からアセットを読み込むために libzip に切り替えたいと考えています。私はlibzipを見ました。それをプロジェクトにマージし、見よ、libzipを使用してAPKから直接ファイルを読み取ることができます。

今、私は自分の資産を難読化したい (または少なくともそれらへのアクセスを自明ではないようにしたい) ので、それらを暗号化された zip アーカイブにパッケージ化し、そのアーカイブを APK に含めたいと考えました (基本的には、zip 内の zip )。

私の質問:

ネイティブ コードを使用して APK 内からアーカイブ内のファイルに直接アクセスする最も簡単で効果的な方法は何ですか?

ファイル名を指定するだけで、圧縮されていないデータを含むバッファを取得できる libzip と同様のアプローチを望んでいました。

libzip を使用して APK 内から直接圧縮アーカイブを開こうとしましたが、空になります... libzip は、メモリ内のバッファーからではなく、ディレクトリを使用してのみ zip ファイルを開くようです (これは、もらいました)。

zlib は当然の選択だと思いますが、どうすればよいかわかりません。

また、APK からアーカイブをコピーすることも考えましたが、無駄なスペースをできるだけ少なくしたいと考えています (大量のアセット == 大きなアーカイブ)。アセットを個別のダウンロードとして配信することも避けたいと思います。

役立つ提案や指針を歓迎します。

4

1 に答える 1

2

あなたの質問から、あなたは既に APK のアセット ストリームに到達していないように思われるので、すぐに次のように説明します。あなたが言うように、zlib は当然の選択です。インメモリ ストリームを処理するための例がオンライン上に山ほどあります。たとえば、メモリ内解凍: GZIP。zlib を使用すると、NDK を介して既に利用できるという利点もあります (たとえば、独自にビルドしてリンクする必要はありません)。

于 2012-12-12T17:13:20.820 に答える