With in excess of 80 percent piece of the pie, Android is the dominant portable working framework today. It’s running on incalculable models of cell phones and tablets, just as numerous different gadgets. According to this, one would believe that programming for Android is basic and simple. Or then again right?
A couple of years prior, Miley Cyrus was all the while singing blue grass music, Justin Bieber wore his celebrated “Bieber” hair style, Malcolm still played in AC/DC and Android advancement was very intricate. Android designers had a ton of issues with growing even the most straightforward potential applications for Android OS.
Why? Well, my dear reader, problems were everywhere:
- Carriage IDEs – have you at any point attempted to fix your vehicle with a scoop? Or on the other hand attempted to get young ladies while driving your granddad’s 40-year old Yugo? In the Android world, we had an authority IDE for Android advancement – Eclipse, which had a huge amount of issues and could make you frantic quickly. The Eclipse ADT module was simply carriage, slow and unpleasant for more intricate activities. We immediately became ill of it and were appealing to God for a supernatural occurrence.
- Operating system discontinuity – Gingerbread (2.3.7) involved a serious piece of the overall industry (in any event 15-20 percent) of Android OS adaptations. As you definitely know, Android went through complete update with the adaptation 4.0 (Ice Cream Sandwich) – we got new UI components, new APIs for gadget equipment, new screen densities… This brought about us being mindful so as to advance and program our applications to function admirably on the new also old forms of Android. This extraordinarily influenced our improvement cycle and brought about delayed advancement time with more bugs and crashes.
- Slow emulators – We have to test our applications on various Android OS forms and screen dimensions, so we need to purchase in any event 20 diverse Android gadgets. Sounds insane? Alright, so we can utilize emulators. In any case, have you at any point attempted to utilize the default Android emulator? It’s so horrendously moderate that you’ll before long discover yourself including vehicles left before your office while your application is being conveyed to your emulator.
- UI – Android applications were exhausting. On the off chance that you submit lewdness and investigate iOS applications, you will see that they are brimming with life and hues. Everything is enlivened, changing, going from left to right, option to left, etc… Our applications were static, and on the off chance that we needed to improve our UX, the old Gingerbread would have before long executed every one of our expectations and wishes.
But that was like so 2013!
A fresh start
Everything changed last year, and changes were happening so fast that you could easily lose track of them and ask yourself, “When did this happen???” What’s even more important is the fact that the whole Android ecosystem underwent many improvements – we got new hardware (smartwatches), new software (Gradle, Android Studio), new OS (Android 5.0 Lollipop).
Everybody contributed – Google, device manufacturers, developers. Everybody had the same goal and asked themselves the same question: “OK, now we have stable OS, billions of apps with billions of users – how can we further simplify and improve Android? How can we make the development process better?” This is where open access and open source principles have shown their true potentials – everybody can make a change. An improvement. Something new.
It’s hard to summarize all the changes, but I’ve made a list of things which are (in my opinion) the most important:
1. ANDROID STUDIO
Our favorite IDE for Android development finally became stable with the version 1.0. I won’t go into too much detail about why AS is great for the development process because we have already covered this topic in two of our blog posts (first and second). I’ll just say that the Eclipse ADT plugin is officially deprecated and I strongly advise you to migrate all your apps to Android Studio. Hail to the king!
Gradle is a project automation tool which has replaced Apache Ant as a primary build system for Android applications. It has gained huge popularity among Android developers because we can pretty much automate everything with it – from dividing our apps into different flavors, signing with correct configuration, incrementing our build numbers, defining external dependencies and much more.
Because of that, it has become a sort of an “administration” tool, with which we define and maintain our project settings. Gradle is also one of the main reasons for the increasing number of test automation libraries and automate build servers, which have brought the continuous integration (CI) development process to Android OS. But not everything is so rosy – Gradle is also heavily criticized for its speed of execution. It can be really slow on complex projects, but we hope that this problem will be fixed in the upcoming versions and releases.
Google said that Lollipop was the biggest improvement of Android OS since the beginning of mankind, and they were right. Every part of Android has undergone some modifications and improvements, but we are yet to see how users will react to the changes. We had a lot of problems with upgrading older devices to Lollipop, but we hope that this will be fixed in the upcoming versions.
4. LOLLIPOP ON THE OUTSIDE – MATERIAL DESIGN
A lot has been written about bright new Android UI, called Material Design. It’s one of the most important innovations on Android OS in the last few years, which has completely changed the look and feel of our applications. What I like the most about Material Design is the complete change of UX principles – everything is important. There is no such thing as tiny details which can be ignored. We have to respond to every user interaction, click, touch, etc. Because, as Google says, motion provides meaning. We have to be bold, embrace new vivid colors, use animations at every step, large fonts – simply said – we add life to our applications. Also, Material Design is completely adjusted to the Android ecosystem and it adapts to different screen sizes. That’s why our apps have a similar but not the same look on different platforms.
5. LOLLIPOP ON THE INSIDE – ART
Everybody’s talking about design, UI components, animations, colors… But we are developers and we’re interested in what is under the hood. And, oh boy, the engine is pure beauty: a brand new runtime system, called ART. Just for the record, ART is not a new thing – it was introduced as a secondary runtime system on Kitkat. With the introduction of Lollipop, it became the primary system that has completely replaced Dalvik. ART is great because of several things, but I’ll mention only two of them:
- It uses AOT (ahead-of-time) compilation, which means that it compiles the intermediate language (Dalvik bytecode) into a system-dependent binary. This results in shorter execution time of our apps, less CPU usage and less battery drain. On the other hand, the installation process is quite longer.
- It provides multidex support out of the box. Dalvik dex files had one major flaw – they could contain only 65,356 methods. We had to organize our Android applications in a way that the method count doesn’t exceed this limitation. Although this number may seem quite big, if you take into account Google Play services (which are needed in almost every application) and a few external libraries, you could easily exceed this limit. ART organizes your application in a way that it breaks byte-code in multiple dex files which are packaged together in one single APK.
4. ANDROID IS EVERYWHERE
We have started to develop apps for smartwatches, TVs and cars, but why stop there? If you are sitting in your room and having a cup of hot coffee, take a minute and look around yourself. You will probably see at least five things which will run Android OS in the next few years – the TV, laptop, tablet, camera, bicycle, kitchen appliances, thermostats, cars, etc. Android started as an experiment and it has proven that it can be run on every item which can hold a small microprocessor.
5. INCREASED QUALITY OF SMARTPHONES
Smartphones are still core devices for Android OS. For a long time, we had problems with their overall quality. Older Android devices were much uglier and slower than older iPhones – iOS always felt more fluid. This was especially true for cheaper devices produced by a multitude of Chinese manufacturers.
Luckily, the quality and speed of Android smartphones have steadily increased, so today we have a plethora of new devices that are suitable for everyone’s budget and needs. It doesn’t matter if you want a mobile phone with great camera resolution, design, processor or battery – we have it all.
My personal favorite is Motorola Mobility (nowadays a subsidiary of the Chinese computer technology company Lenovo) with their great line of smartphones – Moto X, Moto G and Moto E, which indeed have a really good price/quality ratio. Also, a team at Google is working on a modular smartphone. Project Ara aims to completely shake the Android world and, if all goes well, it probably will.
MOVING AWAY FROM JAVA
As we have finally fixed most of our problems with IDEs and OS versions, we can shift our focus to other Android problems.
IMHO, the most important problem is the core problem of Android development – Java. Sorry, Java Harmony. Which is basically Java 7. Or Java 6. But is not Java. Don’t get me wrong – I strongly believe that Java is a good programming language, but I also think that it’s the right time to think outside of the box. We need to start looking for other programming languages that will replace Java as the primary language for Android development.
Just look at our most important competitor – Apple. They have introduced a completely new language called Swift which combines the best features of several other languages (like Python, Ruby or C#). We already need considerably more time than iOS developers to develop the same app, and now we’ll be even slower.
That’s why we need something new. We already a have few ideas about which language could replace Java. My eyes are set on Groovy. Its syntax is quite similar to Java (actually, it’s built upon Java) and we already have some working prototypes. Also, don’t forget that it is the primary language for Gradle – so why not use it in Android development? Or maybe Scala (which is quickly gaining new users) or Kotlin (Jake Wharton recently wrote a great overview of Kotlin for Android)?
GETTING BETTER AT DB MANAGEMENT
I might likewise want to call attention to one more issue – information base administration API. In the event that you submit disrespect indeed and investigate our rivals – iOS (Core Data, to be more exact) – you’ll see that they have extremely decent techniques and GUI for making information base articles, CRUD strategies, information base change audience members. However, on the off chance that you take a gander at the default Android API – we despite everything haven’t gotten a long way from composing SQL orders which significantly influences our improvement cycle.
Investigating SQL mistakes isn’t so natural – it’s tedious, and we have no GUI for taking a gander at our information base information. In spite of the fact that there are some acceptable ORM libraries (like GreenDAO, ActiveAndroid or SugarORM), they all have their own issues. I have never been totally happy with them – they have been either unpredictable to utilize or something has been missing (like information base change audience members). My psyche is determined to Realm for Android and DBFlow, which I’m trusting will take care of the entirety of my issues and will likewise have shorter execution times.
A ton has changed in the previous scarcely any years for Android. It has developed from a basic OS for cell phones and is presently controlling numerous different gadgets. The reality of the situation will become obvious eventually what will happen to it. Who knows, possibly we’ll even program atomic combination reactors with it. Or on the other hand Terminators. Terminators are more enjoyable.