[ALOY-1329] Either keep Alloy backwards compatible with older Titanium SDKs or specify and validate minimum version
GitHub Issue | n/a |
---|---|
Type | Story |
Priority | None |
Status | Open |
Resolution | Unresolved |
Affected Version/s | n/a |
Fix Version/s | n/a |
Components | n/a |
Labels | n/a |
Reporter | Fokke Zandbergen |
Assignee | Feon Sua Xin Miao |
Created | 2015-11-12T09:22:38.000+0000 |
Updated | 2015-11-12T09:22:38.000+0000 |
Description
We try to keep Alloy up to date with the Titanium SDK changes. Sometimes this means we break Alloy when used with older SDKs.
*Example*
* Since [Alloy 1.7.19](https://github.com/appcelerator/alloy/releases/tag/1.7.19) we now map
<SplitWindow>
to Ti.UI.iOS
instead of Ti.UI.iPad
.
* This means that if I use Alloy 1.7.19 and Titanium 3.5.1.GA I will get an exception when I use <SplitWindow>
because [Ti.UI.iOS.SplitWindow](http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.iOS.SplitWindow) was added in Titanium 4.0.0.GA
*Solution*
Like Titanium, Alloy should list vendorDependencies
in [package.json](https://github.com/appcelerator/titanium_mobile/blob/master/package.json#L59) to specify the minimum Titanium SDK version it can be used with. This should be validated before it compiles so that the user can be informed.
The alternative would be to keep Alloy backwards compatible with older Titanium SDKs. So in the case of the example, the namespace should be mapped based on the SDK version used.
Both have pros and cons.
To add to the complexity, the dependency chains with OSS and the Platform are different:
_Before the Unified CLI / with OSS_
* Titanium CLI version is determined by npm i -g titanium
* Titanium SDK version is determined by tiapp.xml
* Alloy version is determined by npm i -g alloy
_With the Unified CLI_
* Appcelerator CLI Core Package is determined by appc use
* Titanium CLI version is determined by Core Package
* Alloy version is determined by Core Package
No comments