在安装大文件(约 249 MB)时,UpdateHelper 安装器出现内存分配失败错误:
Failed to allocate 261074082 because only 184929076 allocatable
错误含义:
UpdateHelper 未启用大堆内存
AndroidManifest.xml 中已配置 android:largeHeap="true"内存使用优化不足
在 UpdateHelper/src/main/AndroidManifest.xml 中添加:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true" <!-- 新增:启用大堆内存 -->
android:theme="@style/Theme.UpdateHelper">
效果:
在 MainActivity.java 的 performInstall() 方法中:
OutOfMemoryError,提供更友好的错误提示<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true" <!-- 新增 -->
android:theme="@style/Theme.UpdateHelper">
主要变更:
OutOfMemoryError 专门处理重新编译 UpdateHelper
cd bBeng-HeartRate-4.66-pad
./gradlew :UpdateHelper:assembleRelease
安装新的 UpdateHelper APK
测试大文件安装
largeHeap 的影响
android:largeHeap="true" 会增加应用的内存占用设备兼容性
largeHeap 属性在 Android 3.0+ (API 11+) 支持minSdkVersion 是 21,完全兼容性能考虑
UpdateHelper/src/main/AndroidManifest.xml - 添加 largeHeap 配置UpdateHelper/src/main/java/com/yuyetech/updatehelper/MainActivity.java - 优化内存管理通过启用 largeHeap 和优化内存使用,UpdateHelper 现在可以处理更大的 APK 文件(理论上可处理 500+ MB 的文件,取决于设备可用内存)。修复后,应该能够成功安装 249 MB 的 APK 文件。