This post comes out of a question I answered over at the guest post I did on Devgirl’s blog, ‘Three Hooks Your Cordova Project Needs’.
A commenter asked:
How do you retain the project level settings for cordova Android projects? Platforms folder removes project level setting when you run ‘cordova platform rm android’
I answered over there, but thought I’d expand a bit and write a post here.
In the first case, you are probably not removing the files under
platform all that often–you are more likely to work out of that directory. In the second case, everything under
platform is derived from your
www directory, plus your plugins, so you can remove the
platform directory easily.
I can’t really speak to Native Platform Dev, because it isn’t a Cordova workflow I’ve used. My book is entirely about Web Project Dev and how to do it most efficiently. If that is your paradigm, I imagine you won’t have much trouble with platform specific settings, because the native tooling is pretty good about capturing that in version control, so you can rely on it.
If, on the other hand, you are using Web Project Dev, then if you want to modify platform specific settings, you have three options:
You need to either:
Only modify your project in ways that can be expressed in
config.xml. Review the config.xml reference and the platform guides to figure out if your needed customization can be captured in this way.
after_platform_addhook which copies your changes over from elsewhere in your source tree (if you have a modified .java file for example).
Write a plugin which modifies an XML files (
AndroidManifest.xml) to insert your needed project level config, (an IntentFilter, for example), and add that plugin to your project in an an
after_platform_add. Note you can only add XML nodes to config files with plugins, you can’t modify attributes or remove nodes.
Which of these is correct for you depends on exactly which platform specific feature you are trying to modify.