Android vs iOS: which platform is best for developers
Makradar Technologies / / December 19, 2019
Android vs iOS. Eternal theme for online battles, which has already decently all podnadoest. Do not rush to pass the text of the article and immediately move on to the outpouring of his only correct opinion in the comments. Today we will talk again about which system is better, but in a different way.
Developers - those who create a key part of any platform, ie applications. It is the quality of the development tools, it provides a platform depends on the final result. So under what system is better to write? Answer this question an experienced application developer, who had to be lighted in the App Store, and in Google Play.
The choice of platform - a fundamental problem for any new project. Android or iOS? Given the recent news that Android has successfully captured 80% of the market, the choice becomes even more difficult. It does not matter what managers and other not too knowledgeable with the technical aspects of the issue people think about it. Another thing - the developers.
What is their opinion? The advantage of this or that platform is directly dependent on its ability to make their lives better.
And by "they" I mean "our." In addition to the author's activities at TechCrunch, I am developing in HappyFunCorp. Moreover, not so long ago, I created a duet opensorsnyh applications through its project-pet. It is these applications I use for comparison.
For the record: I previously had to write a few Android and iOS applications, both for personal use and for work. In particular, I wrote Mobile client for your news aggregator ScanvineThat collects unusually popular stories from social media. Source code of my application can be found on Github (Android | iOS), And the applications themselves are available in google Play and App Store.
Well, let the battle begin.
Wednesday
You can still write code in a text editor, and many are doing so far, but in terms of performance is more useful to use the IDE (Integrated Development Environment - IDE).
In the case of Apple, we have Xcode, and work in this environment - pleasure. It is flexible, fast, powerful and able to help, without being overly intrusive. And she's getting better, despite the difficult and paranoid measures taken by Apple to retain full control over the iOS applications, and devices. The debugger runs smoothly, and simulation - fast and responsive.
What about Android? Oh, Android. At the moment, the actual development environment under it is the Eclipse, a handful of Android customized plug-ins, and it obscenely bad. Slow, clumsy, illogical, often frankly incomprehensible, badly designed, too complex - a real mess. Its debugger is so inconvenient that most of the time I spend in tinkering with logs, while with Xcode in my possession a real tool-hunter bugs. Do not forget about the emulator Android, which first takes a few minutes to download, and then he could not connect to the ADB.
To be fair to say that Google is aware of this problem and they are working on a new Android Studio IDE:
Currently, Android Studio is available as an early preview. Some functions may not set up, or are not implemented, which might cause mistakes. If the use of the unfinished product is causing your discomfort, then you can download and continue to use the ADT Bundle (Eclipse plugin with ADT).
Nice to see that they are working on the problem, but still surprising - after 4 and a half years after the purchase of my first Android-like mess is still the limit of perfection, which was able to achieve a development environment Android.
Here beats iOS, unconditionally.
Configuring
Under the veneer of Xcode and Objective-C are hidden horrors of Lovecraft from the era of the seventies programming. Just kidding, I'm kidding... but still. Macros, and header files, projects, objectives, scheme and assembly configuration, and terrifying, frightening list of assembly parameters. And more incredible discoveries in the style of "Oh, your third-party code does not support the ARC? Simply add the flag -fno-objc-arc ยป. Just? Not!
In Android you have a manifest file, and Eclipse are usually completely rebuilds the app every time you keep a file. I would like greater clarity when you, for example, you receive an error message due to the fact that properly configure the rule, but it's a minor defect. Configuring Android application is simple and elegant.
Here beats Android.
interface design
It would seem that Apple is definitely emerge victorious. With their designer you can easily and quickly build a simple and nice looking interface. The problem is that the longer I worked with the designer, the less I liked it. This is another time when you open the configuration complexity - tool is ideal for creating simple things, but with the development of Application simple things suddenly become complicated, and I really do not like these multiscreen Storyboards, which Apple added about a year ago.
On Android, the theory is provided comparable visualization tools, but in practice you write XML filesContaining drawing instructions that at a certain luck leads to a correct display of the application on all variety of formats screens of Android devices. Apple is moving the same way, and their auto Layout clearly sharpened for future expansion variations screens on iOS devices.
At the same time, Android gives developers icon setsWhereas iOS developers are forced to turn to third-party servicesOr draw your own icons.
In this round the winner to choose more difficult, but I will give iOS preference for two reasons. Firstly, it is still much easier - just 3 screen size (including the iPad) and 2 format aspect ratio. Android diversity in this respect adds complexity. The second point is the appeal of default of visual elements (pop-up menus, messages, and so on). In iOS it all looks much more attractive.
Here beats iOS.
Tongue
Android applications are written in Java, iOS - on Objective-C. There are exceptions like the XamarinBut in most cases such a division is valid.
I learned to write in Java, and at first not particularly thought about Objective-C, largely due to its bulkiness.
A string like:
String s2 = s1.replace ( "abc", "xyz");
Turns to him in:
NSString * s2 = [s1 stringByReplacingOccurrencesOfString: @ "abc" withString: @ "xyz"];
But in the process discover the language I really liked. He's better and cleaner than Java.
In this case, too, there are pros Java. For example, a simple trap and trace errors. The last few years, Android has been another very significant advantage in terms of waste collection, that is, automatic purification of memory from unnecessary objects, but now iOS knows the same thing, and is actually an advantage come to naught. Given the fact that the last victory goes to iOS here.
Here beats iOS.
API
In Android and iOS have a huge library of software available to developers, and generally speaking, they are quite similar: API for operation of phone functions and communications, the API for access to the network, the arsenal of viewers, including powerful WebView - virtually a clone of the full browser.
Most of the work is done with the controllers, and general iOS ViewController is the equivalent of Android Activity.
Which really do not have Android, because it is a full analogue Core Data framework. On the whole, the system is cleaner and better designed. For example, just compare thesetwo class in iOS, which perform most of the work in the application, with thesethreeequivalent classes in Android. In the end, I much prefer to work with iOS CollectionViewControllerThan with Android ListAdapter.
Another important metric: the number of lines of code. My version of the application for both platforms are virtually identical in features and functions, but in iOS to implement them It took my 1596 lines of code, including header files, and to create the Android version with the same functions required 2109 rows. The difference is 32%.
Here beats iOS.
the Internet
Today, the vast majority of applications are more guides to the Internet, rather than stand-alone programs. This is a very important point, and it should be considered separately. In the arsenal of both systems have a number of tools and API for the implementation of cooperation with the Network. Also both platforms implement virtually full-fledged browser, which can be built into the app as you like and wherever you go.
The connections must run in the background and does not interfere with the application itself. To implement multithreading in Android used AsyncTask. It works very well and allows easy determineWhether the user is on the web at the moment. iOS also offers similar capabilities, but they are implemented at a relatively low level and do not meet the needs of developers.
However, there are many third-party libraries, open source, and they make life a lot easier. I used AFNetworking, and it works just as well as it is referred to in the advertisement.
Here beats the default Android and iOS using third-party libraries.
Sharing
How easy you share the any of the particular application in Facebook, Twitter, Evernote, and other services? It seems that this will be the first round in which Android will win 100% knockout: it has a powerful system of interaction between applications called Intents, and in general, Android is much more loyal to the request and the transmission of data between applications.
In general, Apple has caught up significantly competitor in sharinga opportunities. You can not take my word, check the function code "Share story" in Scanvine on Android and iOS. The only reason why iOS code more - the presence in it of a more flexible tracking of Google Analytics, rather than in the Android.
Then draw.
Fragmentation
Then I do not need to say much. However, Google is trying to use interesting defragmentation strategySo that in a short time the item will be re-examined.
Here beats iOS.
publication of the application
Publication of Android applications is extremely simple. Tool in Eclipse allows you to quickly build the application, and in your hands already have a apk file. Submit it to an email, post online, or download on Google Play, making it available across (almost) the world in just one hour. Then it becomes possible to monitor installations statistics and crash-reports up to a specific line of code, due to which the application crashes. If necessary, you can update to roll out instantly.
Publication in the App Store - it's a nightmare. My friend advises to allocate to the development of the calendar at least a day on the war with certificates and distribution profiles. No matter how many times you've done it before, and how much easier it is trying to make the process of the next version of Xcode - you will still be many problems. Application testing becomes even more of a problem, unless you use TestFlight. Add to this the iTunes Connect, which does not go to any comparison with the Google Play Developer Console.
Here beats Android, unconditionally.
Winner
It becomes iOS, moreover with a certain margin. We have the advantages of Android, but in general to write a good application for iOS is still much easier than under Android. Add to this the fact that iOS users more than solvency, and you get an answer to the question of which platform should be a priority for a startup. Probably, the gap will be reduced after the release of Android Studio, thus allowing to solve some problems... but not all.
By the way, my main phone - Nexus 4, and I am very pleased.
(via)