これはADB の問題でした。ADB は、ファイルが APK であることを確認し、インストール前にファイル全体をメモリに読み込むために使用します。これによりmallac
が返されNULL
、ADB セッションが閉じられる可能性があります ( file_sync_client.cの 335 ~ 341行を参照)。
これはここで修正されました。
送信前に APK 全体をメモリ (!) に読み取っていたため、ネットワーク経由で送信する前に APK を検証するサポートを削除しました。
単純な hello world プロジェクトを作成し、大きなファイル (1.8 GB) を作成して、そのファイルをアセットに追加しました。ADB は APK をデバイスに正常にインストールしました。
デバイスに十分な空き容量がある限り、APK をインストールできます。それでもエラーが発生する場合はcould not allocate buffer for 'APK'
、adb を更新します。
DEX の制限:
私が知っている唯一のサイズ制限は、dex ファイルのサイズです。dex ファイル (APK の classes.dex) が 5 MB を超え、Froyo または Gingerbread にインストールする必要がある場合、インストールは失敗します。最近のバージョンの Android では、8 MB または 16 MB のバッファーが使用されます。multidexを使用してこの問題を解決できます。ただし、おそらく dex ファイルのサイズを気にする必要はありません (詳細)。