Mobile Zone is brought to you in partnership with:

I'm an author and a developer focused on build tools. I'm currently focusing on Gradle, but I have an interest in all build tools and most development infrastructure. I focus on Enterprise Java, Ruby, and the interface between Systems Administration and Software Development. The focus of my work is to make it easier for individuals to adopt open source software. Tim is a DZone MVB and is not an employee of DZone and has posted 41 posts at DZone. You can read more from them at their website. View Full User Profile

Comparing XCode and Android Developer Tools: Google's Catching Up

  • submit to reddit

On the one hand you have XCode.  XCode is still very much the most integrated IDE for mobile development. It takes a while to master the tool, the language, and various external frameworks like AFNetworking.  The construction of the tool and the nature of the API encourage a sort of "incantation-based programming" approach which relies on copying examples from others.  How do I customize a UITableView?  Google it, find the example, copy and paste it, maybe once you've got it working try to understand the mess of Objective-C you just threw into a file editor.  

Incantation-based iOS Development

Admit it, this is how you develop iOS applications.  There are maybe a handful of you out there that have attained black-belt status with Objective-C, but the majority of you just search for the spellbook that has the incantation to invoke a Navigation Controller.  It isn't like you are going to master the API and understand the nuances of iOS.  I mean, really, the "Programming iOS 6" book from O'Reilly is thicker than the Sendmail book at something around 1150 pages. (It's a good book by the way, you should go get it.)  

Don't get me wrong, I think Apple has created a wonderful platform. Unlike many iOS developers, I'm a big fan of the Storyboard interface, Segues work fine for me, and I find it much easier to create a good UI now than it was years ago, but the platform is so highly orchestrated I don't see it as programming as much as I see it as filling in the blanks. This isn't a criticism. It really isn't even a negative, I think that Apple has encouraged a huge library of great applications because they provide very strong guide rails for developers.

From a developer tools perspective, I only have two complaints:

  1. To Publish an application to the iOS App Store is to understand Kafka-esque, bureaucratic indirection. From creating a certificate, to creating a provisioning profile, to making an application bundle, to running several UI tools on your machine to integrate with the process.  In the end it works, but it seems like a lot of machinery involved in something that could be simpler. Half the steps I complete in this process I don't fully comprehend.
  2. While the UI experience in very integrated, I feel like the command-line tools could use more focus. Unlike Android Studio and Gradle, I can't just pop out to the command line and run the same build.  Instead I have to fish around for commands, watch some WWDC presentation which involves Jenkins, and juggle things like CocoaPods.  (CocoaPods BTW is awesome, and I'm not criticizing it, I just wish something like this were integrated with the toolset.)

Android's Catching Up and Running Fast

On the other hand you have Android which recently switched over to Android Studio along with Gradle. I had zero warning of the move to an IntelliJ-based IDE prior to Google I/O, and I was surprised as anyone. Also, I would have never predicted the move to IntelliJ. Google's invested so much in Eclipse-based development, it must have been a difficult decision to cut and run. I know that you hear some of the core Android people talk about continued support for Eclipse, but I find it hard to believe that Google as an organization is going to provide full support for two different IDEs when they are in a competition with Apple's singular focus on XCode.

I don't know anything about internal discussions, but I can only assume that they reached a point at which they decided that no amount of money was going to get a great IDE experience based on Eclipse.   So, now that Tor and company are focused on IntelliJ, it'll will be interesting to see how quickly Google can catch up with XCode.

The two criticisms I have of XCode are the two things I like about Android Studio:

  1. Publishing an APK is almost too easy and the IDE doesn't get in the way. While publishing an iOS application involves running a distribution UI tool on your OSX machine, Google Play just has a website that accepts an APK upload.   (It's also much easier to publish and application because there's no multi-day review cycle.)
  2. I can jump to the command line, run the build in Gradle and its the same thing I ran in the IDE. Also, unlike XCode I don't have to break out of the tool chain to manage external dependencies.  There's no CocoaPods here, there's no extra-Ruby-based thing I need to use because Gradle takes care of it.  This unification feels better to me as a programmer, once I'm ready to build and deploy I can run a command instead of right clicking on some interface.

The Distribution Story is the Biggest Difference

In XCode I have to fiddle with certificates and provision profiles and then I have to use the tool to distribute the application.  It doesn't feel transparent to me, and I'm not exactly sure what's going on until I see the application in iTunes Connect.   Again, I'm not complaining, the tool works wonderfully.

In Android, I run "gradlew assemble"   I look for the APK, run jarsigner and zipalign... then I upload the APK to Google Play.  24 hours later I had an App in and App Store.  I think the simpler distribution story coupled with the accelerated adoption of Android will be Google's competitive advantage going forward.  I know people complain about malware, but I haven't seen this problem.

Published at DZone with permission of Tim O'brien, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Rob Williams replied on Fri, 2013/05/31 - 10:29am

Wow, so because you can go to the command line, Google is catching up?? and what part of Android Studio is google? The I/O presentation seemed to make it pretty clear they have just tacked gradle in so far but 'have big plans' (typical Google line).

When do you think they'll have:

  • a simulator that's comparable
  • storyboards or the like
  • all the drag and drop functionality in Xcode between forms and code
  • something like Instruments
  • all the stuff that Cocoa has like collection views, autolayout, etc.
Seems to me like they will have to really go nuts to catch up, and I predict the gap is going to widen in 2 weeks.I do hate the release stuff in iOS, but like most things of that ilk, I hate it when it fails. The thing you really have to keep in mind is when you have messed things up, don't fix them, start over and make each thing again, it takes like 20m, then it works each time with no fiddling.I totally disagree about how Cocoa and O-C is a huge rambling mess and you have to program by search engine. There's no competition on that front. Cocoa is so much smarter and better designed as a framework than android it's laughable. And the documentation is superb, and there are tons of examples, that you click on, they download AND run in less time than it takes to get a single run through the horrible Android 'emulator.'

Tim O'brien replied on Fri, 2013/05/31 - 11:07am in response to: Rob Williams

I've got two applications, one Android, one iOS.   The Android application has weekly development cycles, is running on a CI server without effort, and when we're ready to publish to Google Play there are no obstacles.    That team can move very quickly.

The iOS team there seems to be constant problems in the interface between CocoaPods and XCode (with workspaces getting corrupted and having to be rebuilt). When there are problems with the tools, people shrug and do just what you say, they rebuild the project from scratch.   When we're ready to deploy a new version, we have to wait...

I do think Google's starting to level the playing field, but I don't think it will be with Segues and Storyboards.

Rob Williams replied on Fri, 2013/05/31 - 11:40am in response to: Tim O'brien

Right, which is what I said: your version of the playing field is automated build. I'm not even criticizing that; I'm a huge believer in everyone has their own perspective and should have their own values. I am just saying extrapolating that out to the general case makes no sense.

Mohammed Hewedy replied on Wed, 2013/06/05 - 12:30pm

Actullay, I have go throught the upload ipa files to apple store and don't find it that messy.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.