As we enter into this final week of the decade, I wanted to look back on the year and reflect on the state of Android Development in 2019. What were the major updates? What were the trends? How are developers building Android apps, and how have their tools evolved?
Let’s explore some of these topics and set the stage for the current state of Android development as we welcome 2020 and a new year as Android developers.What Android development tools, updates, and trends had you most interested in 2019? Click To Tweet
Native Android Development in 2019
The world of Android development continues to evolve as it serves over 2.5 billion devices worldwide. This evolution certainly keeps developers on our toes as we adapt and stay current on updates to Android versions, tools, libraries, patterns and more.
In 2019 we saw a number of exciting updates in the world of Android development that promise to have a lasting impact on the Android community going forward in 2020.
This year, we saw the official release of Android 10. As always, this new version of Android adds new features, apis, and security improvements. A few of the more notable updates in this release include:
- Full support for gesture navigation
- Dark theme
- 5G support
- Improved location permissions control
- Enhanced biometric support including face authentication
While new features and apis were added in Android 10, with this OS release we also lost something that many developers are sad to see go: dessert names for each Android release. Personally, I will miss the fun and surprise that came along with the dessert names, but think it’s probably much less confusing and inclusive for the global audience that is so important to the Android ecosystem.
Will you miss the Android dessert names going forward?
As more and more developers migrate to AndroidX, the teams at Google have been hard at work improving, adding, and creating new libraries and tools for us.
According the the AndroidX release notes, there were nearly 400 public AndroidX releases in 2019 across the various stability channels. A few of the bigger updates in the stable channel include:
- Autofill 1.0.0
- Benchmark 1.0.0
- RecyclerView 1.1.0
- Room 2.2.2
- ViewPager2 1.0.0
- Activity 1.0.0
- Navigation 2.1.0
- WorkManager 2.1.0
As I discussed in a previous article, all of these updates do pose a challenge for developers; both in staying aware of changes, and in deciding whether or not to adopt updates from channels other than stable.
Personally, I’ve had good luck sticking to beta and stable channels, and am happy to see the evolution of AndroidX; even if it means sometimes taking small steps backwards in order to improve the long term experience for developers.
What 2019 AndroidX releases brought along the most interesting changes?
As most Android developers (at least that I know) seem to use Android Studio, improvements to this primary tool are generally welcome.
Once again, the teams at Google were hard at work this year, and while there may have been some missteps along the way, Android Studio is poised for some exciting updates heading into 2020.
Android Studio saw three major stable releases in 2019:
- Android Studio 3.3 – profiler updates, navigation editor, updated new project wizard, etc…
- Android Studio 3.4 – new resource manager, R8 enabled by default, etc…
- Android Studio 3.5 – major Project Marble performance and feature updates including “apply changes”, updated app deployment flow, ChromeOS support, etc…
In my personal experience, I saw many performance issues with the Android Studio 3.3 release, and found it unusable. Thankfully, moving to the 3.4 Beta at the time fixed my issues, and I’ve found the 3.5 update to be really nice. I very much enjoy the updates to app deployment; particularly the device selection dropdown that is present the the menu toolbar.
As with AndroidX artifacts, Android Studio has regular non-stable updates as well. This past fall, during Android Dev Summit, the Android Studio team announced the first preview of Android Studio 4.0 which promises to bring bing changes along with it.
Android Studio 4.0 includes several exciting features for developers:
Likely the most exciting feature to accompany Android Studio 4.0 is support for Jetpack Compose which is such a big topic that it warrants its own section.
What Android Studio updates did you find most helpful in 2019?
In perhaps the largest demonstration of Google’s recent “Kotlin First” approach to Android, Jetpack Compose was unveiled during this year’s Android Dev Summit.
What is Jetpack Compose you might ask?
Jetpack Compose is Google’s new UI toolkit for Android. Compose is completely unbundled from the existing framework, and written in Kotlin; relying heavily on Kotlin features to provide a powerful DSL for building reactive Android UI. If you’re familiar with building declarative UI in frameworks such as Flutter or SwiftUI, then Compose will look very familiar to you. It enables developers to programmatically build their UI, and quickly test/evaluate the results using composable previews in Android Studio 4.0.
Jetpack Compose has, understandably, creating a large buzz in the Android developer community as it represents a substantial change to how UI is created. With Jetpack Compose, gone may be the days of using XML to define our layouts.
If you haven’t explored what Jetpack Compose brings to the table, you can try your hand with this short tutorial which introduces you to the basics. To do so, you’ll need to install the Android Studio 4.0 preview which includes IDE support for building UI with Jetpack Compose.
What do you think of Jetpack Compose?
Learn Like Never Before
There’s never been more resources available to learn Android development.
2019 saw ~20 Droidcon conferences, a variety of other large conference series, and a handful of independent conferences, all over the world. With many of these events, the talks are recorded and available, free of charge.
Android Dev Summit brought with it a slew of new Android codelabs covering a variety of topics including:
Google and Udacity also worked together to launch a new free course Advanced Android with Kotlin. This course teaches advanced topics like app notifications, authentication, and testing while leveraging Kotlin to build quality Android apps.
If you’re looking for even more learning content out there, there’s a variety of Android material available for free on YouTube; both from Google and non-Googler’s alike:
What’s your favorite way to stay up to date with Android?
The Kotlin Programming Language in 2019
I feel I can hardly discuss the evolution of Android development in 2019 without at least mentioning how Kotlin has evolved over that time period as well. While Kotlin is not strictly limited to Android in any way, Kotlin is a major player in the current Android ecosystem and has a large developer following there.
2019 saw five releases of Kotlin bringing with them a variety of tooling and feature updates:
What have these updates meant to the world of Android?
Well, Kotlin coroutines went stable at the end of 2018, so in 2019, many AndroidX libraries and third-party libraries have added support for coroutines.
Also built on top of coroutines, has been Flow. Flow brings cold, asynchronous streams of data. With Channels and Flows in Kotlin, developers have begun exploring, and debating, the future merits of RxJava within their codebases, and whether or not RxJava can be removed in favor of the more idiomatic Kotlin approach. Like most things, the answer to this likely depends on your situation.
Support for Kotlin DSL build scripts has continued to evolve, and as of Android Studio 4.0, these build scripts are officially supported by Android Studio. Using the Kotlin DSL for your build scripts provides the strong static typing, and familiar syntax of Kotlin to the configuration of your Gradle builds.
Particularly with the 1.3.60 release of Kotlin, improvements have been made for multiplatform Kotlin projects. Multiplatform Kotlin is an intriguing proposition for some Android developers that want to share business logic between multiple application targets. While it’s been possible to ship mobile apps using Kotlin Multiplatform for at least a year (as with the Droidcon NYC app), the continued improvement to tooling is making this much easier. Support for multi-threaded coroutines should help move the third-party Kotlin Multiplatform ecosystem forward, and JetBrains has even announced work on an Android Studio plugin enabling developers to build and debug iOS applications using Android Studio. With this support from Jetbrains, one of the biggest challenges in adopting a Kotlin Multiplatform approach may simply be convincing your iOS team to give it a shot.
KotlinConf 2019 brought us over 50 recorded sessions chock-full of Kotlin updates and information. These updates included announcements, such as with the Kotlin Multiplatform built Space application, feature updates, and deep dives. A few sessions that stick out to me include:
- Opening Keynote
- Compose Yourself: Designing a Kotlin First UI Toolkit
- The State of Kotlin JS
- Shipping a Mobile Multiplatform Project on iOS & Android
- Asynchronous Data Streams with Kotlin Flow
- Migrating a Library from RxJava to Coroutines
A couple of themes that stick out to me as I look through the sessions from KotlinConf include Kotlin Multiplatform, and Kotlin beyond Android. There are quite a few sessions related to building multiplatform projects with Kotlin; with a major focus on mobile with iOS and Android. On the flip side, there are also a number of sessions focused on Kotlin outside of Android:
- Building Progressive Web Apps In Kotlin
- Ktor for Mobile Developers: Fear the server no more!
- Desktop Development with TornadoFX
- Kotlin for Science
- The State of Kotlin Support in Spring
It seems there’s a definite push from JetBrains and the Kotlin community to highlight the use cases of Kotlin beyond just Android. As a fan of Kotlin, this is something I’m very happy to see, and am looking forward to further exploring what I can build with Kotlin.
I’m biased, but I do think both of these could be a great resource for those starting to use Kotlin.
Are you excited about the direction of Kotlin heading into 2020? What features or use cases are you most interested in?
Flutter Development in 2019
I can’t call myself a Flutter developer, having hardly scratched the surface of building apps with Flutter. However, even as a native Android developer, I didn’t feel I could not at least mention Flutter when looking back at the state of Android development in 2019.
At least from my experience and perspective, Flutter has continued to increase in popularity at a very fast pace. In this past year, I’ve received numerous questions about Flutter, and how Flutter compares to Kotlin. Google continues to invest in it, and I seem to see more and more people starting to refer to themselves explicitly as Flutter developers. And looking from the outside in, I can understand the excitement.
Flutter is a pretty powerful tool for building applications on both mobile platforms. I think this approach is particularly appealing as a solo dev or small team, and as a solution for a quick on-off app.
The rate at which the overall Flutter experience is evolving seems to be one of its biggest selling points.
The Dart programming language, with which Flutter apps are built, has seen consistent releases throughout the entire year; sometimes at the rate of weekly and daily updates. Flutter itself has seen 5 major stable releases this year, the most recent being 1.12.13.
The number of Google Developer Experts for Flutter has also continued to increase which is a great step towards evangelizing the technology, and helping developers learn and stay up to date with the rapidly evolving Flutter framework. One nice way to follow these GDEs is to follow this list on Twitter which is regularly updated as new GDEs are announced.
Again, from the outside looking in, one of the most interesting additions to Flutter this year has been the added support for additional platforms beyond mobile. Flutter for Web is now available in the Beta channel, while MacOS support has been added to the Alpha channel.
I’m sure those more active in the Flutter community could provide a much better recap on Flutter’s 2019, but even the few things I’ve mentioned here are enough for me to want to really dedicate more time exploring the current state of Flutter in 2020. Personally, I’d like to think I’m not too overly attached to native Android development, and instead am flexible enough to use the best tool for a given job. With that mindset, Flutter is definitely on my “to learn” list for the coming year.
Have you tried Flutter? Where do you think Flutter is heading in 2020?
More weekly Android discussion
What in the world of Android development are you interested in right now? Join in the conversation in the comments below.
See you next time devs 👋