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

升级Android Studio至v3.4.0后重建项目遇STRING_TOO_LARGE错误

解决Android Studio 3.4.0升级后"STRING_TOO_LARGE"报错问题

嘿,这个问题我之前帮不少开发者踩过坑!AS 3.4.0升级后触发的这个错误,本质是Android Gradle Plugin(AGP)3.4.0开始加强了单个字符串资源的大小限制——一般单个字符串超过1MB左右,就会触发这个编码失败的报错。下面给你几个实用的解决办法,按推荐程度排序:

1. 拆分大型字符串资源(适合可分割的短文本)

如果你的大字符串是可以分段的内容(比如长文案、多段说明),直接把它拆成多个小字符串资源:

  • 在res/values/strings.xml里,将原单个大字符串拆分为多个子部分:
    <string name="long_text_part1">第一段内容...</string>
    <string name="long_text_part2">第二段内容...</string>
    <string name="long_text_part3">第三段内容...</string>
    
  • 然后在代码里拼接这些字符串:
    Java示例:
    String fullText = getString(R.string.long_text_part1) + 
                      getString(R.string.long_text_part2) + 
                      getString(R.string.long_text_part3);
    
    Kotlin示例:
    val fullText = getString(R.string.long_text_part1) +
                   getString(R.string.long_text_part2) +
                   getString(R.string.long_text_part3)
    

2. 将大型文本移到Assets目录(最推荐的长期方案)

如果是几MB级别的超大文本(比如帮助文档、用户协议),直接把文本文件放到app/src/main/assets目录下,通过AssetManager读取,这是最规范的处理方式:

  • 第一步:把大文本保存为large_content.txt(或其他格式),放到assets文件夹中;
  • 第二步:在代码中读取文件内容:
    Java示例:
    try {
        InputStream inputStream = getAssets().open("large_content.txt");
        int fileSize = inputStream.available();
        byte[] buffer = new byte[fileSize];
        inputStream.read(buffer);
        inputStream.close();
        String fullContent = new String(buffer, "UTF-8");
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    Kotlin示例:
    try {
        val fullContent = assets.open("large_content.txt")
                            .bufferedReader()
                            .use { it.readText() }
    } catch (e: IOException) {
        e.printStackTrace()
    }
    

3. 临时禁用资源压缩(仅救急,不推荐长期使用)

如果只是需要临时编译通过,可以在模块级别的build.gradle里添加配置,关闭AGP的资源严格检查:

android {
    aaptOptions {
        // 禁用资源 crunch 压缩
        cruncherEnabled = false
        // 或者添加额外参数忽略大资源编码检查
        additionalParameters '--ignore-assets', '!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~'
    }
}

⚠️ 注意:这个方法只是临时方案,长期使用会导致APK体积增大,还可能引发其他资源加载问题,紧急情况处理完后,一定要换回前面的规范方案。

4. 排查第三方依赖的大资源

有时候报错不是自己的代码导致的,而是依赖的第三方库引入了超大字符串资源。你可以:

  • 用./gradlew app:dependencies命令查看项目依赖树,定位可疑的库;
  • 用Android Studio的Analyze > APK Analyzer工具,检查APK中的资源大小,找到占用空间超大的字符串资源,然后考虑替换该库,或者通过exclude规则排除不必要的资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:35:40