5

我想创建一个大型应用程序,以分发给 Play 商店之外的一组特定用户。我打算通过 ADB 安装它,但是我找不到有关大小限制的硬信息。

我创建了一个简单的测试 apk 并将 1.8GB 的​​内容转储到 assets 文件夹中。亚行抛出以下错误:

could not allocate buffer for 'sizetest.apk'

我已经在具有 7Gb 可用空间的设备上尝试过这个,所以我想知道这个错误是从哪里来的。是设备存储/系统存储/设备内存/我的电脑内存/ADB本身吗?有解决方法吗?

4

2 回答 2

4

亚行的一个问题。ADB 用于验证文件是否为 APK,并在安装前将整个文件读入内存。这可能会导致mallac返回NULL,关闭您的 ADB 会话(参见file_sync_client.c第 335-341行)。

这是固定在这里

取消对在通过线路发送之前验证 APK 的支持,因为它在发送之前将整个 APK 读入内存 (!)。


我创建了一个简单的 hello world 项目并创建了一个大文件(1.8 GB)并将该文件添加到 assets。ADB 在我的设备上成功安装了 APK。

只要设备上有足够的可用空间,APK 就应该是可安装的。如果仍然出现错误could not allocate buffer for 'APK',请更新 adb。

DEX 限制:

我知道的唯一大小限制是您的 dex 文件的大小。如果 dex 文件(您的 APK 中的 classes.dex)超过 5 MB 并且需要安装在 Froyo 或 Gingerbread 上,则安装将失败。最新版本的 Android 使用 8 或 16 MB 缓冲区。您可以使用multidex来解决此问题。但是,您可能不需要担心 dex 文件的大小(更多信息)。

于 2016-02-08T09:19:17.783 回答
0

这可能不是一个好的答案或您正在寻找的东西。但这可能是一个体面的工作。您可以将其打包为自定义 android rom 的一部分,然后将 rom 闪存到您计划安装它的设备上。

于 2013-08-14T11:18:59.783 回答