Hi Shaz, i take my hat off your efforts and initial analysis - after initial “if it isn’t broken…”-based doubts, i now also think migrating the iOS Cordova template structure to XCode workspaces is the best longterm approach.
Addendum to your analysis: iOS “.frameworks" are not restricted to iOS 8+ per se, only _dynamic_ frameworks (dylibs) are. That is, _static_ frameworks can be bundled since i-don’t-know-when. From a workflow perspective it used to be tedious though, as one needs to build for ARM and simulator, then merge the resulting Mach-O executables via the lipo CLI, etc. - but in XCode 6, Apple made this easier by providing a template for this (and there were third party framework templates as well). Based on these experiences, I created a workflow for myself to get from a popular iOS cocoa control to a Cordova plugin in less than a day (for a simple framework with a few methods to expose via CDVPlugin). As we all know, Plugman has been supporting custom frameworks for a while, and can then copy to the platform folders and reference those files, which works flawlessly. Attached my repo links [1], i’d be glad to assist with any questions if that’s useful for the .xcworkspace migration process. Best regards, Sidney [1] https://github.com/SidneyS/GCDWebServer-static-framework https://github.com/SidneyS/MRProgress-static-framework > On 01 Apr 2015, at 02:41, Shazron <shaz...@gmail.com> wrote: > > ISSUE: > https://issues.apache.org/jira/browse/CB-5921 > > PROOF OF CONCEPT: > https://github.com/shazron/CB-5921 > > I took it onto myself to create a proof of concept on how this could > work. Check out the README for the conversion details: > https://github.com/shazron/CB-5921/blob/master/README.md > > TLDR; The essence of it is: > > 1. There is a workspace that contains: CordovaLib, the user's project, > and N plugin framework projects > 2. CordovaLib is no longer a subproject of the user's project > 3. CordovaLib contains a target that will create a Cordova.framework > 4. Plugins are iOS Framework projects (adding a plugin requires adding > an xml line in xcworkspace, and framework refs in the user's project ) > 5. Plugin JS is still installed by the CLI unless we find an alternative > method > 6. The CLI needs to be changed to do (4) > > Implementation details are in the README referenced above. > > BENEFITS > > This makes it all modular especially the plugins. Plugins are > frameworks instead of static libraries because some plugins contain > resource bundles that need to be included, and frameworks provide this > functionality. Workspaces have been there since Xcode 4, and are used > by a bunch of other package managers (Cococapods), it will be good to > work well with other packaging systems if we can. Also, plugin > installation is simplified. > > Cordova is a framework so there will be no duplicate symbol problem > when linking a plugin into the user's project. > > POTENTIAL PROBLEMS: > > 1. I haven't tested this on iOS 7 devices yet though (since iOS > frameworks are iOS 8 only -- but they should still work if weak > linked), I'll have to find a device and report back. > 2. cordova-cli platform version issues: if cordova-ios 4.x supports > workspaces, and you are on a cordova-cli that doesn't know about the > new template format (but you installed the new platform anyway), it > won't work > > Send me your comments, ideas, etc... > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org > For additional commands, e-mail: dev-h...@cordova.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org For additional commands, e-mail: dev-h...@cordova.apache.org