removeAndroidDuplicateLinks()

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);
        }
    }