Are you a mobile developer? Then the first decision that you will certainly make is which of the two mainstream platforms to begin with, iOS? Android? What does the final decision depend on? Among other things, on the previous knowledge that we have a priori or on the ability to adapt to new challenges.
Two of our developers are entering the arena to face these two platforms and to see what advantages and drawbacks developing in each operating system has. Let the battle begin!
A new kid has arrived to class and his name is Swift. He has learned a lesson from everything that us programmers didn’t like, or what was clunky for us, and is ready to facilitate our work with advantages on a visual level (improving the reading of code with fewer unnecessary structures) as well as on a compiler level (providing it sufficient information to optimise memory use and runtime).
And, as if that were not enough, the new guy doesn’t come with empty hands. He is full of new options and functions that will ease our day-to-day work. Now we have playgrounds and we can run interpreted code without having to wait for a compilation. Once your functions are optimised and work how you want, you can move on to generating an optimal compiled code to have cleaner and faster performance than what we’re used to with iPhone.
We have the advantages of code interpreted and compiled in the same language and in the same environment. Such are the advantages of this language that even Google is considering using it for Android. Jorge, you have to get with the times, you can’t live in the past.
Moreover, we will develop all the code inside our IDE and, again, the synergy between Swift and Xcode stands out. In this environment, we also have complete integration with simulators (which have a correct execution speed, and you can’t deny, Jorge, that Android simulators are practically impossible to use) visualizing at every moment, through graphics, our disk usage, processor, and impact on battery consumption.
In this environment, you can also design your interface through drag and drop that really works. Until not long ago we didn’t even need to be scaling components because everything was conveyed to the application exactly as the designer requested and we didn’t make an approximation that would somewhat resemble the original design as happens in Android.
Because it was introduced much later than in Android, it has been possible to develop an environment that is more modern and focused on resolving the problem that brings much more power when the time comes to scale, resize, and locate elements in positions relative to others.
We don’t have pseudo html scaling our components. The anchors and scaling rules are more exact, precisely from having experience with errors in Android. We even have Storyboards that offer us a complete or partial navigation map inside our application.
Devices… Many, varied, each one from its manufacturer and only fully understood in its home, right Jorge. This is the nightmare of Android developers which us iOS developers don’t find ourselves stuck in.
In our ecosystem, if you want to do exhaustive and complete tests, you can do it; in Android it’s practically impossible. In iOS you can always create more robust applications which are more tested and, above all, will give developers fewer headaches.
Things change from version to version and some things remain in the past. But before you leave something out, it is always “deprecated” during two versions. If you haven’t looked at a part of the code in at least two years it means that there is something that can be improved.
This also means that in all new code that you make you can use the new and shiny features that just came out, which is unthinkable on Android. I can’t help but remember an Android conference where they were talking about some new design features that they had presented six months before and the general laughter from the attending audience when the presenter said: “We will be able to use this… within a month”. You live in the past, as a novelty you can use functions from about 2 or 3 years ago. That is undeniable, Jorge.
It’s true that some things aren’t possible in iOS, but in the end the limitations that I find lead to me to wonder if the application should really be doing that and if there isn’t a better way of doing things.
In fact, I consider, just as Microsoft did in its time, that Android is an ideal environment for experimenting with new concepts since it is a space in which “anything goes”, and for this reason it doesn’t seem safe in relation to the final user.
Haven’t you wondered why an iPhone with a battery of 1800 mah lasts the same time or longer than an Android with a 3000 mah one? These limitations help us to have cleaner and more elegant code, which translates to a longer battery life thanks to optimal usage of the available resources.
Security is also a weak point in Android, since it is lawless territory. iOS, on both a user and a system level, demonstrates security over and above the freedom given to the programmer. This results in confidence in the platform and an optimal experience, which allows the user to use more applications (and for a longer time) than the average Android user.
We are also talking about good programming praxis. Many times, in Android threads are left working in the background when it could be done in a more optimal way. Some applications access information from others when they shouldn’t… Let’s say that in Android some level of anarchy always reigns.
iOS inspires greater confidence in the user, besides having a distinct group of terminals, we find ourselves in an environment in which the user is more willing to make purchases without fear of their data ending up in the hands of the typical Russian hacker.
This brings us to the point that a lower number of users generates more benefits. According to this article in Forbes magazine (Sensationalist? Seriously?) the profits that can be earned are double with an iOS application than with an Android one. Even when the number of downloads is split evenly between the two platforms.
Although Spain is an anomalous market due to the excess market share of Android, the international market is something else entirely. It’s no good to me that you tell me that 80% of the market is Android if in the end it’s a target market of people that barely have enough to eat, for example in India or Africa.
If we go to the first world matters look quite different. The United States, as you say, 44% of market share, yes, but the one which is willing to spend money and for a reason as simple as having greater purchasing power.
If Zowi doesn’t work in iOS it is simply because of the cost savings that BQ makes in their components. If they had just used a chip Bluetooth 4.0 instead of the 2.1 that they use, then it could work with iOS. Losing a target with great purchasing power for not spending 50 cents more, on one chip in your 100 Euro product, which in addition optimizes battery consumption, I wouldn’t say that it’s a great success on the part of this company.
For all these reasons, from my point of view, iOS is a platform from which you can obtain better results with fewer headaches. Because of this, iOS has always been the pretty girl for multiplatform application programmers. It’s interesting that most apps come out first in iOS and afterwards in Android.
Dear Héctor, you know as well as I that Android is usually a good option for most people, since the base is JAVA (although it can also be developed in C++, but that requires a higher level of knowledge of the platform).
JAVA is one of the most universal and extensive languages in the development world, as practically all developers will find it friendly and will be comfortable from the first moment. Certainly it is friendlier than Objective C or Swift for most, that you can’t deny.
Development in Android currently requires you to us IDE Android Studio, based on IntelliJ, since Google has stopped supporting the antiquated IDE Eclipse. In any case, the change is not at all traumatic.
The weakest point of Android development, and that which usually scares a new developer the most, is the extremely vast quantity of different terminals that there are in the market, as you rightly say.
While in iOS there is only one manufacturer, Apple (although it has various terminals with different features and resolutions), in Android there are thousands of manufacturers with hundreds of available terminals. Developing for all of them can give you a bit of vertigo, but one advantage of Android next to iOS in this respect is that, since its birth, it has been made with this need in mind and its interfaces have always been made “responsive” so that they can adapt in the best possible way to these devices. This way they manage to abstract the developer from 95% of these problems and allows them to focus on the functional development that is common to all devices.
In iOS this adaptation was made a posteriori, since at the start there was only one resolution and one screen size and they didn’t need to make the interfaces “responsive” from the beginning.
And this, no matter how much you try to justify it, is a fault in iOS that has brought about some really botched jobs in my point of view, like for example that you develop for a fixed resolution (320×480) and later the system “scales” these proportions multiplying x2,x3,x4… etc. If that isn’t improvising, then tell me what is.
At any rate, it’s just as well that iOS copied “responsive” from Android to deal with problems in iOS 6 that Android had solved years before. Is that not the case?
It also scares a developer to know that, perhaps, with a new update of iOS your application could stop working or function poorly because they have changed key behaviours: for example when in iOS 5 they took away the possibility for a TextView to be Clickable, I remember colleagues of mine fuming as they recompiled all versions of their apps and uploaded them again because they were no longer working well.
We both know that in Android this is much less likely to happen, given that Android includes all the virtual machines of all previous versions so that no function of an already uploaded app will be altered by a change in some component of a new version.
Android is a more open and “free” system for developers, allowing them to create apps without so many obstacles, being able to have a much wider control of the terminal in an app than in iOS.
In many cases the restrictions that Apple imposes on developers can mean that they have to contact the platform directly or, frankly, that they can’t work in the Apple system because they don’t comply with the standards that the company imposes.
In regards to security, just as you yourself say, Héctor, it has been more challenged in Android than in iOS. In the first place, I’ll say that in Android the system lets you choose the level of security that you want.
If you want to install “unsafe” applications at first it is blocked, but you can deactivate the security if you desire. The terminal is yours. In iOS, Apple decides how you have to use your mobile, I say no more…
In the case of Android, being an open system, and with its source code available to anyone, it is easier to detect a vulnerability to exploit. But it is also true that it is easier for a developer to analyse and that if they find a bug, they can fix it.
A system cannot base its security on the fact that the source code is not available nor does it make it more secure in and of itself.
Another point to keep in mind is the cost of the development tools. While iOS requires a Mac (and not exactly the cheapest ones, whose hard disc soon fills up just from updates of the XCODE …) and paying $99 for an annual license, in Android any current equipment will do (even costing just €300), and the license is €25 in a single payment to publish to Google Play, allowing you to also distribute through alternative channels (for example the Amazon Store).
If we talk about the distribution potential of an app in each one of the systems, Android dominates the global market. It’s true that in the USA the market is similar (53% Android, 44% iOS), but in cases like Spain the difference shoots up to ten times more: Android 91,2%; iOS 8,3%, in June 2016.
On a global level, Apple has 13% of the global market, and Android around 80%. As you can see, Héctor, the Spanish market is not an “anomaly”. In fact, at the global level it is more similar to the average than the USA; and we’re definitely not talking about a ratio of 2:1, but of more than 6:1.
In any case, Héctor, speaking of which platform is more profitable, here there could be much to discuss. As you mention, traditionally it has been said that iOS users are more predisposed to buy apps than Android users, little by little this is being diluted. In fact, many of the applications and games are already free with micro-payments, and in the case of Android, apps reach a much larger potential audience.
On the other hand, most applications are not “direct purchase”, such as service apps (Facebook, Whatsapp, WallAPop, Spotify, Netflix…), store apps (Amazon, Ebay, Carrefour), or apps paid directly through advertisements inside the app itself.
In fact, Héctor, I would tell you to do an exercise on your personal mobile. You will see how 90% of your own applications ARE FREE, and this hardly makes it justifiable that it’s “more profitable” to make them in iOS (I repeat, 14% of the market) than in Android, given that this is a large part of applications, profitability is seen in an indirect way and is directly proportional to the number of users that they reach.
For this reason, sensationalist articles, like the one from Forbes, are not very helpful, because they only take into account direct sales of apps, because calculating the profitability of a “free” app or of services is practically impossible.
Additionally, in Android you can make almost any app that you can think of and in iOS the platform is going to prevent you from making certain types of developments. And if not then someone should tell BQ and their robot Zowi, incompatible with iOS because the platform blocks them from some low-level uses of Bluetooth.