You may have heard scary stories about how much more time it takes – and how much more expensive it is – to develop an Android app than to develop an iOS app. But in fact, this is not quite true. With plenty of frameworks available, modern-day Android app development doesn’t take much longer than iOS app development. But in fact, that’s not quite true. With plenty of frameworks and libraries available, developing a modern-day Android app doesn’t take much longer than developing an iOS app. At Yalantis, we use Kotlin instead of Java for most projects, which greatly speeds up development.
We’ll walk you through the best Android frameworks, libraries, and SDKs that we frequently use here at Yalantis.
Open source tools
There’s a common saying that quality doesn’t come cheap – but actually, we usually work with free and open source frameworks and libraries that have already gained a good reputation in the developer community.
ReactiveX. You can’t get around functional programming when you develop an app. ReactiveX combines the observer pattern, iterator pattern, and functional programming all in one. It’s a core framework that makes it easy to combine front end and back end, and it’s available for most platforms. We use this framework in most of our Android projects.
Realm is a powerful framework for mobile databases. It can replace the cumbersome SQLite while being much simpler and faster. With well-written official documentation and simple setup, Realm promises to save weeks of development time. As an added bonus, search speeds with Realm are much faster than with other database frameworks. In terms of the user experience, this means a faster, more agile app.
[Main components of Retrofit]
Cicerone is a lightweight extendable Android library geared toward making navigation in Android apps as easy as possible. The fact that it’s a library means there’s no need to extend its classes. Cicerone transmits all navigation commands to the Android framework and keeps the navigation command order when an app works in the background. It speeds up development by providing a fast and convenient way to create navigation in an app.
Dependency injection frameworks
Dependency injection is a concept according to which one object supplies dependencies of another object. It allows a service to be used or injected completely independent of client consumption.
Dagger 2 is a fully static dependency injection framework. Even though it creates a lot of boilerplate code, it generates a fully traceable source code that mimics code that a developer might write by hand. Dagger is based on annotations, so the generated code is easy to read and debug. Its high performance due to the compile-time injection makes Dagger 2 a leading solution for development for Android platform.
The Koin framework is written in pure Kotlin. It boasts speed and readability and makes it easy for developers to create and use modules. Koin has good support for lazy injection and ViewModels. Also, it generates much less boilerplate code than Dagger 2. Koin is ideal for small projects.
Picasso is a popular framework for image loading that displays and caches images. Image loaders are used in all apps that work with images, such as photo editing apps, social apps, dating apps, shopping apps, and other apps that include even just personal profiles with profile pictures.
Fresco is a library for loading images created by Facebook. It works faster than Picasso and doesn’t slow down the app in the process. We’ve used Fresco in our latest projects for this reason.
Glide is a fast image loading library focused on smooth scrolling. It supports decoding and displaying video stills, GIFs, and images. Thanks to its simple API, most requests can be made in a single line. Glide mainly aims to make scrolling a list of images as smooth as possible. It’s a good solution for resizing, fetching, and displaying images.
Social media integration
The Facebook SDK offers many different features: Facebook login, sharing, graph API, app links, app invites, ads, and Audience Network. The Facebook SDK adds marketing value to your app. If you want to take advantage of it, take a look at our article on how to market and promote your app with the Facebook SDK.
The Twitter SDK offers similar features to the Facebook SDK: Twitter login, sharing, analytics, links, and ads. Most apps use Facebook login, as more people have Facebook accounts than Twitter accounts. However, the Twitter SDK offers more than just login functionality. It also makes it easier to share in-app content through tweets.
Tools backed by Google
Since Android is powered by Google, the tools Google offers to app developers are quite useful:
Google Play Services is a broad framework containing Google-powered features such as Maps, app invites, and ads. This framework updates automatically through the Google Play Store, so it’s easy to maintain. Since the functionality is so broad, it’s possible to use Google Play Services in most apps.
Google Analytics is used to gather information about user behavior. With Google Analytics, you can measure your app’s success, tailor your app to your users’ needs, and improve your product strategy.
Crashlytics is a framework for crash reporting that’s now part of Google Firebase. It works in real time, delivering detailed reports on all crashes. Moreover, it provides information on which issues are the most important to fix. With the aid of Crashlytics data, you can immediately address problems to make your app work seamlessly. Crashlytics is easy to implement and neither slows down your app nor crowds it with unnecessary data. Crashlytics offers support for native crashes and errors. Crashes can and do occur in any and every app. That’s why Crashlytics should be a core framework for all Android apps.
Android Jetpack, introduced at Google I/O 2018, is a useful collection of Android elements for native app development. It contains the best frameworks for android apps development that significantly facilitate the development process. Being early adopters of new technologies, we’re actively using some of the Jetpack components that are currently in alpha versions. LiveData is an observable data holder class. Since it’s lifecycle-aware, it takes into account the lifecycle of other app components. It ensures that an app’s UI matches its data state and that everything works seamlessly in case of configuration changes (for instance, if the device rotation is changed). ViewModel is a class for storing and managing the lifecycles of UI controllers like fragments and activities. Lifecycle-aware components enable developers to produce well-organized, lightweight code that’s easy to maintain. These components perform actions in response to changes in the lifecycle status.
[Components of Android Jetpack]
Android Data Binding offers simple field and method binding for Android views and lets you move UI logic to XML. This makes code more readable and simplifies development. Android Data Binding is now part of the Android Jetpack collection.
Room is a persistence library introduced by Google in 2017. Now, Room is also part of the Android Jetpack collection. It provides an abstraction layer over SQLite to solve the main issues of this popular mobile database. Room allows developers to implement SQLite extensions that support encryption (the SQLCipher plugin). It also boasts easy data migration and multithreading.
AndroidX is a major improvement of Google Support Library which ensures compatibility. When developing an app, you’ll naturally use a modern UI that supports the latest Android version. However, your UI might not support older versions of Android. That’s what Google’s AndroidX is for. With the help of this tool, you can make a new UI compatible with older versions of Android. This lets you make your app available to the largest number of users. Now, it also became a part of Android Jetpack.
Android Architecture Components is a collection of libraries released by Google in 2017. This tool makes implementing complex navigation in apps as easy as possible. Its components can simplify storing and managing UI-related data. At Google I/O 2018, Google introduced a new library called Navigation Architecture Component. This library has a Navigation Editor that makes it easier to manage deep linking, fragment navigation, and the back stack.
Unfortunately, not all excellent frameworks are available for free. The paid frameworks we most frequently use are for app analytics. While Google Analytics is free, it’s not the best analytics framework for mobile apps. It works better for websites. We suggest that our clients use either Mixpanel or Flurry analytics:
Mixpanel provides basic functionality for free. But at some point, you’ll need to upgrade to a premium version. Unlike Google Analytics, Mixpanel tracks events instead of page views. You can use Mixpanel to track an individual moving from step to step in a funnel.
Flurry analytics, developed by Yahoo, allows you to track in-app user actions to understand and visualize usage trends. Some may argue that Mixpanel has more convenient conversion funnels than Flurry, but we’d say it’s a matter of taste.
Tools made by Yalantis
It’s great to save time by using prebuilt frameworks, but sometimes existing solutions don’t meet our demands. In this case, we develop our own solutions for internal use by our team. Sometimes we even make these solutions open source to help other Android developers build their apps.
Our Android Templates are useful but not yet available to anyone outside of Yalantis. We have two templates: one is based on the MVP architecture and the other on the MVVM architecture. We choose one of these templates depending on the team and project requirements. The templates store base classes, libraries, implementations, and managers.
[Our uCrop library]
You can check out more Yalantis libraries on GitHub.
As you can see, there are plenty of android app development frameworks and libraries that can help you develop apps much faster and cheaper than you probably thought. We’ve told you about some of the best frameworks for Android app development. So what are you waiting for? The Android market with its vast potential awaits!