Hi there, it surprises me to see so little activity in this area of the forum (for years), but sometimes it doesn't surprise me. Mobile development is the new thing right? but easy to hate. I come from desktop development where you downloaded the SDK, coded, compile, then distribute. You were in many ways an isolated production unit and the only variables affecting your work would be the destination OS or conflicting software on the client computer. OS updates? very little effects on your production, your APP could run for years on the same computer isolated or not, upgraded or not.
Things are not like that on the mobile world. Native?, you must code for Android and iOS separately, this means double work. Sometimes a little feature can be easy to get done on one platform while a headache on the other. Something I always hate about native is you need to download like 1.5G of data to get things going, and sometimes only then you get a notice of "you must download some other plugin", is never ending. Then, some things get broken with an OS update, in fact you would have diff clients with diff Os versions. Not to mention the terrible situation where you are already working and suddenly the SDK gets an update and you must download again and reinstall, it sucks.
You might have a local compiling solution, that's somehow ok... you might have a cloud based compiling solution, this might suck because some commands and functions get deprecated, removed... so what worked on version X doesn't work (compiles) on version X.1. This also happens with Xcode (locally), new versions break your projects, some partially, some break it all.
This is not an ad or sponsored post, but Corona SDK (it's been mentioned before in this area) is the only tool I've seen allowing one set of code, good stability on the long run and building binaries on the cloud without suffering all of the previously mentioned issues. But sure is not perfect, it targets specific resolutions so no easy way to approach responsive apps. In some cases screen positioning can be a headache as X and Y changes depending on some factors. I like it, but sometimes it takes a lot of code to get some things done...
Hybrid. It suppose to solve the double coding nightmare, you know code once and distribute on diff platforms, right? here you have things like Monaca, Telerik, PhoneGap, etc, all built on top of Apache Cordova. Ok, have you tried it? have you built something? there are things like:
DoThis(MainThing, FunctionIfSucceeds, FunctionIfFails);
And guess what? lots of people reporting it works, it doesn't work, it fails, etc. There is no consistency (really) besides in some cases you might find the line executes the MainThing and then FunctionIfSucceeds along with FunctionifFails ONE AFTER THE OTHER, why? who knows, you might be lucky finding an answer because there are many threads where people moved on to try something new after constant fails with no response.
It is amazing how serious documentation lacks examples, it is worse to find documentation filled with asterisks:
* that only works with version x.1.2.1.
** on version x.1.2.2 you must replace ACDE with XJSJJ
*** This causes an issue on iOs
**** Using whatever with comas fails on Android
And my favorite: This command MIGHT fail or return an error on [insert another variable, might, perhaps, sometimes...]
WTF, documentation with no solutions? with "this might fail?" or lines like "sometimes this fails, we recommend X function instead" well why not removing what doesn't work and say "this platform just can't do that"? It sucks. And it sucks big time.