function updateProject (platformConfig, locations) {
    const plistFile = path.join(locations.xcodeCordovaProj, 'App-Info.plist');
    const infoPlist = plist.parse(fs.readFileSync(plistFile, 'utf8'));

    if (platformConfig.getAttribute('defaultlocale')) {
        infoPlist.CFBundleDevelopmentRegion = platformConfig.getAttribute('defaultlocale');
    }

    // replace Info.plist ATS entries according to <access> and <allow-navigation> config.xml entries
    const ats = writeATSEntries(platformConfig);
    if (Object.keys(ats).length > 0) {
        infoPlist.NSAppTransportSecurity = ats;
    } else {
        delete infoPlist.NSAppTransportSecurity;
    }

    /* eslint-disable no-tabs */
    // Write out the plist file with the same formatting as Xcode does
    let info_contents = plist.build(infoPlist, { indent: '\t', offset: -1 });
    /* eslint-enable no-tabs */

    info_contents = info_contents.replace(/<string>[\s\r\n]*<\/string>/g, '<string></string>');
    fs.writeFileSync(plistFile, info_contents, 'utf-8');

    return handleBuildSettings(platformConfig, locations, infoPlist);
}
Updates project structure and AndroidManifest according to project's configuration.

@param   {ConfigParser}  platformConfig  A project's configuration that will
  be used to update project
@param   {Object}  locations       A map of locations for this platform (In/Out)