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

Expo托管应用无需eject修改Android端gradle.properties配置

现有实现存在的问题
  • 重复插入风险:直接调用push新增配置项,没有提前校验gradle.properties中是否已存在同名的AsyncStorage_db_size_in_MB配置。多次执行prebuild、或者已有默认配置的场景下,会出现多条同key属性,Gradle默认读取最后一条配置,会导致配置不生效或不符合预期。
  • 值类型错误:withGradleProperties要求property类型条目的value必须为字符串格式,传入数字类型10会导致配置写入时格式异常。
  • 配置值不符合需求:需要的是最高15MB的存储容量,代码里写的配置值为10,和需求不匹配。
无需eject的正确实现方案

Expo托管工作流原生支持通过自定义Config Plugin修改原生配置,不需要退出托管流程,构建时会自动注入对应配置。

  1. 修正自定义插件代码(路径./plugins/modifyGradle.js),增加重复配置校验、修正值类型、匹配需求的容量值:
import { withGradleProperties } from "@expo/config-plugins";

export const modifyGradle = (config) => {
  const targetKey = "AsyncStorage_db_size_in_MB";
  const targetSize = "15"; // 字符串格式,对应15MB存储上限
  return withGradleProperties(config, (config) => {
    // 查找已存在的同名配置
    const existingConfig = config.modResults.find(
      (item) => item.type === "property" && item.key === targetKey
    );

    if (existingConfig) {
      // 已存在则直接更新值,避免重复条目
      existingConfig.value = targetSize;
    } else {
      // 不存在才新增配置
      config.modResults.push({
        type: "property",
        key: targetKey,
        value: targetSize,
      });
    }

    return config;
  });
};
  1. 确认app.json中的插件配置格式正确,插件路径和实际文件路径一致:
{
  "expo": {
    // 其他原有配置
    "plugins": ["./plugins/modifyGradle.js"]
  }
}
  1. 如果之前本地执行过prebuild生成了android目录,先删除该目录后再执行构建;如果使用EAS云构建,不需要额外操作,构建流程会自动执行插件注入配置。

注意:该配置仅对@react-native-async-storage/async-storage生效,默认Expo SDK内置的AsyncStorage版本已支持该gradle配置项,不需要额外升级依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:09:17