2

私のアンドロイドアプリケーションは、ソケットを介して通信できるように、アンドロイドアプリケーションの前に別のNATIVEアプリケーション実行可能ファイルを実行する必要があります。Android アプリケーションには、クライアント側の通信を処理するための JNI 層があります。

ここで、ネイティブ実行可能ファイルを apk ファイルと一緒にバンドルする必要があります。これにより、デバイスにインストールされたときに電話のメモリまたはメモリ カードに解凍されます。

どうすればいいですか?res/asset および res/raw フォルダーにネイティブ実行可能ファイルを保持しようとしましたが、まだ /data/data/ フォルダーに解凍されません。

私が見つけた 1 つの方法は、AssetManager を使用し、InputStream と OutputStream の助けを借りて、このファイルを初めて実行したときにデバイスに書き込んでから使用することです。ただし、メモリを使い果たす可能性があるため、電話のメモリに手動で書き込む意味はありません。(メモリーカードが無い場合です。)

どうすればこれを達成できますか?インストール時に必要なファイルを自動で解凍するオプションがあればいいですね。

4

3 に答える 3

2

どうすればいいですか?

あなたはそうしない。アプリケーションの最初の実行時に自分で解凍します。

私が見つけた 1 つの方法は、AssetManager を使用し、InputStream と OutputStream の助けを借りて、このファイルを最初に実行したときにデバイスに書き込んでから使用することです。

正しい。

ただし、メモリを使い果たす可能性があるため、電話のメモリに手動で書き込む意味はありません。

では、なぜ最初に自動的に展開する必要があったのでしょうか?

インストール時に必要なファイルを自動で解凍するオプションがあればいいですね。

いいえ、申し訳ありませんが、これは不可能です。

于 2010-10-12T11:28:03.750 に答える
0

私たちも同じ問題を抱えています... 私たちが模索している方向性は、2 つの別々のインストールを行うことです。1 つ目はアプリで、2 つ目はデータアプリです。データ アプリをインストールすると、バイナリ ファイルが SD カードにコピーされます。データ アプリをアンインストールすると、内部ストレージが解放されます。

これはまだ完全になめられていません。他の意見を聞きたいですし、スケルトンのサンプル アプリケーションをいくつか書いて助けてくれる人を見つけたいと思っています。

このボートに乗っている人は非常に多いので (私のグーグルによると)、このアプローチがうまくいかない場合は、私たち (または誰か) が一般的なファイル配信 Web サーバーと一般的なファイル配信 Android サービスをセットアップして、それを利用できるようにすることをお勧めします。非常に低コストの開発者。

于 2011-03-31T19:51:46.050 に答える
0

これはOBBの一般的な使用方法ではありませんが、使用しない理由はありますか? これは、事前に決められた場所にインストールされた apk とは別のファイルになります。圧縮する必要はありません。

于 2014-02-13T13:11:57.883 に答える