Tale As Old As Smartphones: Android vs iOS Development
The old rivalry, Android vs iOS, Google vs Apple.
Almost everyone who buys their own smartphone will have a very strong opinion about which platform is the best, and in this post, I will try to light up this rivalry a bit more, not in relation to the operating systems themselves, but to the development process for each one of them.
Being a person who started my mobile experience developing for iOS and being developing for Android in recent years, I will try to report what I learned about the main differences between the two when it comes to app development. This post does not intend to go into details, but rather to be a small guide for those who want to start mobile development but do not know where to start, or simply for those who are thinking about changing teams.
Therefore, the great advice is to develop for the operating system you have. Easy isn’t it? 😛
Ok, so I’ll give you a little more detail … How about starting with IDE?
The official Android IDE is Android Studio by JetBrains (it used to be Eclipse). This IDE is very powerful allowing features such as analyzing the code of compiled applications, running gradle scripts for the most varied functions, or recording videos from the debugging device’s screen. In addition, it can also be complemented by several plugins. Android Studio is known for making code refactors a lot easier, but also for being a little complex for beginners, and for sometimes using so much processing power, that the computer looks like it’s going to take off.
The official iOS IDE is Xcode (what else). This is an IDE that sometimes looks like it can program for us with its highly evolved code completion system. It also has an excellent storyboard system (where layouts and interactions between them are created) and a simple property list (where general application properties are defined; similar to the Android manifest file). It is not common for an Android developer to use the visual layout editor, as they usually prefer to directly edit the xml code. An iOS developer, on the other hand, has little choice but to use the visual editor. And yes, Xcode also allows the addition of plugins, but this system is still in a very initial phase.
In conclusion, Android Studio = POWER; Xcode = USABILITY.
The programming languages
The programming languages for Android are Kotlin and Java, and for iOS, Swift and Objective-C. Java is Java, and it is no wonder that it has remained one of the most used languages for years. As for Objective-C, I honestly never interacted much with it, but it seemed to have an unnecessarily complex syntax. Kotlin and Swift are very similar and are the languages currently supported by the respective operating systems, which is good, since they greatly simplify the code of mobile applications.
Kotlin allows you to do almost anything, which is sometimes annoying (are so many ways of creating a class really necessary?), and Swift is in constant development, with its new versions not being backwards compatible with the old ones. This keeps the language up to date, but the applications under development get old quickly. A little like iPhones, right?
Therefore, Java/Kotlin = STABILITY; Objective-C and mainly Swift = FRESHNESS.
Patterns and tools
If you have programming experience and are going to start developing for Android, the advice is to use the MVVM design pattern. This is a pattern that offers great organization to the code, since all tasks end up being well delegated by the different components. However, it can be a little complex for beginners to deal with observers and that kind of stuff. If you’re going to start developing for iOS, the advice is to use the good old (and confusing) MVC, although Apple seems to no longer officially support this standard . What Apple seems to support, however, are the “Protocols”. These are structures similar to the interfaces but a little more advanced, being able to specify properties, and to be used by both classes and structs.
Android programming is based around Activities (which represent the different screens of an application) and Fragments (pieces of UI with behavior that can be inserted in Activities). On iOS, all views are associated with a Controller, where often the UI options that are not possible to achieve only through the storyboard have to be complemented by code. iOS also uses xibs, which are pieces of layout with their own logic that can be used, for example, as cells in a list. In Android this is achieved with ViewHolders in conjunction with adapters to deal with the lists’ logic.
If you’re going to venture into the world of Android development, take the opportunity to use the new Android Jetpack, which is a collection of various libraries created to help developers make apps more easily. If you are going to venture into the world of iOS, you will probably come across CocoaPods, which is a dependency manager for iOS and Mac projects.
Android stuff = ORGANIZATION; iOS stuff = SIMPLICITY.
Finally, when your app is finished, you will want to launch it on the store, but first it’s important to test it well. On iOS, you have TestFlight, an excellent online service that allows you to test and collect feedback before launching the app using testers selected by the developers themselves.
Publishing to the Android store, named Google Play Store, is much cheaper, as you only need to pay $25 once. To publish in the Apple store, the App Store, it will be necessary to pay $99 every year. The App Store also has more rules that developers are required to comply with in order to publish their applications, which brings security.
iOS users are more likely to pay for apps than Android users, which means it might be a good idea for an Android developer to bet on free apps with ads. And since we are talking about user characteristics, iOS wins when it comes to popularity in North America, Japan, and Australia, and Android wins… pretty much in the rest of the world. In addition, iOS is usually the preference of women and Android of men.
Play Store = CONVENIENCE; App Store = SECURITY.
iOS for those who like to expose their creativity in a simple way and Android for those who want to have more freedom to go into details about the operation of the system, although I have to reiterate that these characteristics are not exclusive to each operating system, but only facilitated by them.
With this, I hope I have not reached an absolute answer on what is the best platform to develop apps, because that was my goal. 😅 Choose the one that you think will be the most fun.
As seen featured in US Development Companies.
Comments are closed