I know that it is unfortunate that's why I think the macro solution instead of the engine solution is best for core plugins (I discovered from the spec I could use 'apple-xcode' and 'apple-ios' to further differentiate, but never mind).
We can take care of this as committers for the core plugins by using the macros, but a lot of plugin authors and contributors are careless in that: 1. They either don't use an engine tag 2. Or they don't adequately protect newer iOS SDK calls from crashing on older iOS runtime. Sure, it compiles in iOS 8 SDK, but if a user runs it on an iOS 6 or 7 device, it will crash when it reaches that iOS 8 API function. I don't think there are any open source linters out there that will help us with this (there is a commercial one: http://www.deploymateapp.com) On Fri, Nov 14, 2014 at 11:54 AM, Josh Soref <[email protected]> wrote: > Michal Mocny wrote: > >I just added this to org.apache.cordova.file's plugin.xml as a test: > > > > <engines> > > <engine name="cordova-ios" version=">=4.0.0" /> > > </engines> > > > >Then tried to install that version locally in a project, and got: > > > >Installing "org.apache.cordova.file" for ios > >Failed to install 'org.apache.cordova.file':CordovaError: Plugin doesn't > >support this project's cordova-ios version. cordova-ios: 3.6.3, failed > >version requirement: >=4.0.0 > > > >Would probably prefer to clean up the error a bit, but seems to work well. > > Hrm, does that mean that someone using an old version of a platform can't > install *any* version of a plugin (easily) if the latest version requires > a newer platform? > > That'd be rather unfortunate⦠> > > >
