in appcenter-link-scripts/src/android/index.js [58:116]
removeAndroidDuplicateLinks() {
// Settings file
let lines = {};
const settingsPath = 'android/settings.gradle';
let settingsContent = fs.readFileSync(settingsPath, 'utf-8');
settingsContent.split('\n').forEach((line) => {
if (lines[line]) {
settingsContent = settingsContent.replace(line, '');
}
if (line.match(/^\s*(include|project).*appcenter.*$/)) {
lines[line] = true;
}
});
settingsContent = settingsContent.replace(/\n\n\n/g, '\n\n');
fs.writeFileSync(settingsPath, settingsContent);
// android build.gradle
lines = {};
const gradlePath = 'android/app/build.gradle';
let gradleContent = fs.readFileSync(gradlePath, 'utf-8');
gradleContent.split('\n').forEach((line) => {
const match = line.match(/^\s*(compile|implementation) (project.*appcenter.*)$/);
if (match) {
if (lines[match[2]]) {
gradleContent = gradleContent.replace(line, '');
} else {
lines[match[2]] = true;
}
}
});
gradleContent = gradleContent.replace(/\n\n\n/g, '\n\n');
fs.writeFileSync(gradlePath, gradleContent);
// MainApplication.java
const appFiles = glob.sync('android/app/src/**/MainApplication.java', {
ignore: ['node_modules/**', '**/build/**'],
cwd: process.cwd()
});
if (appFiles.length > 0) {
lines = {};
const appFile = appFiles[0];
let appContent = fs.readFileSync(appFile, 'utf-8');
appContent.split('\n').forEach((line) => {
const line2 = `${line},`;
if (lines[line]) {
appContent = appContent.replace(line, '');
}
if (lines[line2]) {
appContent = appContent.replace(line2, '');
}
if (line.match(/^\s*(import.*appcenter|new AppCenterReactNative.*Package).*$/)) {
lines[line] = true;
}
});
appContent = appContent.replace(/(import.*\n\n)\n/g, '$1');
appContent = appContent.replace(/(new.*AppCenterReactNative.*Package.*\n)\n/g, '$1');
fs.writeFileSync(appFile, appContent);
}
}