Fix EAS build repositories issues by modifying both project-level and settings-level repository blocks

This commit is contained in:
2026-05-25 19:41:41 +02:00
parent db54ba691a
commit 5c9667d9e0
2 changed files with 104 additions and 8 deletions
+22 -7
View File
@@ -1,12 +1,9 @@
const { withSettingsGradle } = require('@expo/config-plugins');
const { withProjectBuildGradle, withSettingsGradle } = require('@expo/config-plugins');
const withSettingsRepositories = (config) => {
return withSettingsGradle(config, (config) => {
// 1. Modify settings.gradle (settings-level repositories)
config = withSettingsGradle(config, (config) => {
let contents = config.modResults.contents;
// Append dependencyResolutionManagement block at the end of settings.gradle
// to add repositories at settings level. This is required because EAS Build
// uses PREFER_SETTINGS repositories mode, which ignores project-level repositories.
const reposBlock = `
// Added by withSettingsRepositories plugin
dependencyResolutionManagement {
@@ -16,14 +13,32 @@ dependencyResolutionManagement {
}
}
`;
if (!contents.includes('https://jcenter.bintray.com')) {
contents += reposBlock;
}
config.modResults.contents = contents;
return config;
});
// 2. Modify root build.gradle (project-level repositories)
config = withProjectBuildGradle(config, (config) => {
let contents = config.modResults.contents;
// Inject jcenter and jitpack into the allprojects.repositories block
if (!contents.includes('https://jcenter.bintray.com')) {
contents = contents.replace(
/maven\s*\{\s*url\s*['"]https:\/\/www\.jitpack\.io['"]\s*\}/g,
`maven { url 'https://www.jitpack.io' }
maven { url 'https://jcenter.bintray.com' }
maven { url 'https://jitpack.io' }`
);
}
config.modResults.contents = contents;
return config;
});
return config;
};
module.exports = withSettingsRepositories;