如何在Expo EAS Build中无需编辑android/app/build.gradle添加manifestPlaceholders?
我之前用Expo SDK 53的Managed Workflow搭配EAS Build时,也碰到过一模一样的问题!当时想加appAuthRedirectScheme这类manifest占位符,直接在app.json里塞android.manifestPlaceholders结果被expo-doctor报错,别提有多头疼了。不过后来发现Expo官方其实有完美的解决方案,不用碰任何原生文件,下面就一步步教你怎么做:
核心方案:使用expo-build-properties配置插件
这是Expo官方维护的插件,专门用来在Managed Workflow里扩展原生构建配置,添加Android的manifestPlaceholders完全不在话下。
1. 先安装插件依赖
打开终端,在项目根目录运行:
npx expo install expo-build-properties
用npx expo install而不是直接用npm/yarn装的好处是,它会自动匹配你当前Expo SDK的兼容版本,避免版本冲突踩坑。
2. 在app.json/app.config.js里配置插件
打开你的app.json(如果用动态配置就改app.config.js),在expo.plugins数组里添加以下配置:
{ "expo": { // 保留你项目里已有的其他配置... "plugins": [ [ "expo-build-properties", { "android": { "manifestPlaceholders": { "appAuthRedirectScheme": "com.yourapp.custom.auth" // 替换成你实际需要的scheme } } } ] ] } }
如果是用app.config.js,写法类似,只是改成JS对象格式:
export default { expo: { // 保留你项目里已有的其他配置... plugins: [ [ 'expo-build-properties', { android: { manifestPlaceholders: { appAuthRedirectScheme: 'com.yourapp.custom.auth' } } } ] ] } };
3. 验证&触发构建
配置完之后,先跑一下npx expo doctor,这次应该不会再报schema错误了!
之后直接触发EAS Build就行:
eas build --platform android
EAS在构建过程中会自动通过这个插件,把你配置的manifestPlaceholders注入到Android的build.gradle的defaultConfig里,全程不用你手动碰原生文件。
为什么直接在app.json里加会报错?
因为Expo的app.json官方schema里本来就没有android.manifestPlaceholders这个字段,expo-doctor会严格校验配置的合法性,所以直接加肯定会不通过。必须通过官方的配置插件来扩展原生配置,这也是Managed Workflow里修改原生配置的标准姿势。
内容来源于stack exchange

