Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming IT

The Headaches of Cross-Platform Mobile Development 197

snydeq writes "Increased emphasis on distinctive smartphone UIs means even more headaches for cross-platform mobile developers, writes Fatal Exception's Neil McAllister, especially as users continue to favor native over Web-based apps on mobile devices. 'Google and Microsoft are both placing renewed emphasis on their platforms' user experience. That means not just increased competition among smartphone and tablet platforms, but also new challenges for mobile application developers. ... The more the leading smartphone platform UIs differ from one another, the more effort is required to write apps that function comparably across all of them. Dialog boxes, screen transitions, and gestures that are appropriate for one platform might be all wrong for another. Coding the same app for three or four different sets of user interface guidelines adds yet another layer of cost and complexity to cross-platform app development."
This discussion has been archived. No new comments can be posted.

The Headaches of Cross-Platform Mobile Development

Comments Filter:
  • eh (Score:2, Insightful)

    by Anonymous Coward

    I'd personally call them migraines.

  • by s73v3r ( 963317 ) <s73v3r@g[ ]l.com ['mai' in gap]> on Thursday January 19, 2012 @09:20PM (#38757134)

    If you're gonna do cross platform app development, at least make the effort to follow the platform's UI guidelines. As an Android user, nothing irks me more than having an app with the iOS icons and navigation buttons simply copied over. I'm sure the same is true for users of other platforms.

    • Re: (Score:2, Insightful)

      by Anonymous Coward

      And nothing irks me more than users of any system expecting everything to work exactly to same with all the bells and whistles attached. F-ME for being a web developer that's had to deal with the nightmare that was (and sometimes still IS) IE 6 and the fucking "it doesn't work on my iPhone."

      Sometimes, for production time purposes, and the rampant demands (re: bitching) of users, we have to take fucked up shortcuts to make things get done.

      • Re: (Score:2, Insightful)

        by Anonymous Coward

        Please spare us your software entirely in future then.

      • by jo_ham ( 604554 )

        This post getting +5 insightful perfectly encapsulates what's wrong with many software developers.

        • by BVis ( 267028 )

          No, it encapsulates what's wrong with project management in this industry. Failure to manage customer expectations and setting insane production deadlines isn't the developer's fault, it's the fault of the management layer that *should* be between the client and the developer.

          Of course, in an ideal world, there would be someone there. There frequently isn't, or there's someone so ineffective there that it's *worse* than nobody being there. In those cases, the developer should be looking for a better job.

  • by phikapjames ( 811889 ) on Thursday January 19, 2012 @09:28PM (#38757190)

    The one thing that irks me a bit about this whole situation is them complaining that they just can't write the code once and have it work across the different platforms, yet I'm still required to buy the same software separately on each platform. In my mind, you justify the cost to make it work for that platform by selling it on the specific platform. My opinion would probably be different though if I was able to buy the app once and not have to pay on each separate platform.

    • You have a point if the app is a commercial product developed by a company with several employees, UI designers, and the resources to maintain different source trees. However, for individual developers being locked into platforms (and platform-specific languages as in iOS) is more than just a minor nuisance -- don't forget that for many applications most of the development time nowadays is spent on GUI and packaging instead of the actual functionality.

      Consider it that way: If it were possible to do real cro

  • Advice (Score:5, Interesting)

    by ackthpt ( 218170 ) on Thursday January 19, 2012 @09:32PM (#38757230) Homepage Journal

    Keep it simple, Stupid

    I'm developing an app which can be run cross-platform and/or mobile. Turned out to be a giant nightmare when looking at user experience on a tablet or smartphone. So .. I bailed on anything whizzy and went back to finding the basic html and javascript to get things done -- look and work consistently on multiple platforms and also be visible in sunlight (something a lot of apps fail miserably at.)

    • by s73v3r ( 963317 )

      Here's the thing: Is your thing a website, that I access through the browser, or is it an app I purchase (or just download) in the platform's market? If it's the first, then ok. If it's the second, then that will just suck ass.

    • Re:Advice (Score:5, Interesting)

      by thegarbz ( 1787294 ) on Thursday January 19, 2012 @11:26PM (#38757892)

      So you're coding in the most inefficient way for each device to run your app then?

      I feel for you. Your problem has been experienced by many who don't wish to rewrite that Objective-C app in Java, don't want to maintain two packages on different platforms without common bugs, and don't want to re-design your app so that on iOS it has a back button in the top left while on Android it obeys the hardware back key.

      However before you continue I suggest you look at the ratings of apps on each market that are written in the way you're suggesting. Inconsistent with the native UI of the platform makes the app look .... cheap. An app that runs in HTML / JS is inherently incredibly slow compared to a native app which further upsets the user experience.

      If you want to write a 5star app you'll likely need to abandon any hope of cross platform compatibility and simply code from the ground up for each platform.

      • Its simple: if you dont want to support Ford users, only market a product for GM users. Those of us that drive a Mercedes don't want your half baked products anyway!
      • There's no fundamental reason why an app written in HTML/JS can't have native look and feel or work "incredibly slow". Most apps don't do heavy CPU-bound computations, so JS perf is not really a problem. And UI fidelity is only as good as you make it - problem is, most people using HTML for UI just don't bother to actually make it look good.

        Even so, GMail app is actually pretty good and "native looking" for being HTML, and that's just one example.

    • by AJH16 ( 940784 )

      Except that, as the article said, users drastically prefer native apps to web apps. If your idea of a mobile ui is to make a site and use that in a hidden browser, you are setting up a path for user disappointment. That said, implementing and managing a couple of different object view front ends on top of a solid object modeled back end is not a big deal. Are there some frustrations, sure, but I haven't really found it to be a significant issue. The bigger issue is that in general, a lot of the current

  • HTML5 & Weever Apps (Score:3, Interesting)

    by Anonymous Coward on Thursday January 19, 2012 @09:38PM (#38757288)

    In the meantime, cross-platform, easy-to-develop HTML5 app frameworks are showing astonishing growth. In the least week alone we've seen three new Javascript + HTML5 frameworks released. And while it take consumers some time for consumers to get wise to the AOL-like 'we are the only (mobile) web' branding that Apple has established - the marketing advantages of one app that works across all touch phone and tablets and is actually affordable is pretty undeniable today - especially as web-app technology continues to mature.

    At Weever Apps (disclaimer, I'm the lead designer) that's the goal: disrupt the expensive, case by case, walled garden model and produce useful apps that actually meet the end-goals of most organizations. We started as a couple of not-for-profit oriented programmers that just couldn't stand how bad the current mobile/web/app situation was out there - our clients couldn't afford a proper mobile experience for their constituents, and that pissed us all off...

    Today, we've grown. We've hooked into amazing, established open-source web technologies like Wordpress, Joomla! and Drupal, created an open API and new RSS spec (RSS3 for semantic/web relationships, find it on github) and basically proven that web innovation can outpace mega-companies - we know this, because we're doing it and winning over former native-app clients. And are *web* apps are still affordable, useful and *accessible* to the at least 3/4 of companies that haven't 'gone mobile' today because of a combination of cost, utility and just sheer confusion with all the per-platform options out there.

    Check out "Why I make web apps" by our lead programmer Rob Porter:
    http://webweaving.tumblr.com/post/15651092883/why-do-i-make-web-apps

    Or just get a free app at http://weeverapps.com if you're interested. We're new and still adding lots of features - but I can confidently say that we're proving that there are better ways than the status quo to add value to the web and mobile - and we're not the only ones doing it. :)

  • This is most horrible! Interfaces are competing for usability and user experience and you target one platform at a time and pay attention to detail and nuance at that!
  • Not that bad (Score:2, Interesting)

    by t00le ( 136364 )

    Check out LiveCode Runtime Revolution and you'll quickly dismiss this complaint, it has support for almost all desktops, tablets and mobile phone platforms. Write it once and it compiles for the platform in native code.

    We use the hell out of it for the reason discussed above, not to mention that it allows you to build attractive cross platform products.

    • Can't Apple reject your app if it has been written in or translated from anything but Objective-C?
      • by t00le ( 136364 )

        Apple can reject your app for any reason they seem fit, whether right or wrong. We have written a handful of apps that are on the market with RunRev, three were approved without issue and two were rejected.

      • Re:Not that bad (Score:4, Informative)

        by icebraining ( 1313345 ) on Thursday January 19, 2012 @10:09PM (#38757504) Homepage

        They changed that policy in late 2010. http://daringfireball.net/2010/09/app_store_guidelines [daringfireball.net]

      • Re:Not that bad (Score:4, Informative)

        by tlhIngan ( 30335 ) <slashdot@worf.ERDOSnet minus math_god> on Friday January 20, 2012 @01:13AM (#38758370)

        Can't Apple reject your app if it has been written in or translated from anything but Objective-C?

        It's not a rejection criterion anymore. Apps can be coded in any language (including Flash), with the exception that no external code may be downloaded. C++ was always accepted, but JavaScript, Flash, C# are all acceptable.

        The general method is to stick all your core logic in a C++ module and then interface to that the UI code. Then cross platform porting involves rewriting the small UI core. Obj-C can call C++ objects trivially (native function call). For Android, it's done through JNI, but supported via the NDK. For Windows Phone, it's a bit more difficult since the core may need rewriting in C#.

        iOS encourages MVC development, and doing it properly means it can be trivially ported.

        • Slightly off-topic, but an interesting point:

          Windows Phone 7 does actually allow C++ in apps. You have to wrap the API using COM, but that's not hard - an hour of work at worst, once you have the development environment set up - and after that the managed part just uses the ComBridge API (P/Invoke is not supported) to load your COM library and can call into it trivially.

          The catch: ComBridge is not publically documented, and unless you get an exemption from MS your app will be rejected if it uses it. There a

        • For Windows Phone, it's a bit more difficult since the core may need rewriting in C#.

          There is a trick you can use for that - this basically entails writing the core logic in a subset of C++, such that it can be compiled both with C++/CLR in /clr:safe mode (giving you verifiable assemblies that'll work on WP7), and with any C++ compiler to native code on all other platforms. You need platform-specific macros for classes and structs, and template adapters for object references, arrays and strings to make that work. And this won't let you compile pretty much any pre-written C++ code (so you ca

    • Thank You (Score:5, Insightful)

      by SuperKendall ( 25149 ) on Thursday January 19, 2012 @10:31PM (#38757658)

      As an iOS developer, I heartily thank you for continuing to use cross platform development solutions that leave such a wide gap for someone to come along and write a better native app.

      • Re:Thank You (Score:4, Informative)

        by t00le ( 136364 ) on Thursday January 19, 2012 @11:24PM (#38757874)

        A huge portion of our applications now are enterprise class crm solutions, so easy portability to multiple platforms is something we offer as a courtesy. There is always an officer or VP that must be that special snowflake that requires Apple support, even though the other ten thousand people use Linux or Windows.

        We have Amazon EC2 services and simply need front ends for access, manipulation, reporting, etc. We have little to no need to have really amazing, shiny and pretty interfaces. Between ICS and iOS 5.x we have almost identical user interfaces with nice transitions and pleasant looking graphics. The thing that matters is speed of access to S3 buckets and read/write access to EC2 clustered databases. The nice thing is we can compile to Linux, Windows, almost all mobile platforms and have almost identical user interfaces. Instead of spending copious amounts of time on one platform, we create portable interfaces that are nice, fast and compile on just about anything, even the magical over hyped/marketed products. :)

        Cheers

  • So? (Score:5, Informative)

    by slapout ( 93640 ) on Thursday January 19, 2012 @09:50PM (#38757360)

    Success requires effort. Nothing new here.

    • ... and standards do not define success only consistency!

      • And success is often dependant on consistency. People favour apps that are predictable, familiar and easy to use.

    • by GauteL ( 29207 )

      I hear you. But it would be preferable if we could spend our effort on something more constructive than dealing with idiosyncrasies of different platforms. This could be a solved problem if the different platforms weren't more interested in vendor lock-in than advancing the state of the art.

      If I can only see the back of the dude in front of me, it is because I'm standing on the shoulder of a midget.

  • yeah, and...? (Score:4, Insightful)

    by DynamoJoe ( 879038 ) on Thursday January 19, 2012 @10:09PM (#38757500)
    So platform diversity is great until you have to code for it? I'm not seeing a problem.
  • by hsmith ( 818216 ) on Thursday January 19, 2012 @10:17PM (#38757562)
    I built a rather extensive commercial App on iOS. By abstracting the data/business layers well, when going to android it was as simple as writing a lexer to convert almost all the code. What took me 1000 hours of development took 8 hours to port over.

    The only thing that was really required was writing the UI, which was targeted for Android.
    • Only the UI? Your app on iOS was coded in Objective-C, or so I presume. You can abstract data and business layers, but still, it's written in Objective-C.

      Now how did you use that code on Android, which requires you write your app in Java?

      I can think of some solutions, such as compiling your Objective-C to object files, then use JNI to call the methods, but I wonder if you took this or another route.

      • by GauteL ( 29207 )

        "Only the UI? Your app on iOS was coded in Objective-C, or so I presume. You can abstract data and business layers, but still, it's written in Objective-C."

        You are not required to use Objective-C for everything on iOS, only the GUI interaction (Cocoa). You can develop libraries in C or C++ and reuse these from Objective-C using Objective-C++ [stackoverflow.com].

      • by hsmith ( 818216 )
        I converted the ObjC to java utilizing a home grown tool, it doesn't spit out perfectly compilable code, but good enough that a few hours of tweaking and fixing a few oddities (grand central dispatch) it was all working flawlessly. Using SQLite as the data store and avoiding CoreData was a big help, just custom data type objects and custom reader code (I did have to write a custom class to map the cursor reading the data in java). Process would be the same for Windows phone as well. Now, the trouble is, you
  • It's a pain in the but to write code for two different operating systems that have their own look and feel. Duh! And I suppose the guy who wrote TFA thinks he's a boy genius for figuring this one out. And what is this fucking Einstein going to hit us with tomorrow? Newsflash: The Sky Is Blue! Must be a slow news day. Oh, and send the boy genius back to journalism school till he figures out what 'news' is.
  • by R3d M3rcury ( 871886 ) on Thursday January 19, 2012 @10:28PM (#38757638) Journal

    All these people speaking different languages. I mean, like, the French have a different word for everything! It means I have to have hire somebody who speaks some stupid language if I want to sell my software to them. Why can't we just have one language--English, obviously, since that's what I know? It would make my life a whole lot easier and I wouldn't have to spend money translating my software and adjusting dialog boxes for those damn foreigners!

    And don't even get me started on Unicode!

    In case you're missing it, the above is sarcasm. But it leads into an interesting point. How many times have you heard someone complain about having to deal with someone on the other end of a support line for whom English is not their native language? About having to dive through some weird accent in order to understand what they're saying? It makes customers not want to call their support line, right?

    Similar thing here. I want an application that speaks the language that the OS developers have defined and that I have learned by using countless other apps. While, ultimately, it's about what your app does, if I have to choose between an app that has a native interface and one that does not, I will choose the native interface. Just like if I have choice between speaking to Ken in Minnesota or Pruthvij in Delhi, I'd probably choose Ken (at least until I discover that Ken doesn't know his ass from his elbow).

    Want a write-once run anywhere app? Make it a web app. I use plenty of those on my iPhone.

  • We've been doing cross browser development for years. This is pretty much the same thing. Only without the ability to copy and paste things in the ui itself. I'm still waiting for these mobile platforms to catch up to where webtv was a year after microsoft purchased them.
  • Cross-platform desktop development is no picnic either. I once had to write a simple computer hardware check script - figure out what's in the machine, check against a list of programs, then spit out some XML. Came out to ~200 lines of Perl code for the Mac version, and ~150 lines of C for the Windows one. Not a single line of code was the same. Did I complain?

    Well, yeah, I did complain, but more about how retarded Microsoft's APIs are than about having to rewrite stuff.

    I'm also working on a video game in m

    • Of course Microsoft must be incompatible for the sake of being incompatible, for instance the only one of the "big 3" OSs that doesn't support pthreads(and thus a whole bunch of otherwise cross platform C code) is....drumroll please....Microsoft!

      Now that C support in Android is getting better and better, it is completely possible to write the bulk of your program in cross platform C/C++, and only have to add in the UI hooks for the individual platforms. Of course this leaves out WP7, but really, with a c
    • by hitmark ( 640295 )

      Never mind things like ALT+number is tab change in Linux Firefox, but CTRL+number is what is needed in Windows...

  • Mobile? (Score:5, Insightful)

    by slasho81 ( 455509 ) on Thursday January 19, 2012 @11:14PM (#38757818)

    This should have been: The Headaches of Cross-Platform Development. It's not just a mobile thing. Today, if you're developing any kind of client-facing software then it's not just Android vs. iOS vs. WinPhone vs. BlackBerry. It's also PC vs. Mac vs. Linux. with IE vs. Chrome vs. Firefox vs. Opera. And of course, all of these on different devices with difference capabilities, most notably different screen sizes and input methods, and deployment options. So much wasted time and effort.

    We were on the right path with webapps for a while, but then suddenly native apps became all the rage. The worst "feature" by far of native apps is they have to be installed - the deployment issue is practically gone with webapps, but contained apps let you charge people for installation, so we went back to that.

    I pray HTML5 manages to become a capable and dominant platform for the sake of both users and developers.

    • Re:Mobile? (Score:5, Insightful)

      by ceoyoyo ( 59147 ) on Thursday January 19, 2012 @11:55PM (#38758046)

      Webapps are like cross platform apps, but on top of that they're crammed into a medium that was never meant for them, so instead of being just non-ideal they truly suck.

      The only people who like web apps are the ones who don't have to use them (managers) and people who liked the idea of being able to get their e-mail anywhere, before everyone started carrying smartphones with... a native e-mail app.

    • ahhh yes do I reply or do I mod... Damit!

      I pray HTML5 manages to become a capable and dominant platform for the sake of both users and developers.

      You may pray but your prayers wont be answered. Well they might, but I seriously doubt it. The problem with whole web thing is that it is stateless. It is really as simple as that. There are tons of kludges to try an imitate a statefull connection but they are all hap hazard and only barely effective. The other problem are actual data aware components. Sadly even html5 does not address this. There should be a control type that accepts a mask like almost every

      • You know, I'm not ready to go public, but I've made a solution for html that does present an actual stateful app feel while keeping all the best of css, etc. And just what you outlined. It is possible. Out soon...

    • Until wireless carriers stop nickle and diming for data, apps are going to be the way of the foreseeable future.

      Install all you want on wifi, it keeps data tx/rx needs smaller while on the go.

    • by GauteL ( 29207 )

      "This should have been: The Headaches of Cross-Platform Development. It's not just a mobile thing. Today, if you're developing any kind of client-facing software then it's not just Android vs. iOS vs. WinPhone vs. BlackBerry."

      True, but for desktops, cross-platform development is considerably easier, and is, in many ways a solved problem. I.e. Qt [nokia.com]. However, for Android and iOS development, you have to deal with different programming languages for the UI.

      For Windows Phone 7, this is even worse. On both iOS and

  • by Anonymous Coward

    This seems to work pretty well across platforms. Fast native compilation to binary same as C++ (NO JIT) via LLVM on both Android and iOS. Full access to the native API's. A pretty nice generational partially copying gc. XNA and OpenGL across all platforms. Full source debugging and profiling on all devices and simulators.

    Only problem is that full binary compilation breaks some standard libs that depend on using the JIT, some occasional bugs, and I'd personally prefer to see the device API wrapping full

    • Re: (Score:2, Informative)

      by Anonymous Coward

      (posting AC since I moderated a couple earlier posts)

      Indeed, using MonoTouch [xamarin.com] and MonoDroid [xamarin.com] sound attractive. Even if it isn't perfect or you don't get full API coverage, at least (most of) your core app functionality could have a single codebase for most platforms (from mobile to desktop and web), and then just code the UI/platform specifics.

      MS would be wise in helping the Mono project grow, increase the level of API support on more platforms (ie, at least to the level of the Compact Framework), so they can

    • Yeah... But you still end up writing 2 different UI implementations that require design considerations and knowledge of the UI to fit in.
      Monotouch and Monodroid are in no way interchangeable, beyond C#(or whatever Mono language they can use).
  • by trevdak ( 797540 ) on Friday January 20, 2012 @01:52AM (#38758486) Homepage
    I work at a mobile technology company. While our focus is more on WAP and shortcode stuff, we do a number of applications for iPhone, android, windows mobile, and blackberry. You know why it's not a headache? Because everyone involved knows to treat each version for each OS as a whole new piece of software. You rewrite the UI from scratch according to what works best with the phone, recycle the web services, and charge the customer for each app on each platform.

    No, you want a nightmare? Imagine you had to write one app that compiled and worked on an Android, iPhone, windows phone, and blackberry. Then you're dealing with the headaches of a web developer.
  • cross-platform development is not hard.

    the issue is when a developer focuses on one platform; utilizes special functionality and then says "oh.. i need to support that platform to". this is purely a design problem; not an industry problem. if you know, you need to support multiple platforms - one key word.. ABSTRACTION. separate platform code from business logic. that way; when you need to add a new platform, you have a small layer of abstraction to implement appropriately.. games are easier, as UI isn't an

    • by Shados ( 741919 )

      There's absolutely no technical challenge in doing crossplatform development for mobile, relatively speaking, so abstraction won't help. As said in the summary, the problem is the user expectations are different, and no amount of technical solutions will help.

      You said it yourself: "its a design problem". Thats just the thing: 99.999% of the challenge is the design. Coding is the trivial part that anyone can do.

  • I'm not particularly interested in native development, maybe I should be, but I've looked at a number of technologies, initially Flex with deploy via Air, then Phonegap [phonegap.com] and finally settling on Appcelerator. [appcelerator.com]

    Particularly for slower Android phones, Phonegap HTML5 apps really suck with many reviews having the classic "really like the app, but it was just too slow to be use-able". This is a killer and this issue will go away in the first world, but will never go away in the developing markets, just look at Aaka [wikipedia.org]

  • Web apps will never become the best platform as long as they are built on javascript.

    What a piece of shit language. I have used it and I truly hate it.

    I'm not the only programmer who feels this way either. Google is trying a few things to reduce or even eliminate programmer usage of JS. Have a look at their Dart language or their Native Client initiative.

    If a web browser could be properly sandboxed (like native apps are right now) and the webview widget could run native code instead of JS in the sandbox, th

  • So.. We need a way to design one car that works everywhere and follows the guidelines of the country, state, region while still feels natural.

    1) Since the car will be driven in both American and European areas, the steering wheel must work whether you drive on the left or the right side of the road, and automatically know whether to display miles or kilometers.
    2) Not every road is the same size, so we need to compensate for when you go down long, narrow roads, or if the road is wide so you can see more, wha

To stay youthful, stay useful.

Working...