cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shazron Abdullah (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-4036) <platform> tag should have a "version" attribute
Date Fri, 28 Jun 2013 18:42:20 GMT

    [ https://issues.apache.org/jira/browse/CB-4036?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13695653#comment-13695653
] 

Shazron Abdullah commented on CB-4036:
--------------------------------------

That's a better idea - having *min-sdk-version* and *min-os-version*, and iOS has mappings
for these as well.

*min-sdk-version* is analogous to the *SDKROOT* Project Build Setting. However, detection
is problematic since if a dev choose to use the "Latest iOS SDK" in Xcode, this value is just
"iphoneos". If you specified a specific SDK, it would be "iphoneosX.X" where X.X is the iOS
version. To properly detect what the "Latest iOS SDK" is, you have to run:
{code}
xcodebuild -showsdks
{code}
.. and parse the iOS SDKS section:
{code}
OS X SDKs:
	Mac OS X 10.7                 	-sdk macosx10.7
	OS X 10.8                     	-sdk macosx10.8

iOS SDKs:
	iOS 6.1                       	-sdk iphoneos6.1

iOS Simulator SDKs:
	Simulator - iOS 5.1           	-sdk iphonesimulator5.1
	Simulator - iOS 6.1           	-sdk iphonesimulator6.1
{code}

*min-os-version* is pretty straightforward, it is just the *IPHONEOS_DEPLOYMENT_TARGET* Build
Setting, and this is just a number (X.X). Note that you have to read the value from the *Target*,
not *Project* Build Setting, since anything in the *Target* overrides the *Project* Build
Setting.
                
> <platform> tag should have a "version" attribute 
> -------------------------------------------------
>
>                 Key: CB-4036
>                 URL: https://issues.apache.org/jira/browse/CB-4036
>             Project: Apache Cordova
>          Issue Type: Improvement
>            Reporter: Shazron Abdullah
>
> This might be hole that we didn't consider.
> I know implicitly if the plugin supported an "engine" version we support what the engine
supports, but here could be one scenario.
> For example, with iOS 7, a plugin CDVFooBar use this awesome NSWhizBang framework. Fine,
with iOS 7, you have to of course build with the iOS 7 SDK, and you can support iOS 6 with
a Deploy Target build setting.
> It runs on iOS 7 - yay.
> It.. blows up on iOS 6 at runtime, because of course NSWhizBang framework does not exist
on iOS 6.
> Now you say, why don't you do Obj-C runtime checks and weak link the framework? Yes,
the plugin author can do that but a plugin user, by parsing the plugin xml (using a tool,
or optically, whatever) cannot know that the plugin does NOT work on iOS 6 - and even though
it "runs" on iOS 6, it does nothing, which is useless and wastes a lot of time.
> So - my proposal is, to add a *"version"* attribute on the *<platform>* tag. It
should follow the syntax for the <engine> version attribute. 
> What would be the default if the version attribute is not there? Not sure what a reasonable
default is yet.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message