You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android分版本配置largeHeap遇AAPT错误:找不到匹配资源

解决AndroidManifest设置largeHeap分版本控制的资源引用错误

嘿,我之前刚好踩过这个坑!你碰到的AAPT错误,根源是在Manifest里引用布尔值资源的格式写错了,分版本控制的姿势也需要调整,下面一步步给你讲怎么搞定:

错误原因分析

你之前用@values/bools来引用资源是不对的——AndroidManifest中引用资源的正确格式是@[资源类型]/[资源名称],布尔值的资源类型是bool,不是values,所以AAPT找不到对应的资源,才会抛出那个错误。

正确的分版本实现步骤

1. 创建分版本的values目录

在你的res目录下,新建两个目录:

  • values-v14:这个目录下的资源会被**Android 4.0及以上(API 14+)**的设备加载
  • 保留原有的values目录:这个目录下的资源会被**低于API 14的设备(比如Android 2.3)**加载

2. 在对应目录下创建布尔值资源文件

分别在两个目录里创建bools.xml文件:

  • res/values/bools.xml(给Android 2.3等低版本用):
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="enable_large_heap">false</bool>
    </resources>
    
  • res/values-v14/bools.xml(给Android 4.0+用):
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="enable_large_heap">true</bool>
    </resources>
    

3. 修改AndroidManifest.xml的引用

把原来错误的@values/bools改成@bool/enable_large_heap,也就是在application标签里这么写:

<application
    android:name=".MyApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="@bool/enable_large_heap" <!-- 这里是正确的引用 -->
    ...>
    <!-- 其他组件声明 -->
</application>

验证效果

这样设置之后,编译运行时,系统会根据设备的Android版本自动加载对应目录下的布尔值:

  • Android 4.0及以上的设备,largeHeap会被设为true
  • Android 2.3及以下的设备,largeHeap会被设为false

内容的提问来源于stack exchange,提问作者greW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:10:26