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

Expo使用config插件修改AndroidManifest内容无效果如何解决

问题原因
  • 根配置的name字段修改生效不代表withAndroidManifest内的逻辑已执行:你直接在插件顶层修改了config对象的name属性,这个属性是Expo构建系统直接读取的全局配置,不需要走Android原生配置修改流程,因此无法证明withAndroidManifest回调内的代码正常运行。
  • 你使用的expo build:android是已废弃的经典构建服务,该服务不支持自定义Config Plugins对原生清单文件的修改逻辑,只有新版EAS Build支持完整的Config Plugins能力。
  • 你的setCustomConfigAsync3声明为async但内部无任何异步操作,不必要的异步声明可能导致mod处理流程异常。
  • 插件注册格式存在冗余:无参数的插件直接注册即可,不需要嵌套两层数组。
解决步骤
  • 首先修改插件代码,修正冗余问题:
import { AndroidConfig, withAndroidManifest } from "@expo/config-plugins";
const {
  removePermissions,
} = AndroidConfig.Permissions;

const withCustomConfig = (config) => {
  config.name = "NEWNAME"
  // 去掉不必要的async声明,内部没有异步操作不需要用async
  return withAndroidManifest(config, (config) => {
    config.modResults = setCustomConfig3(config, config.modResults);
    return config;
  });
};

// 去掉async声明
function setCustomConfig3(config, androidManifest) {
  removePermissions(androidManifest,["android.permission.SYSTEM_ALERT_WINDOW"])
  // 可添加日志确认执行,本地预构建时能在控制台看到输出
  console.log("已执行AndroidManifest修改,移除SYSTEM_ALERT_WINDOW权限")
  return androidManifest
}

const config = {
  name: "TEST",
  // 无参数插件不需要嵌套两层数组
  plugins : [withCustomConfig],
  slug: "TEST",
  // 其余原有配置保持不变
}

export default config;
  • 弃用expo build:android,改用EAS Build构建APK:先安装EAS CLI:npm install -g eas-cli,登录账号后执行eas build -p android --profile preview生成测试APK即可。
  • 如果要本地验证修改是否生效,可执行npx expo prebuild --clean命令,生成完整的android原生项目文件夹后,直接查看android/app/src/main/AndroidManifest.xml文件确认修改是否生效,不用等待云端构建完成。
  • 若仍然不生效,检查是否有其他插件在你的插件执行后重新添加了对应权限/属性,可以调整插件在plugins数组中的顺序,把你的自定义插件放在数组最后执行,避免被其他插件覆盖修改结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:06:03