I use Cordova with two platforms ios and android. When I change something in my
Project/config.xml
it will be merged into
Pro
You need a cordova hook. I strongly recommend you see this link: Cordova Hooks
More specifically:
mkdir -p hooks/after_prepare
touch hooks/after_prepare/change_my_configxml.sh
chmod 755 hooks/after_prepare/change_my_configxml.sh
edit hooks/after_prepare_change_my_configxml.sh
#!/bin/bash
echo ${CORDOVA_VERSION};
echo ${CORDOVA_PLATFORMS};
echo ${CORDOVA_PLUGINS};
echo ${CORDOVA_HOOK};
echo ${CORDOVA_CMDLINE};
# == put commands to make your config xml changes here ==
# == replace this statement with your own ==
sed "s/index\.html/http:\/\/my.example.com\?platform=ios\&cordova=3.4.0/" platforms/ios/www/config.xml > config.tmp && mv -f -v config.tmp platforms/ios/www/config.xml
Note that cordova hooks were originally placed in .cordova/hooks/... , but recently they have moved to a top-level hooks/ folder.
Here is a fully working script to create and run two slightly different cordova apps. Interestingly, the attribute in the iOS platform folder's config.xml seems to get ignored, so this script updates the top-level config.xml when dealing with iOS.
#!/bin/bash
# ==== Create cordova apps with different URLs for android and iOS
cordova create appFolder com.example.myApp "My App"
cd appFolder/
cordova platform add ios
cordova platform add android
# ==== make an after_prepare hook script
mkdir -p hooks/after_prepare
touch hooks/after_prepare/change_my_configxml.sh
chmod 755 hooks/after_prepare/change_my_configxml.sh
# ==== start of hook script content ====
echo '#!/bin/bash
echo "CORDOVA_VERSION: ${CORDOVA_VERSION}";
echo "CORDOVA_PLATFORMS: ${CORDOVA_PLATFORMS}";
echo "CORDOVA_PLUGINS: ${CORDOVA_PLUGINS}";
echo "CORDOVA_HOOK: ${CORDOVA_HOOK}";
echo "CORDOVA_CMDLINE: ${CORDOVA_CMDLINE}";
# == put commands to make your config xml changes here ==
# == replace these statement with your own ==
if [ ! -f platforms/android/res/xml/config.xml ]
then
cp -v -f config.xml platforms/android/res/xml/config.xml;
fi
if [[ ${CORDOVA_PLATFORMS} == android ]]; then
sed -E "s/ config.tmp && mv -f -v config.tmp platforms/android/res/xml/config.xml
fi
if [[ ${CORDOVA_PLATFORMS} == ios ]]; then
sed -E "s/ config.tmp && mv -f -v config.tmp config.xml
fi
' > hooks/after_prepare/change_my_configxml.sh
# ==== end of hook script content ====
cordova prepare android
cordova build android
cordova emulate android
cordova prepare ios
cordova build ios
cordova emulate ios