如何在Expo托管项目的build.gradle中添加默认配置
在Expo托管项目中给Android build.gradle的defaultConfig添加missingDimensionStrategy配置
要实现这个需求,你可以编写一个简单的Expo Config Plugin,利用withAppBuildGradle精准修改build.gradle文件,具体步骤如下:
1. 创建自定义插件文件
在项目根目录下新建plugins/withStoreDimensionStrategy.js文件,写入以下代码:
const { withAppBuildGradle } = require('@expo/config-plugins'); module.exports = function withStoreDimensionStrategy(config) { return withAppBuildGradle(config, (config) => { // 只处理Groovy格式的build.gradle文件(Expo默认生成的是Groovy格式) if (config.modResults.language === 'groovy') { // 正则匹配defaultConfig块,确保精准插入配置 config.modResults.contents = config.modResults.contents.replace( /defaultConfig\s*{([^}]+)}/s, (match, innerContent) => { // 避免重复添加相同配置 if (!innerContent.includes('missingDimensionStrategy \'store\', \'play\'')) { return `defaultConfig { ${innerContent.trim()} missingDimensionStrategy 'store', 'play' }`; } return match; } ); } return config; }); };
2. 在项目配置中注册插件
打开app.json或app.config.js,将插件添加到expo.plugins数组中:
{ "expo": { // 其他配置... "plugins": [ "./plugins/withStoreDimensionStrategy.js" ] } }
3. 验证配置生效
运行expo prebuild --platform android(本地预构建查看效果)或直接触发eas build,生成的android/app/build.gradle文件中,defaultConfig块内会出现你需要的配置:
defaultConfig { // 原有配置... missingDimensionStrategy 'store', 'play' }
补充说明
如果你的项目需要更复杂的Gradle AST操作(比如处理嵌套块、动态配置),可以使用Expo提供的Gradle AST解析工具,不过对于这种单一配置的添加,正则替换已经足够高效可靠。
内容的提问来源于stack exchange,提问作者guitarman0456
相关产品推荐
相关产品推荐

