Indeed the platform sections that you both mentioned are great in the
shared config.

I'm still seeing them duplicated in the config file after preparing
though. So I guess I'll submit a bug report...

Thanks,
Matt


On 4/14/14 10:19 AM, "Ian Clelland" <iclell...@chromium.org> wrote:

>On Mon, Apr 14, 2014 at 9:57 AM, Matt Scafidi-McGuire <
>matt.scafidi-mcgu...@dealer.com> wrote:
>
>> We're using cordova to build for iOS & Android and we struggle with a
>>few
>> issues with the defaults/config mechanisms for plugin preferences.
>>Perhaps
>> we just don't understand how it's meant to be used or perhaps we've
>> uncovered a bug.  These first two issues lead us to the problem I'm
>>writing
>> about.
>>
>> We can't put custom preferences in the shared config file that have a
>>copy
>> in the defaults.xml, because both end up in the generated config file.
>>It
>> seems like preferences shouldn't be repeated in the generated config
>>file
>> whether they contradict each other or not.  It seems like any
>>preference or
>> attribute in the shared config should override one found in the
>> defaults.xml.
>>
>
>Yes, anything in your config.xml should override a similar preference in
>defaults.xml. defaults.xml is a file that we ship with the platforms to
>encapsulate the default Cordova behaviour for each platform, rather than
>putting all of those defaults in code. It isn't meant to be edited by end
>users.
>
>If this is still happening (duplicate preferences ending up in the final
>config), it's because we're doing some very naive XML parsing, both on the
>Cordova CLI side and at run-time. At run-time, the last entry that is
>found
>in the application's config.xml should be the one that is used.
>
>
>> We don't want to put platform-specific preferences in the shared
>> config.xml file because it'll end up in the config files for both
>>platforms.
>
>
>
>It is currently possible to put platform-specific preferences in the
>shared
>config.xml file. Just like in a plugin.xml file, you can have <platform>
>sections, and tags within those sections will only be parsed for that
>platform.
>
>
>
>>  Although we could leave them in there cluttering the final generated
>> config file, we'd rather not.  The fact that we already have to edit the
>> defaults.xml files to solve the previous problem led us to this
>>solution.
>>  We put all shared values in the shared config.xml and any platform
>> specific settings in the respective defaults.xml.
>>
>> That worked well for us until we upgraded.  It seems as part of the
>> upgrade, the defaults.xml files were all cleared.  After uninstalling &
>> reinstalling each plugin (no plugins update?), the defaults.xml files
>>were
>> full of defaults and our custom settings were all gone.
>>
>> So what are we missing?  Is there any documentation on the most
>>effective
>> use of these files?
>>
>> If we leave custom preferences in the shared config.xml, how do we
>>prevent
>> duplication/competition with the copies in defaults.xml?
>>
>> Is there yet another place for platform specific settings?  Is there
>> anyway to prevent nuking the defaults.xml when upgrading?
>>
>
>No, defaults.xml should probably be considered a static file, part of the
>platform that gets shipped with Cordova. Platform-specific settings should
>be in your main config.xml file, inside of <platform> tags, where they
>will
>override the defaults when the platform's config.xml is generated.
>
>Ian




Matt Scafidi-McGuire | Senior User Interface Developer
V: 877.327.8422
matt.scafidi-mcgu...@dealer.com | www.dealer.com


Reply via email to