Loading...
Home
  • Tech Blogs
  • Videos
  • Conferences
    • Droidcon News
    • Upcoming Conferences
    • Become a Partner
    • Past Events
    • Keep Me Informed
    • Diversity Scholarships
  • Community
    • droidcon Team
    • How to Hold a Droidcon
  • Android Careers
Sign In

Global CSS

Android News
Evolution of Android Update SystemEvolution of Android Update System
Evolution of Android Update SystemEvolution of Android Update System

By Ivan Kuten

So, how can you update Android on mobile devices? While developing software for Smart TVs and Android-based set-top boxes, we’ve narrowed it down to four ways, discarding some very exotic options:

By ProAndroidDev -
Android News
Happy Railway
Happy Railway

By Hadi Lashkari Ghouchani

This post is on the tail of Railway Oriented Programming in Kotlin by Antony Harfield. So you need to read it first and continue here. As it’s obvious I really liked it and tried it out. It needs every process have a result like

By ProAndroidDev -
Android News
Unit Tests and Concurrency
Unit Tests and Concurrency

By Stojan Anastasov

Once Retrofit added RxJava support, RxJava became my go-to concurrency framework for writing Android apps. One of the great things about RxJava is the excellent testing support. It includes TestObserver, TestScheduler, RxJavaPlugins so you can switch your schedulers in tests.

By ProAndroidDev -
Android News
When Compat libraries will not save you
When Compat libraries will not save you

By Danny Preussler

And why you should avoid using the “NewApi” suppression! The idea of “Compat” libraries was probably one of the key aspects of Android dominating the mobile space. Other than with iOS, Android users often could not update their operating system after a new version launch, simply as their phones won’t allow them to, the Android problem of fragmentation.

 

By ProAndroidDev -
Android News
AndroidX Lifecycle on steroids aka multiple inheritance
AndroidX Lifecycle on steroids aka multiple inheritance

By Alexander Shafir

Per AndroidX Lifecycle docs: Lifecycle-aware components perform actions in response to a change in the lifecycle status of another component, such as activities and fragments. These components help you produce better-organized, and often lighter-weight code, that is easier to maintain.

By ProAndroidDev -
Android News
Building complex screens in a RecyclerView with Epoxy
Building complex screens in a RecyclerView with Epoxy

By Eric Ampire

The RecylerView is one of the most used Android components when it comes to displaying a list of items in an Android application, and since the arrival of Jetpack in the Android ecosystem, some libraries have come to life to simplify its use.

By ProAndroidDev -
Android News
Structural and navigation anti-patterns in multi-module and modularized applications! The case against Android Clean Architecture and the domain module
Structural and navigation anti-patterns in multi-module and modularized applications! The case against Android Clean Architecture and the domain module

By Gabor Varadi

Merry Christmas to all! The subject of this article is one that has been on my mind for a very long time. After all, “Clean Architecture” is often seen as the end goal, the hallmark of the finest of Android application code structure — it is the best of the very best. 

By ProAndroidDev -
Android News
Abstract and Test Rendering Logic of State in Android
Abstract and Test Rendering Logic of State in Android

By Ankur Gupta

State is a crucial part of any frontend application. We do not want the UI to end up in an un-intentional, glitched, or lose state, no matter what the user does. It is where predictable states come into the picture.

By ProAndroidDev -
Android News
Quick Tips to Start Using ExtendedFloatingActionButton
Quick Tips to Start Using ExtendedFloatingActionButton

By Viktoriia.io

This article will provide you with the base knowledge & usage tips for adding Extended FAB to your project. Today we’re going to have a quick dive into Material ExtendedFloatingActionButton. Good that we have it already done by Android team :).

 

 

By ProAndroidDev -
Android News
Animations in Jetpack Compose
Animations in Jetpack Compose

By Rasul Aghakishiyev

Animation in an application has a significant role because it helps to provide a better user experience and makes your application more attractive. Jetpack Compose provides a nice API for creating animations in our application. We can do any type of animation, for example, alpha or scale animations.

By ProAndroidDev -
Android News
The greatest Android modularization mistake and how to undo it
The greatest Android modularization mistake and how to undo it

By Eric N

One upon a time, there was a singularity named :app module. Then came the smaller monoliths, namely persistence, networking and models. Why layers monoliths is a mistake?

By ProAndroidDev -
Android News
Tonnes of fun with Kotlin
Tonnes of fun with Kotlin

By Michael Spitsin

Hi. The new year is coming and it is a great time to recap things that we learned and achieved during this year. I thought what could I write this time. And in 2020 we started to work remotely. We started to share our knowledge with colleagues through our internal chats, instead of just verbally showing some fun and tricky things. 

By ProAndroidDev -
Android News
Writing a Fully Unit Testable Android App
Writing a Fully Unit Testable Android App

By Oliver Spryn

Sometimes, you have to say it straight: Google does not build Android with unit testing in mind. Even as recently as API 30, the platform continues to evolve in this unfortunate direction, making critical components of your app increasingly challenging to test. Thus, if you want to build an app with 95% or higher code coverage, then the burden lies with the app developer to make this a reality.

By ProAndroidDev -
Android News
Using CoroutineContext to repeat failed HTTP request
Using CoroutineContext to repeat failed HTTP request

By Roman Kamyshnikov

A common scenario in Android applications is the need to repeat a request when something goes wrong, for example when there are problems with the users internet connection. Let’s assume that we have a screen with several HTTP requests and we need to show a dialog that lets the user retry the request that failed.

By ProAndroidDev -
Android News
Android Code Review Checklist
Android Code Review Checklist

By Sherry Yuan

I came across Michaela Greiler’s Code Review Checklist earlier this year and it’s now one of my favorite and most frequently-used programming resources. However, it’s a high-level checklist and doesn’t include anything specific to a platform or a language.

By ProAndroidDev -
Android News
How Rakuten Viki Built its Google Play Instant App Back in 2016
How Rakuten Viki Built its Google Play Instant App Back in 2016

By Julius Uy

Just last week, news broke out that Twitter is shutting down Periscope. This left a rather sobering reminder that paranoia in perpetuity is perhaps the only surest way to survive a dog-eat-dog world. Periscope was huge back then.

By ProAndroidDev -
Android News
Kotlin Delegation by Inception
Kotlin Delegation by Inception

By TJ

I think Kotlin delegates are underused; they are the best implementation of the “favor composition over inheritance” refrain. In the above, the ListContainer is a List that can be iterated through by delegating to the backing List within itself. Delegates are so much more than that however; fundamentally a Delegate allows for a property to have its read and/or write semantics implemented by an arbitrary bit of code.

By ProAndroidDev -
Android News
Compose Snippet Neomorphic Button
Compose Snippet Neomorphic Button

By Suraj Sau

Implementing Neomorphic views (hopefully I haven’t slaughtered the terminology here 😅) is explained to a greater clarity in this awesome article by gihub/fornewid. As a TLDR; to the article, the impression of smooth elevation and subtle depression upon ‘pressing’ is achieved by animating two separate blur-edged shapes of two colors, a lighter shade and a darker shade of the general surface color.

By ProAndroidDev -
Android News
Mocking dependencies in UI test using Koin
Mocking dependencies in UI test using Koin

By Jobin Lawrance

This is a simple way to mock runtime dependencies in Instrumentation tests when using Koin Library. First, let’s take a look at how an application would mostly be set up when using Koin for DI.

 

By ProAndroidDev -
Android News
Backoff and Retry Strategy using Flows in Android
Backoff and Retry Strategy using Flows in Android

By Shivam Dhuria

You might come across a situation while developing an app where you’d want to retry a certain request when an Exception occurs without user’s intervention. A pragmatic example would be a case of an IO Exception. Consider this use case. You want to fetch a list of dogs from the server, however, you get an IO exception due to a network issue.

By ProAndroidDev -
Android News
Paging Image Carousel with RecyclerView
Paging Image Carousel with RecyclerView

By David Ferrand

The implementation turned out to be quite complex, with subtle tweaks needed in order to reach a really smooth UX. In this blog post, we’ll be implementing the carousel step by step and I’ll comment on some of the choices I’ve made, such as: ViewPager, ViewPager2 or RecyclerView?

By ProAndroidDev -
Android News
Machine Learning with Android 11! What is new
Machine Learning with Android 11! What is new

By Rishit Dagli

This blog demonstrates how you can get started with on-device ML with tools or plugins specifically launched with Android 11. If you have earlier worked with ML in Android, you will explore easier ways to integrate your ML applications with your Android apps.

By ProAndroidDev -
Android News
Android Views as a Function of State with ViewBinding Case Study 1! The Live Game Stream
Android Views as a Function of State with ViewBinding Case Study 1! The Live Game Stream

By TJ

This post is part of a series that shows how Views in android can be represented purely as a function of some state with no side effects helping to build a robust, easy to scale and maintain app with the help of ViewBinding.

By ProAndroidDev -
Android News
Kotlin Synthetic is Dead, Long Live ViewBinding Kotlin Android Extensions Deprecated
Kotlin Synthetic is Dead, Long Live ViewBinding Kotlin Android Extensions Deprecated

By Mustafa Yiğit

Recently, Jetbrains team released a new update for Kotlin. (Kotlin 1.4.20 Released) With this update, synthetic import has been removed from use. And now ViewBinding is recommended as an alternative. Let’s see how we can add ViewBinding to our project.

First of all, we must tell gradle that we will use viewBinding.

By ProAndroidDev -
Android News
How to make a RecyclerView in Jetpack Compose
How to make a RecyclerView in Jetpack Compose

By Ian Alexander

Written as of alpha08. Compose is evolving rapidly so some syntax may have changed. If you’ve developed for android you’ve inevitably come acrossRecyclerView, it’s a massive improvement over ListView which came before, but still pretty far from fun. Making a RecyclerView involves a messy pile of boilerplate — often difficult to re-use between screens — and complexity even for basic tasks, like headers, item callbacks, and multiple item types.

By ProAndroidDev -
Android News
Set up an Android development environment in GCP
Set up an Android development environment in GCP

By Rishit Dagli

This blog is equally contributed to by preet parekh. This blog has now also been published on Official Google Cloud Tutorials. You have probably seen this image below, it's quite popular by the way. And you too might have faced issues like Android Studio is very slow, build takes a lot of time, AVD starts after a long time if you are on a slow machine like mine.

By ProAndroidDev -
Android News
Android for Everyone! Part 3 - Implementing Your Android App for Accessibility
Android for Everyone! Part 3 - Implementing Your Android App for Accessibility

By Pamela Hill

This article series is for developers and designers interested in learning more about accessibility, particularly related to the Android platform. The first article in the series aimed to clarify what accessibility is and which services the Android platform provides to make Android a platform for everyone. 

By ProAndroidDev -
Android News
Android App from scratch using Architecture Components
Android App from scratch using Architecture Components

By Kanchan Pal

Clean Architecture comprising MVVM + Room DB with Pagination + Other Android JetPack Components. So if you’ve landed on this page, I am sure you are very curious to build a very responsive, fast and reliable Android application from scratch with latest/widely used tools and technologies out there.

By ProAndroidDev -
Android News
Cloud Face Recognition for Mobile Applications! Design and Implementation
Cloud Face Recognition for Mobile Applications! Design and Implementation

By Elena Stepanova

Create a Face Recognition App on Android. In the previous article I’ve given an overview of some promising cloud services that can be used to build a face recognition application on a mobile device. In this chapter we’re going to have a closer look at the design and implementation of a face recognition prototype app.

By ProAndroidDev -
Android News
Publishing your first Android library to MavenCentral
Publishing your first Android library to MavenCentral

By Waseef Akhtar

Recently, I got myself engaged in a new world of Android development: publishing an open source Android library. I can say that the struggle of publishing the library was real after realizing that I spent more time publishing the library than writing the entire library itself! 🤦‍♂️

By ProAndroidDev -
Android News
Infinite Lists With Paging 3 in Jetpack Compose
Infinite Lists With Paging 3 in Jetpack Compose

By Vivek Singh

Previously there was no official support for paging in Jetpack Compose, but with the release of compose version 1.0.0-alpha06, jetpack officially released the paging-compose library which provides integration between compose and Paging 3 library.

By ProAndroidDev -
Android News
How to create an Android Studio plugin with the ADB connection and reading messages from the Logcat
How to create an Android Studio plugin with the ADB connection and reading messages from the Logcat

By Ievgenii Tkachenko

More than two years ago, I faced the issue that to debug requests from the Android device or emulator, you should use some third-party tools, and none of them was built inside the Android Studio. 

By ProAndroidDev -
Android News
Substituting Android s LiveData! StateFlow or SharedFlow
Substituting Android s LiveData! StateFlow or SharedFlow

By Patrick Steiger

Kotlin Coroutines recently introduced two Flow types, SharedFlow and StateFlow, and Android’s community started wondering about substituting LiveData with one of those new types, or both. The main reasons for that are:

By ProAndroidDev -
Android News
Fully cross-platform Kotlin applications almost
Fully cross-platform Kotlin applications almost

By Arkadii Ivanov

In my last article “Decompose — experiments with Kotlin Multiplatform lifecycle-aware components and navigation”, I mentioned two cases when we can’t share code using Kotlin Multiplatform. The first one was navigation and the second one was UI. In that article we managed to share the navigation logic using the Decompose library. But UI was still platform specific.

By ProAndroidDev -
Android News
Explore Kotlin Annotations
Explore Kotlin Annotations

By Shalu T D

This article discusses the Kotlin annotations used while developing the Android app. Here we will explore the annotations @JvmStatic, @JvmOverloads, and @JvmField. As Google suggests Kotlin as the official language for Android development, most of the people are in the process of migrating existing Java code to Kotlin code. But we can’t convert all source code from Java to Kotlin in a single sprint itself.

 

By ProAndroidDev -
Android News
Android Jetpack Compose! Navigation
Android Jetpack Compose! Navigation

By Sergio Belda

The navigation component in Jetpack Compose helps you navigate between composables and take advantage of the features it provides. The NavController keeps track of the back stack of composables and the state of each one. It is also stateful which means that can directly change or mutate state.

 

 

By ProAndroidDev -
Android News
App Startup - Under the hood with Koin library Example
App Startup - Under the hood with Koin library Example

By Hongbeom

App Startup is a part of the library of Android Jetpack. This provides a way to initialize the components needed to start the application. In this article, let’s take the Koin library as an example to learn how the App Startup library works and what benefits it has.

By ProAndroidDev -
Android News
Binders In Android Part II ! Reference Counting and Death Recipients
Binders In Android Part II ! Reference Counting and Death Recipients

By Ashu Tyagi

This is the second part of multi-part series about Binders in Android. It is highly recommended to read Part I (if you haven’t already) otherwise this part probably won’t make much sense.

By ProAndroidDev -
Android News
Detect Screenshots in Android
Detect Screenshots in Android

By Nikit Bhandari

Recently I was figuring out ways to detect screenshots in Android. It turns out there is no official API to do that but there are workarounds to detect if a user has taken a screenshot while using the app. You might have wondered how apps like Snapchat and Instagram can detect screenshots as soon as you take one. In this blog post, we will be exploring how to do that.

 

By ProAndroidDev -
Android News
How-to Github Actions! Build Matrix
How-to Github Actions! Build Matrix

By Nicola Corti

My favorite feature of Github Action is: build matrix. A build matrix is a set of keys and values that allows you to spawn several jobs starting from a single job definition. The CI will use every key/value combination performing value substitution when running your job. This allows you to run a job to test different versions of a language, a library, or an operating system.

By ProAndroidDev -
Android News
Building the right Android View Abstraction
Building the right Android View Abstraction

By TJ

This post is heavily inspired by Jesse Wilson’s post of the exact same title which I’ve shamelessly lifted. Please give it a read here. This post isn’t a rebuttal, but rather a series of juxtapositions; there is going to be a problem, and two solutions to the same problem will be compared on the abstractions they use to solve said problem, culminating in one comparing View systems on Android.

 

By ProAndroidDev -
Android News
The easiest way to toggle complete layout to grayscale on Android
The easiest way to toggle complete layout to grayscale on Android

By Abhishek Jangra

Hey friends, I hope you’re doing well. In this blog allow me to share something rather interesting which can be achieved using custom views on Android. As you may know I am an Android developer working with Gojek.

By ProAndroidDev -
Android News
Uncovering the Bubbles API
Uncovering the Bubbles API

By Filipe Batista

Back in 2019, Google announced in I/O 2019 a new “extension” for the notifications that would replace and deprecate the SYSTEM_ALERT_WINDOWAPI. Bubbles were created to provide the user a simple and easy way to participate in conversations. 

By ProAndroidDev -
Android News
How to Make the Compiler Smarter
How to Make the Compiler Smarter

By Denis Craciunescu

The Kotlin compiler is smart. By performing static analysis on your code, the compiler identifies mistakes in your code as you type it. One of the most notable features of the Kotlin compiler is smart casting. The compiler has the ability to perform a cast based on the type checks done by the developer.

By ProAndroidDev -
Android News
Android Library Development! Resource Declaration Part 1
Android Library Development! Resource Declaration Part 1

By Gökhan Alıcı

After some years of application development experience, I started working on the Android library development side. This article is the first article on my library development experience series which is about resources file usage that could be useful for library developers and integrators.

By ProAndroidDev -
Android News
Infinite Scrolling with Android Paging Library and Flow API
Infinite Scrolling with Android Paging Library and Flow API

By Ziv Kesten

Recently I was interviewed for an Android software development position, and I was asked to live code a simple app that demonstrates fetching a list of items from a network resource and display their information in an endless list. I was given an API that supports paging and off I went coding away. There was just one problem.

By ProAndroidDev -
Android News
Implement Bottom Bar Navigation in Jetpack Compose
Implement Bottom Bar Navigation in Jetpack Compose

By Ziv Kesten

Navigation in Jetpack Compose has been somewhat complicated to implement up until the latest release from the Compose toolkit team. Navigating between Android app screens was quite troublesome for years, using fragments and activities, with lifecycles and process deaths that catch you by surprise, I remember scanning through enormous code bases trying to find where one screen was replaced by another and why.

By ProAndroidDev -
Android News
Android Jetpack Compose - Exploring State Based UI
Android Jetpack Compose - Exploring State Based UI

By Rajan Ks

As a developer who is always excited about new enhancements in Technology, I recently started exploring Jetpack Compose, Android’s own Modern UI toolkit to build Native UI in declarative style inspired from Modern frameworks like Flutter, litho etc.

By ProAndroidDev -
Android News
Android Data Binding! Under the Hood Part 1
Android Data Binding! Under the Hood Part 1

By Niharika Arora

Knowing how that picture in your mind (or that wireframe a designer gave you) translates into actual layouts and Views is one of those key skills that every Android developer can benefit from.

 

By ProAndroidDev -
Android News
Creating a Private Maven Repository for Android Libraries on GitLab
Creating a Private Maven Repository for Android Libraries on GitLab

By Ibrahim Süren

Creating open-source Android libraries benefits for both library owner and the other developers. A code written by a developer can save other developers from building the same thing, and also the other developers can contribute the same code. Thus, a library that will be useful for many people is can be created with the contribution of a few people.

By ProAndroidDev -
Android News
Async image loading - The Jetpack Compose way
Async image loading - The Jetpack Compose way

By Ziv Kesten

Being an Android developer is a wonderful and frustrating position to be in.
On the one hand, we can create amazing apps, design our logic in a coherent, elegant codebase, and let our users enjoy the show. On the other hand, if you ask experienced Android developers about what are the pain points of Android development, most would provide the same answer.

By ProAndroidDev -
Android News
The Ultimate Guide to Android App Internationalization and Localization
The Ultimate Guide to Android App Internationalization and Localization

By Phrase

Does your app have the potential to impact millions of people worldwide? Make sure it can reach as many as possible with these best practices for Android app internationalization (i18n) and localization (l10n).

By ProAndroidDev -
Android News
Fragment and constructor dependencies
Fragment and constructor dependencies

By Jobin Lawrance

Anyone working on Android development for a while would have come across this crash if they’ve written any fragment code. This happens when Android’s FragmentManager is unable to instantiate the current fragment as it couldn’t find an empty fragment constructor.

By ProAndroidDev -
Android News
Developing for developers! Working on an Android library
Developing for developers! Working on an Android library

By Maribel Maisano

When talking about Android development we use to think that the product that we are creating with our code will end up as a published application. We also use to think that people that receipt our work are always the final users: they will install and use our app on their devices (smartphones, tablets, smart TVs, cars, etc).

By ProAndroidDev -
Android News
Handling OnClick behavior with the Jetpack paging library
Handling OnClick behavior with the Jetpack paging library

By Zohaib A.

While migrating to the new Paging3 library in the Jetpack suite of libraries, I ran into a problem, my onClickListener on the items of my RecyclerView was no longer able to get the data of the clicked item as the viewModel returned a flowable instead of a List which can be directly used in the PagingDataAdapter using the DiffUtil.ItemCallback.

By ProAndroidDev -
Android News
Better Online Tech Talks - Tips and Tricks
Better Online Tech Talks - Tips and Tricks

By Idan Atsmon

A little over a year ago, following Google’s Kotlin First approach in Android development, I created and hosted a course for Android developers in my division, covering the basics needed to start writing in Kotlin and migrate our old Java projects to Kotlin.

By ProAndroidDev -
Android News
Welcome DataStore, Good-Bye SharedPreferences - Part 3
Welcome DataStore, Good-Bye SharedPreferences - Part 3

By Shalu T D

Hey Android devs, we have discussed Preferences DataStore and Proto DataStore in the earlier part of this series. If you already have an Android app, probably you are using      SharedPreferences. So, here we will discuss how we can migrate such existing SharedPreferences data to DataStore. 

 

By ProAndroidDev -
Android News
Solving coding problems with Kotlin! Collection functions
Solving coding problems with Kotlin! Collection functions

By Vadims Savjolovs

I have talked to many Android developers, and most of them are excited about Kotlin. So am I. When I just started learning Kotlin, I was solving Kotlin Koans, and along with other great features, I was impressed with the power of functions for performing operations on collections. Since then, I spent three years writing Kotlin code but rarely utilised all the potential of the language.

By ProAndroidDev -
Android News
SyntheticViewHolder! A Kotlin Android Extensions LayoutContainer
SyntheticViewHolder! A Kotlin Android Extensions LayoutContainer

By Christian Schmitz

The RecyclerView.ViewHolderdescribes an item view and metadata about its place within the RecyclerView. Also it is responsible for caching potentially expensive View.findViewById(int) call results. In combination with the same synthetic properties that provide access to layout specific views of activities and fragments, this is basically the purpose of the Kotlin Android Extensions LayoutContainertype.

By ProAndroidDev -
Android News
A Quick Guide to Setup Gitlab CI or CD for Android
A Quick Guide to Setup Gitlab CI or CD for Android

By Kartik Singhal

Continuous Integration and Continuous Deployment is very important for Android development as it solves a lot of problems such as manually running unit and lint tests, pain of building multiple APK variants manually (such as production & staging/debug builds) and then sending them across to your QA team. With CI/CD, you can automate this and much more.

By ProAndroidDev -
Android News
Building Barcode or QR code scanner for Android using Google ML Kit and CameraX
Building Barcode or QR code scanner for Android using Google ML Kit and CameraX

By Khaled Qasem

In this article, we will learn how to create Barcode scanner using Google ML Kit and Jetpack CameraX. June 3,2020, Android: 16.0.0 / iOS: 0.60.0: This is the first release of ML Kit as a standalone SDK, independent from Firebase. This SDK offers all the on-device APIs that were previously offered through the ML Kit for Firebase SDK.

By ProAndroidDev -
Android News
Real-time performance monitoring for Android Apps
Real-time performance monitoring for Android Apps

By Perfachhi

Did you know that android now runs on over 2.5 billion devices across the world? With the emergence of budget smartphones and affordable internet connectivity, people are using more apps and consuming more mobile services than ever before.

By ProAndroidDev -
Android News
Delving into Mobile Hardware
Delving into Mobile Hardware

By Farhan Rasheed

Samsung, Google, OnePlus, etc would be the manufacturers that you generally would be working with because of the larger software-based consumer markets. Android, however, is a sophisticated operating system that can be used to integrate very specialized hardware to do some tasks very efficiently. There is a very niche category of devices that use integrated hardware to perform highly specific tasks.

By ProAndroidDev -
Android News
Telegram-like uploading animation
Telegram-like uploading animation

 

By Michael Spitsin

Some time ago I worked on a new feature: sending images in the app’s internal chat. The feature itself was big and included multiple things, but actually, initially, there was no design for uploading animation with the ability to cancel the upload. When I moved to this part I decided that Images Needs Their Uploading Animations, so let’s give them that. :)

By ProAndroidDev -
Android News
Implement Account hold Part 1 - A complete guide for subscriptions in Google Play
Implement Account hold Part 1 - A complete guide for subscriptions in Google Play

By Usama K.Zafar

Starting November 1st 2020, Google has made it mandatory for any developer offering in-app subscriptions to implement the Account Hold feature. I’ve spent the last week implementing it for my own application, following link after link to various pages of the documentation and I’ve decided to write this article for combining the entire process.

By ProAndroidDev -
Android News
Implement RTDN in NodeJS Backend Part 2 - A complete guide for subscriptions in Google Play
Implement RTDN in NodeJS Backend Part 2 - A complete guide for subscriptions in Google Play

By Usama K. Zafar

In this part, we will create our backend service to integrate with the Google Cloud Notifications that we set up in Part 1. If you don’t have a Google PubSub topic that is configured with the Google Play Console, you need to go through the part 1 first.

By ProAndroidDev -
Android News
ViewBinding with Kotlin Property Delegate
ViewBinding with Kotlin Property Delegate

By Seanghay

ViewBinding is a new feature of Android Gradle Plugin which allows you to access view hierarchy with type and null safety. ViewBinding is integrated with the Android Gradle Plugin directly, so it doesn’t depend on Annotation Processing (KAPT) as Butterknife does. Also, it much safer and cheaper than Kotlin Synthetic which uses HashMap under the hood.

By ProAndroidDev -
Android News
Automated, on-demand benchmarking of Android Gradle builds with Github Actions
Automated, on-demand benchmarking of Android Gradle builds with Github Actions

By Abhishek Bansal

Slow build speeds are not unfamiliar to us Android Developers. It specifically becomes a nuisance when your codebase is large. Nowadays Kotlin  is the preferred choice of development language for many developers(including myself).

By ProAndroidDev -
Android News
Introduction to the core concepts of Android Navigation
Introduction to the core concepts of Android Navigation

By Souvik Biswas

Navigation is one of the core concepts to master if you are working on any Android app having a complex navigation system. Properly handled navigation also helps to reduce any security flaw in your app, like authenticating the user before navigating to any sensitive content of the app or preventing any sensitive information to be shared with other apps on the device.

 

By ProAndroidDev -
Android News
Running test multiple times with different parameters
Running test multiple times with different parameters

By Chizoba Ogbonna

I recently had to write tests to assert that the correct resources are being retrieved depending on a user’s locale. In a bid to write tests for each user locale, I realised I would have up to 18 different test methods which will look alike.

By ProAndroidDev -
Android News
Building a video timeline using RecyclerView
Building a video timeline using RecyclerView

By Shashank Mishra

Recently, I had to work on displaying a custom timeline for a video playlist. Since a picture speaks a thousand words let me just show you what it looked like: As you can see, there are a few things which need to be accomplished.

By ProAndroidDev -
Android News
Jetpack Compose Interop Part 2! Using Compose in Traditional Android Views and Layouts with ComposeView
Jetpack Compose Interop Part 2! Using Compose in Traditional Android Views and Layouts with ComposeView

By Dai

In Part 1 I demonstrated how we can use AndroidView to render traditional Views inside our Compose UI. For this part, we are now going to make newly created Compose UI components work inside traditional Views and Layouts with another special class, ComposeView.

By ProAndroidDev -
Android News
Jetpack Compose Interop Part 1! Using Traditional Views and Layouts in Compose with AndroidView
Jetpack Compose Interop Part 1! Using Traditional Views and Layouts in Compose with AndroidView

By Dai

Like most Android developers following the development of Jetpack Compose you are probably wondering if you will need to rewrite your views or your entire app from the ground up. Well, it turns out, you might not have to, in fact, just like the days when we were all beginning to adopt Kotlin, we can slowly adopt new views and even make our current UI work with Jetpack Compose.

By ProAndroidDev -
Android News
Enhance Android WebView Performance using Glide
Enhance Android WebView Performance using Glide

By Mudit Sen

Using WebViews in your native application is very common these days but when it comes to performance, rendering of a WebView is quite slow. As most of the heavy lifting done by WebView is loading images. In our Web-Pages we tend to use many images and most of those images are really large in size and loading them every time the user opens the App’s WebView is not good.

By ProAndroidDev -
Android News
Synchronous communication with the UI using StateFlow
Synchronous communication with the UI using StateFlow

By Raul Hernandez Lopez

Synchronous communication in simple terms is when we start an action whose output may produce an immediate effect or reaction that must be handled as soon as possible because we are waiting for this process to finish. This is the opposite of Asynchronous communication, when the response is not coming instantly, with situations or examples like:

By ProAndroidDev -
Android News
Kotlin scope and extension functions. How to not harm your code.
Kotlin scope and extension functions. How to not harm your code.

By Dmitry Si

Scope functions in Kotlin are powerful tools that can make the code more concise but, like any powerful tool, can also ruin it if not used properly. This article covers the typical scope function issues and gotchas and offers mitigation practices.

By ProAndroidDev -
Android News
AndroidX Navigation! Building on the Wrong Abstraction
AndroidX Navigation! Building on the Wrong Abstraction

By Isaac Udy

I recently read an article by Jesse Wilson titled “Building on the Wrong Abstraction”. If you haven’t read the article already, I would highly recommend it. Reading Jesse’s article started me thinking about one of my favourite problems in the Android world: Navigation. Navigation is a key part of any application that has more than two screens. Which is probably most of them. But navigation on Android sucks.

By ProAndroidDev -
Android News
Android Model-View-Intent with Unit Tests
Android Model-View-Intent with Unit Tests

 By Adam Hurwitz

You’ve spent too much time testing if you have had to reconfigure a feature’s code to make it testable or have debugged the ordering of actions/events and the resulting test output. Using the Model-View-Intent pattern (MVI) provides the ability to test built-in to the pattern following the best practice of Test Driven Development (TDD).

By ProAndroidDev -
Android News
Decompose - experiments with Kotlin Multiplatform lifecycle-aware components and navigation
Decompose - experiments with Kotlin Multiplatform lifecycle-aware components and navigation

By Arkadii Ivanov

Kotlin Multiplatform is a technology that enables code sharing between different platforms. It is completely up to developers how much of the code they want to share. But there are cases for which we just can’t write shared code, even if we would like to.

By ProAndroidDev -
Android News
How to draw 2.6 million polygons on Android at 60 FPS! Half the data with Half Float
How to draw 2.6 million polygons on Android at 60 FPS! Half the data with Half Float

By Abhishek Bansal

In this article, we are going to use Half data type from the Android platform and also explore the caveats of it. This post is add on to a previous 3 part article series.

By ProAndroidDev -
Android News
Dissection of an APK
Dissection of an APK

By Farhan Rasheed

APK stands for Android Package. It is the package file format used by the Android operating system for the distribution and installation of mobile apps. There are multiple use cases of working with a compiled package. The absence of source code is the primary reason why you might be reading this but I’ve listed down some other use cases I’ve encountered in the past in the last section.

By ProAndroidDev -
Android News
Binders In Android part 1
Binders In Android part 1

By Ashu Tyagi 

First of all, why do we even need to know about binder? Have you ever thought what prevents us from tricking the system into hiding the soft input keyword which is being used by some other application, or releasing a wake lock acquired by another application, or from hiding another application’s windows from the screen?

By ProAndroidDev -
Android News
First steps in Jetpack Compose Part 1 - the power of Preview
First steps in Jetpack Compose Part 1 - the power of Preview

By Zhelyazko Atanasov

One of the first things that every new Android developer learns is how to create a simple user interface. We’ve all been there, reading about all the XML files needed to build a UI — the layout, strings, dimensions, styles… Then we were taught how to use those in our Activities and Fragments. 

By ProAndroidDev -
Android News
Create Hello World App with KMM - Android and IOS
Create Hello World App with KMM - Android and IOS

By Aman Bansal

In mobile development, the Android and iOS versions of an application often have a lot in common . The business logic behind the apps is probably pretty much the same. Download files, read from and write to a database, get and send data to a remote host, parsing the remote data, etc. So why not we write the business logic only once and share it between different platforms?

By ProAndroidDev -
Android News
Hold on! Before you Dagger or Hilt! try this Simple DI
Hold on! Before you Dagger or Hilt! try this Simple DI

By Chetan Garg

Learn pure Kotlin DI then migrate it to HILT or Dagger. Dagger is one of the popular frameworks that has been known for Dependency Injection (DI) for Java and Android platforms. It’s in most of the Android projects whether small or large, developers tend to start off with the basic scaffold of Dagger just not to deal with the huge boilerplate or to avoid huge migration of adding it later to the project. 

By ProAndroidDev -
Android News
Exploring Jetpack Compose with Hilt and ViewModels
Exploring Jetpack Compose with Hilt and ViewModels

By Jaewoong Eum

A new UI toolkit Jetpack Compose is announced by Google. Jetpack Compose is Android’s new modern toolkit for building native UI based declarative component approaches. In contrast to imperative programming, declarative programming is a programming paradigm that expresses the logic of computation or drawing UIs without describing its control flow. 

By ProAndroidDev -
Android News
Five Useful Kotlin Extensions you may use
Five Useful Kotlin Extensions you may use

By Mohammed Hemaid

Extensions is one of the coolest features in Kotlin as it provides the ability to extend a class with new functionality without even inheriting that class! Remember how we were doing that using other programming languages that doesn’t support extensions, by inheriting the class or use design patterns such as Decorator, but what extensions will do is to reduce writing that boilerplate code by defining just a functions, today we will talk about the common extensions in Kotlin.

By ProAndroidDev -
Android News
ProgressBar animations with Espresso
ProgressBar animations with Espresso

By Halil Ozercan

It is not uncommon that once you run into an issue with Intrumentation Testing in Android, you’d feel like the loneliest person in the world. This might be an unforeseen effect of abundance of Android knowledge that exists on the Internet. Whatever you search for, there is always a StackOverflow answer or a Medium article that exactly describes what you need to do.

By ProAndroidDev -
Android News
Hilt and Jetpack integrations in the Dynamic Feature world
Hilt and Jetpack integrations in the Dynamic Feature world

By Hán Trung Kiên

Following on from an official site of the Dagger, Hilt is built on top of the popular Dependency Injection (DI) library Dagger to provides a standard way to incorporate Dagger dependency injection into an Android application.

By ProAndroidDev -
Android News
How do I setup GitHub Actions for my Gradle or Android project
How do I setup GitHub Actions for my Gradle or Android project

By Jean-Michel Fayard

Hello Human! This tutorial is for you if you have an Android or Kotlin or Java project built with Gradle, you write unit tests, you have no Continuous Integration system setup to run your tests on the server. Having the guarantee that your unit tests run on the build server is a keystone to establish a culture of testing withing your team — either at work or in an open-source project.

 

By ProAndroidDev -
Android News
SSL with Kotlin and Ktor
SSL with Kotlin and Ktor

By Alexey Soshin

So, you develop some of your services with Kotlin and Ktor. Normally, your Ktor services will sit safely behind a reverse proxy, that will handle all the basic security concerns, including SSL, for you. And in your test environment, you would be running without SSL at all, simply bypassing all security. That’s usually the case. But in my case, I had a particular HTTP client that I needed to test, that would only support HTTPS.

By ProAndroidDev -
Android News
Automating Code Reviews
Automating Code Reviews

By Damian Burke

Building software is a complex task. Some software is built by a single person, but often times there are teams behind software. These teams can range from two people up to hundreds of people. Working with many people in the same code-base brings quite a few challenges. Tools like githelp out with working in parallel by enabling us to version our code (i.e. see changes over time) or to easily spot changes suggested by team members. 

By ProAndroidDev -
Android News
Personal Request changes Materials Starter Pack Kotlin ver Part 1
Personal Request changes Materials Starter Pack Kotlin ver Part 1

By Erick Sumargo

It’s nice to have personal documented guides, it’s such time-saving instead of rewriting similar arguments in every code review activity. Without further ado, below are my coarse-grained compilation factors taken into every review action (reading in order is recommended):

By ProAndroidDev -
Android News
Designing complex UI using Android ConstraintLayout
Designing complex UI using Android ConstraintLayout

By Souvik Biswas

Designing a complex user interface on Android having a nested view hierarchy was a common thing previously. But, with the introduction of ConstraintLayout, this has changed a lot. It reduces a lot of challenges of building complex layouts as now you can design them using the GUI of Layout Editor, by just dragging UI elements into a visual design editor instead of writing layout XML by hand.

By ProAndroidDev -
Android News
Biometrics in Android
Biometrics in Android

By Husayn Hakeem

Android’s biometric APIs allow for secure authentication on the Android platform. They manage a system-provided biometric authentication prompt, and provide a seamless experience by supporting various authentication types, including biometric ones such as fingerprint and face, as well as non-biometric types like PIN, password, and pattern.

By ProAndroidDev -
Android News
How to Write Memorable Functions
How to Write Memorable Functions

By Denis Crăciunescu

Jetpack Compose is a modern, fully declarative UI toolkit created to address the challenges of the old View system. Unlike the old View system, Compose provides a declarative API that enables your UI to react to changes, without imperatively mutating the frontend views.

 

By ProAndroidDev -
Android News
How to draw 2.6 million polygons on Android at 60 FPS! The Problem Statement
How to draw 2.6 million polygons on Android at 60 FPS! The Problem Statement

By Abhishek Bansal

Weather visualizations are mesmerizing to the eyes, and, they are equally fascinating from a technical standpoint. In this article series we are going to explore how can you render such a beautiful visualization with little understanding of data and Computer Graphics.

By ProAndroidDev -
Android News
Android Rotate Gesture Recognising - Part 2
Android Rotate Gesture Recognising - Part 2

By Elvina Sh

Hi there! In the Navigine team, we’ve been providing indoor and outdoor positioning mobile technologies that enable advanced indoor navigation and proximity solutions for eight years. In our previous article, we wrote about handling tap, pan, and pinch gestures in Android views using gesture detectors. 

By ProAndroidDev -
Android News
Getting Rid of Koin or! How I Never Learnt To Stop Worrying And Love The Dependency Injection Framework
Getting Rid of Koin or! How I Never Learnt To Stop Worrying And Love The Dependency Injection Framework

By Rob Pridham

Hello. I’m Rob and as of January 2020, I work on the Android version of BBC Sport. Our codebase started its life in 2013 and it’s fair to say we have amassed some tech debt over that time — we are now trying to sort out our fundamentals.

By ProAndroidDev -
Android News
Let s Explore Jetpack DataStore
Let s Explore Jetpack DataStore

By Vivek Singh

Ever since the release of Android Jetpack it has come up with several libraries which makes us writing better Android code, avoid boilerplate code, etc. and now this time it has brought us an another awesome library called Datastore which according to official blog aims to replace the Sharedpreferenced API which has several drawbacks.

By ProAndroidDev -
Android News
Android WiFi Scanning Frustrations
Android WiFi Scanning Frustrations

By Elvina Sh

Hi there! In the Navigine team, we’ve been providing indoor and outdoor positioning mobile technologies that enable advanced indoor navigation and proximity solutions for eight years.Today we want to tell you more about WiFi scanning on different versions of Android devices and the restrictions you could meet during the development process. 

By ProAndroidDev -
Android News
Appium automates testing Java, Kotlin Android applications
Appium automates testing Java, Kotlin Android applications

By Aleksei Jegorov

jUnit tests or automation tests? That is the question. Every project developed along with unit tests. Sometimes it based on TDD/BDD approach, when test and method under the test developed in parallel. Also there are mock tests, integration tests and UI tests. In case of UI Java Android it is a Espresso and UIAutomation standard libraries.

By ProAndroidDev -
Android News
Modern Android Security Development
Modern Android Security Development

By Erick Sumargo

Given the “find out how to en-decrypt data in Android” requirement, what would you do Unless you are a security expert or developer with a security career dedication that writing the cryptographic code from scratch is just a trivial task, it’s very common for us to start “Googling”, deep dive in “Stack Overflow” to find security-related implementation answers until we probably find below similar snippet:

By ProAndroidDev -
Android News
Feature Components in Android
Feature Components in Android

By Anup Ammanavar

Creating loosely-coupled Reactive Feature Components. Re-usability is a pattern that solves the problem of duplication. It can be as simple as creating Functions, Classes, Interfaces to more complex UI-Components and Feature-Components.

By ProAndroidDev -
Android News
Thermal in Android
Thermal in Android

By Husayn Hakeem

Android Q introduced new thermal APIs to allow better handling of thermal issues. This article goes over why these APIs were needed, the information and controls they provide, and how you can test your app under different thermal stress levels.

By ProAndroidDev -
Android News
Immutable lists in presenter
Immutable lists in presenter

By Michael Spitsin

There are different Architecture approaches in Android. The ways you can structure your code and organize the project. In each approach, there are tonnes of variations of how things can be provided/organized/transferred or shown. Moreover, from time to time you may mix different approaches and result in a half-blood architecture that is fitted for your needs, for your team, for your way of work.

 

By ProAndroidDev -
Android News
Gradle Kotlin DSL - Dynamically discover project modules
Gradle Kotlin DSL - Dynamically discover project modules

By Pavlos-Petros Tournaris

A lot of modern Gradle projects are starting as a monolith during the prototyping phase, but soon enough when the project has matured you start realising that a modularized project has a lot of advantages.

By ProAndroidDev -
Android News
Sonar-like animation
Sonar-like animation

By Michael Spitsin

Android makes UI development interesting and fun by giving the ability to create some custom widgets or animations. Today let’s try to make some fun by creating a sonar-like animation:

By ProAndroidDev -
Android News
Avoiding memory leaks when using Data Binding and View Binding
Avoiding memory leaks when using Data Binding and View Binding

By Anders Ullnæss

In our current project we are using a lot of Data Binding and recently we have started using View Binding as well. A little while back, we were inspired by Pierre-Yves Ricau and Emily Kager’s awesome video covering how to find and fix memory leaks with LeakCanary, so we added it to our project. We soon saw falling birds all over the place.

By ProAndroidDev -
Android News
Recognize Drawings using ML Kit
Recognize Drawings using ML Kit

By Nikit Bhandari

Using ML Kit’s Digital Ink Recognition API, we can recognize handwritten text or sketches made by the user on a screen. I made a simple app to play with this API as you can see in the video below, you can draw anything and the app detects it in real time. These guesses are pretty accurate and I am quite impressed, to be honest.

By ProAndroidDev -
Android News
A Battle towards Performance- Understanding Systrace and Overdraw Part -2
A Battle towards Performance- Understanding Systrace and Overdraw Part -2

By Niharika Arora

In the last article, I showed off my love for fashion which lead me to correlate it with the topic at hand i.e, how UI is created and what will be the impact of view lifecycle methods in the context of various layouts. In this blog, I will be discussing various tools I used to measure performance...

     

    By ProAndroidDev -
    Android News
    How-to Github Actions! Building your Android App
    How-to Github Actions! Building your Android App

    By Nicola Corti

    One of the first things I set up when working on a project, is a Continuous Integration (CI) system. I’ve recently spent some time migrating several projects of mine to Github Actions. I have to admit that I was amazed by how easy it was to set up, together with the performance boost I gained from it.v

    By ProAndroidDev -
    Android News
    Basic Coroutine Level 1
    Basic Coroutine Level 1

    By Tarun Sharma

    Almost every Android mobile phone works on a multiCore processor. Multithreading or concurrency is an awesome way to use a multi-core processor environment and build fast and efficient applications. The Concurrency has a direct relation with Android application Performance.

    By ProAndroidDev -
    Android News
    A Battle towards Performance- Constraint Layout vs Other Layouts Part -1
    A Battle towards Performance- Constraint Layout vs Other Layouts Part -1

    By Niharika Arora

    Imagine, you’ve just joined a new job and you need to shop for a whole new wardrobe that goes with your workplace culture and outlook (formals in most cases). You walk into an apparel store, head straight to the formals section, and you notice that some of the items hanging there are quite impractical and uncomfortable.

    By ProAndroidDev -
    Android News
    Hilt Migration Guide
    Hilt Migration Guide

    By Suleyman Fatih Giris

    Dagger is an advanced dependency injection library and it is not easy to understand at the first glance for most developers. Using Dagger in Android requires much more effort for framework classes since it requires some boilerplate code. Hilt helps to reduce Dagger’s complexity and boilerplates with a set of ready components, scopes, and annotations.

    By ProAndroidDev -
    Android News
    Smarter apps with Awareness API
    Smarter apps with Awareness API

    By Prafull Mishra

    After a series of bombardment of new features by the Android Developers team (huge round of applause for the results 👏🏻), time to get back to our regular daily dev bytes! The topic I am going to pick is covered with dust and spider webs. Mostly because it got overlooked in favor of other things that keep happening in Android world, but its still useful, or at-least can be, if you lie in its target area.

    By ProAndroidDev -
    Android News
    Writing Performant Layouts
    Writing Performant Layouts

    By Bhavya

    With the ever-increasing complexity of mobile applications, you would always want to avoid user reviews like “this app is janky” or “it is too slow on my device”. So today we are going to learn about how complex layouts can cause this janky behaviour, how to diagnose it, and then finally some tips on writing performant layouts.

    By ProAndroidDev -
    Android News
    Google Play In-App Review API! integration and experience
    Google Play In-App Review API! integration and experience

    By David Vávra

    Google Play Core library version 1.8.0 brings a long-awaited feature: native in-app review dialog. I added it to the latest version of Settle Up and I’m very satisfied with it — it instantly boosted our ratings and the integration was very simple. Goodbye annoying custom dialogs asking for a review.

    By ProAndroidDev -
    Android News
    Scheduling work with WorkManager
    Scheduling work with WorkManager

    By Alankrita Shah

    WorkManager is an Android Jetpack library that enqueues deferrable background work and guarantees their execution when its constraints are met. This is the second blog post of the WorkManager series. Previously on WorkManager… 

    By ProAndroidDev -
    Android News
    How to Use the Paging 3 Library in Android - Part 2
    How to Use the Paging 3 Library in Android - Part 2

    By Vivek Singh

    I strongly suggest you to read the first part of this series How to Use the Paging 3 Library in Android before continuing. In the first part of this series, we learned about the basics of using Paging 3 library in android. Now in this part, we will learn about creating headers and footers to show the loading state in the RecyclerView itself and then we will learn about creating list separators in the same RecyclerView.

    By ProAndroidDev -
    Android News
    Install Google Play Store in an Android Emulator
    Install Google Play Store in an Android Emulator

    By Nikit Bhandari

    Recently I was testing some Google Play Store related functionality in different emulators and I realised that it is a bit tricky to install Google Play in some emulators. It is easy to install Google Play Store for API 24 and above as we can directly select an emulator that has Google Play from the AVD manager.

    By ProAndroidDev -
    Android News
    Android Design System and Theming! Typography
    Android Design System and Theming! Typography

    By Huga Matilla

    Managing the look and feel of an Android app can get tedious, and more when the app gets bigger. Style definitions, color attributes, sizes, etc. grow and grow if we don’t manage them properly. Even if we can control them, a big set of style definitions can be difficult to follow.

    By ProAndroidDev -
    Android News
    How to Use the Paging 3 Library in Android
    How to Use the Paging 3 Library in Android

    By Vivek Singh

    Most apps displays a large list of data to the users, but at a particular time the user sees only a small chunk of data in your app, so fetching all the data from the network is not an efficient solution. The solution is to fetch small chunks of data at a time, and as soon as the user reach at the end of the list, then the app will load more data. This is called Paging.

     

    By ProAndroidDev -
    Android News
    Testing Jetpack Security with Robolectric
    Testing Jetpack Security with Robolectric

    By Matthew Dolan

    When updating my Android caching library, layercache, with built-in support for the new Jetpack SecurityEncryptedSharedPreferences I started to write unit tests using Robolectric, but soon came across the exception java.security.KeyStoreException: AndroidKeyStore not found.

    By ProAndroidDev -
    Android News
    Android View State Machine Part 1
    Android View State Machine Part 1

    By Egbai Smile Mmumene

    In software development one of the most prevalent things is state management or simply put, knowing what to do and when to do it. The main focus of this series would be the presentational layer of an app and devise modelling of received data into a state object and interpretation at the view i.e managing the view in correspondence to emitted state.

    By ProAndroidDev -
    Android News
    Kotlin s Noinline and Crossline  once for all
    Kotlin s Noinline and Crossline once for all

    By Nicola Corti

    Kotlin, as most of the programming languages, has several reserved keywords. You can find all of them listed on this page of the official documentation: keyword-referenceI invite you to spend some time going through the list. 
    Do you know all the keywords?

    By ProAndroidDev -
    Android News
    Kotlin Multiplatform plus Rx plus MVVM
    Kotlin Multiplatform plus Rx plus MVVM

    By Hossein Abbasi

    What is better for a developer than writing code once and run it on various platforms, natively? (but in real! and not like Java which runs anywhere(WORA) that a JVM only exists!) Let me quote from Kotlin website to show you the power of Kotlin and what we’re gonna talk about in this article:

    By ProAndroidDev -
    Android News
    ViewPager2 - digging the internal API to make it work with DiffUtil
    ViewPager2 - digging the internal API to make it work with DiffUtil

    By Ruslan Myhal

    In this article, I will not go into detail about ViewPager2, the difference between an old ViewPager, I will attach some links at the end of the article, in which this is described in detail. Here I will show an example of using ViewPager2 with mutable fragments collection with DiffUtil and what problems are hidden there.

    By ProAndroidDev -
    Android News
    Developing Custom Android Sheet Sliding From Top of Device Screen
    Developing Custom Android Sheet Sliding From Top of Device Screen

    By Elvina Sh

    Hi there! In the Navigine team, we’ve been providing indoor and outdoor positioning mobile technologies that enable advanced indoor navigation and proximity solutions for eight years.In the previous article, we told you about the Bottom Sheet Behavior and how to animate the button on top of it. Today we want to tell you one interesting feature we implemented in our Navigine Android app which will make your UI more attractive.

    By ProAndroidDev -
    Android News
    Dagger and Inject on constructors - do or dont
    Dagger and Inject on constructors - do or dont

    By Ian Alexander

    Depending who you speak to, putting @Inject on a constructor is either akin to whipping your own grandmother or is such a blindingly obvious thing to do that the question is ridiculous. But which is right?

     

    By ProAndroidDev -
    Android News
    What the Flows! Build an Android app using Flows, Live Data, and MVVM architecture
    What the Flows! Build an Android app using Flows, Live Data, and MVVM architecture

    By Shivam Dhuria

    Knowledge of Retrofit, Room and Coroutines is a must for this guide.In this tutorial We will build an app that fetches dog breeds from DogApi using Retrofit and then save it to database using Room. We will then use Flows to display the list of dogs from the database.

    By ProAndroidDev -
    Android News
    Android Development | Best Practices
    Android Development | Best Practices

    By Niharika Arora

    Android development continues to dominate the world of mobile development. Fun projects, great pay, and tons of job prospects are just some of the reasons developers are starting their journeys into the exciting world of the Android operating system. Some experts say that there has never been a better time to learn Android skills, especially since the recent updates, like the addition of Kotlin and improvements to Google’s policies.

    By ProAndroidDev -
    Android News
    Android Model-View-Intent with Kotlin Flow
    Android Model-View-Intent with Kotlin Flow

    By Adam Hurwitz

    You may think of ‘magic mushrooms’ when you hear ‘fungi network’. However, just like the Model-View-Intent (MVI) pattern, the forest’s organized fungi network of a connected info sharing system, like Model-View-Intent’s pattern, is indeed not magic.The Unidirectional Data Flow (UDF) pattern does a great job to ensure information is sent in one direction from the view to the business logic, is retrieved, and processed in order to build the view.

    By ProAndroidDev -
    Android News
    Connecting to Wi-Fi devices with RxJava in Android
    Connecting to Wi-Fi devices with RxJava in Android

    By Vladimir Petrovski

    Last year’s Android 10 announcement came with many new features like Gesture navigation, Dark theme, Location control and more. If your apps haven’t yet been migrated to the newest version, go ahead and do it! There have also been many changes at the API level, so check this linkbefore switching to Android 10.Well, enough announcements about Android 10 since Android 11 Beta is already out.

    By ProAndroidDev -
    Android News
    How to name a color in Android
    How to name a color in Android

    By Miroslav Kacera

    As a software developer, you have probably heard that too. Naming is one of the hardest things in programing. According to Phil Karlton it comes with caching. But for caching you have lot of libraries at hand nowadays, right? That probably makes naming the single hardest thing out there.

    By ProAndroidDev -
    Android News
    Experience with UIAutomator
    Experience with UIAutomator

    By Aung Kyaw Paing

    Since the pandemic starts, my work has shifted to remote working, and this changes a lot of things for me. But you’re not here to read about me talking about good and bad of remote work. So, I’m just gonna go ahead and give you a little background on why I thought of playing around with UIAutomator in the first place. We’re using a human resources management system called BetterHR.

    By ProAndroidDev -
    Android News
    Unit testing using Spek framework
    Unit testing using Spek framework

    By Kishan Maurya

    In my previous articles on unit testing, I have talked about ViewModel, Usecase, Repository testing using JUnit & Mockito. Today I am going to explore about Spek framework for unit testing.Spek is a Kotlin-based Specification Testing framework. Spek is written in Kotlin and specifications or tests we write will be in Kotlin. However, our SUT (System Under Test) can be Java or Kotlin.

    By ProAndroidDev -
    Android News
    Extension classes
    Extension classes

    By Aidan Mcwilliams

    Note: If you’re viewing on mobile, the code snippets are better in landscape. While reading Danny Preussler’s article Keep your interfaces simple, I had some thoughts on how to use some other Kotlin features to take it a step further. I’d suggest reading that first for context. Lets say we have our feature flags defined like this:

    By ProAndroidDev -
    Android News
    Android Motion Event Detailed Explanation and Handling View onTouchEvent
    Android Motion Event Detailed Explanation and Handling View onTouchEvent

    By Elvina Sh

    Hi there! In the Navigine team, we’ve been providing indoor and outdoor positioning mobile technologies that enable advanced indoor navigation and proximity solutions for eight years. Recently, we have devoted a lot of time to working with graphics on mobile devices and handling gestures. 

    By ProAndroidDev -
    Android News
    Automate dependency updates in Gradle projects with Dependabot
    Automate dependency updates in Gradle projects with Dependabot

    By Volodymyr Buberenko

    Today I would like to tell you about a convenient tool to automate Gradle dependencies updates called Dependabot. It feels like this tool was overlooked in the Android community, so I would like to fill this gap. I started to use Dependanbot a few months ago and tried to use different versions of it, so this article is based on personal experience.

     

    By ProAndroidDev -
    Android News
    Process Voice Input in Android With StanfordNLP
    Process Voice Input in Android With StanfordNLP

    By Catalin Ghita

    The goal of this article is to familiarize you with the development of processing voice input in Android. Therefore, this piece will allow you to understand how to transform the user’s input into text and most importantly how to parse and extract relevant information from it. In order to achieve such an effect, we will use the native Speech API interface on Android and the 3rd party NLP tool (Natural language processing) named StanfordNLP.

    By ProAndroidDev -
    Android News
    Going deep on Flows and Channels - Part 5! StateFlows
    Going deep on Flows and Channels - Part 5! StateFlows

    By Julián Ezequiel Picó

    Welcome to the last (at least, for now) article of this series, where we are going to discuss what is a StateFlow and its behaviour. You can see some examples by checking the GitHub Repository. There, you will see how a StateFlow is implemented and how it works. Now that you will have a basis about Kotlin Streams API, you can fork and modify all the examples that you have there

     

    By ProAndroidDev -
    Android News
    Dont use LiveData in Repositories
    Dont use LiveData in Repositories

    By Jossi Wolf

    We recently joined a new project with heavy LiveData usage, everywhere. The search for main thread blockages led us down a rabbit hole of removing a significant portion of our LiveData usages.We started off with Repositories, ViewModels and Fragments. The repositories would connect to data sources and expose LiveData. The ViewModels would then expose the LiveData to the UI Layer.

    By ProAndroidDev -
    Android News
    Keep your interfaces simple
    Keep your interfaces simple

    By Danny Preussler

    Writing your classes with a good API is hard but important. As the writer is trying to make it easy for the user, we sometimes tend to repeat ourselves by adding convenient methods.Think about the List interface in Java. To check if there are no elements in the list we could check list.getlength() == 0  or we simply ask for isEmpty ().

     

    By ProAndroidDev -
    Android News
    Navigating through a Reactive Android MVVM - Chapter 2
    Navigating through a Reactive Android MVVM - Chapter 2

    By Leandro Ocampo

    I have been working as a software developer for around 10 years, and during those years I have been looking for patterns and the perfect architecture that will help me to build any kind of product. You will find even in social media that well known developers in the community will have different opinions on what that perfect architecture is.

    By ProAndroidDev -
    Android News
    Ensure single click on Android ButterKnife did it right
    Ensure single click on Android ButterKnife did it right

    By Thanos Tsakiridis

    Recently, while I was investigating a weird issue of double network calls, I discovered that the root cause was not some bad network state or my HTTP client, but something much more simple and often overlooked. User double-tapping on a button too quickly…A few years ago (like a lifetime in Android development) ButterKnife library was extremely popular for Java-based apps to bind views and avoid all the findViewById calls.

    By ProAndroidDev -
    Android News
    Understanding The Elements Of MotionLayout In Android
    Understanding The Elements Of MotionLayout In Android

    By Shubham Panchal

    Android animations are important for rich user experience. An interactive UI where every change takes place with fluidity engages users to the app. Animations plugged with colors, widgets and dialogs will make your app a huge success. Animations and Transitions in Android have gone through various changes over the past API levels.

    By ProAndroidDev -
    Android News
    Let s build our own simplified version of Koin
    Let s build our own simplified version of Koin

    By Rygel Louv

    Koin is an amazing Dependency Injection Framework for Kotlin and Android projects. It has gained huge popularity over the past two years and many Android developers (including myself) have adopted it, use it in production relying on its powerful mechanism to help perform dependency injection. And we just love it!

    By ProAndroidDev -
    Android News
    The Journey of Jetpack - Compose I
    The Journey of Jetpack - Compose I

    By Manuel Ernesto 

    Today we will continue our series about Android Jetpack, and for this post, we will cover Jetpack Compose.Jetpack Compose, is a modern toolkit for Android development and it’s the Google answer to simplify the development of UI in Android. Jetpack Compose is new and was announced last year at Google I/O 2019. Jetpack Compose combines a reactive programming model with the conciseness and ease of use of the Kotlin programming language. It is fully declarative like we already see on flutter, Swift UI, and React Native.

    By ProAndroidDev -
    Android News
    WebP - a preferred image format for Android apps
    WebP - a preferred image format for Android apps

    By Seanghay

    WebP is an image format that is developed by Google, focuses mainly on optimization and quality. One of the cool features of WebP is that it is lossless and lossy which means it supports both types of compression, unlike PNGs and JPGs. WebP is fully supported on web browsers such as Chrome, Firefox, and Opera (see the image below). On the Android side, WebP was added since API 14, so it is more than safe to use WebP on Android these days.

    By ProAndroidDev -
    Android News
    Managing Android Studio with the Toolbox App
    Managing Android Studio with the Toolbox App

    By Jomar Tigcal

    As an Android developer, you’re most likely using Android Studio for development. Installing, updating, and uninstalling, especially you have several variants, is sometimes time consuming and can distract us from coding. I recently learned something which can help make this easier for developers, the Toolbox App.

    By ProAndroidDev -
    Android News
    Change my mind or Android development transformation to Jetpack Compose and Coroutines
    Change my mind or Android development transformation to Jetpack Compose and Coroutines

    By Andrey Beryukhov

    Jetpack Compose is one of the most discussed topics covered in the recent Android 11 video series. It is expected to solve most of the problems with the current Android UI toolkit, which contains lots of legacies. Another promising tool for Android-development is Kotlin Coroutines and especially Flow API which is supposed to help avoid over engineering with RxJava.

    By ProAndroidDev -
    Android News
    Opting in Existing Apps to Google Play App Signing
    Opting in Existing Apps to Google Play App Signing

    By Jomar Tigcal

    App Signing by Google Play has been around since 2017. With App Signing, Google manages your app signing keys and uses it to sign your APKs for distribution. Enrolling your app in App Signing is optional. You might have decided to handle the signing and storage of your keys instead of uploading them to Google Play.

     

    By ProAndroidDev -
    Android News
    The Journey of Jetpack - Introduction
    The Journey of Jetpack - Introduction

    By Manuel Ernesto 

    Hello, today we will be starting a new journey of learning Android Jetpack. Android Jetpack was introduced by Google at Google I/O 2018 and since then so many things have changed in the Android development world. Android Jetpack is a set of components, tools and architectural guidance that make it quick and easy to build great Android apps. Components are individually adoptable but built to work together while taking advantage of Kotlin language features that make you more productive.

    By ProAndroidDev -
    Android News
    Android Logging on Steroids! Clickable Logs With Location Info
    Android Logging on Steroids! Clickable Logs With Location Info

    By Merthan Erdem

    Today I’ll quickly tell you a way to make every log in your application look like this with a clickable hyperlink to the location, just like with Exceptions. This was simply logged in the method getImageCaptureId() at line 222 of AddPictureFragment, and the call simply looked like this, no need to specify anything:

    By ProAndroidDev -
    Android News
    BaseActivity and BaseFragment are monsters
    BaseActivity and BaseFragment are monsters

    By Reza Bigdeli

    An old tale of composition over inheritance, sort of! One of the good practices when writing code is “Reusability”. Instead of writing the same code multiple times, we should write it once and use it wherever we need to. Simple as that! Well not so fast! How can we achieve it though? The first thing that comes to mind is to find the similarities/duplications and put them in a base class. This way whoever that is extending our base class can have the functionalities out of the box without needing to write them over again! But there is a problem with this approach

     

    By ProAndroidDev -
    Android News
    Kotlin Unit Tests with Parameters
    Kotlin Unit Tests with Parameters

    By Catalin Gheorghe

    One thing we can all agree on is that any project can benefit from well written unit tests. There are some cases where writing unit tests feels repetitive and sometimes we can end up duplicating code just to change the input and the expected output.

    By ProAndroidDev -
    Android News
    Android Legacy Codebase Refactoring
    Android Legacy Codebase Refactoring

    By Kumar Gaurav

    When we talk about refactoring the code, the very first thing which comes to mind is that “Why to change something which already works”. We often convince ourselves by telling that we should focus more on fixing customer issues, adding new requirements/features as this is the area from where actual money comes in. 

    By ProAndroidDev -
    Android News
    How I resolved Jacoco plugin error after upgrading gradle to 6.1.1
    How I resolved Jacoco plugin error after upgrading gradle to 6.1.1

    By Sujata Swamy

    Hello guys!! We all know how important it is to keep our android gradle build tools updated. This post is not about any prerequisites to upgrade gradle version to 6.1.1 but its just the experience i wanted to share that i faced on upgrading the gradle version from 5.4.1 to 6.1.1. So as always we receive the message to update the gradle, so we are tempted to update it to get the benefits of the improvements in the build system.

    By ProAndroidDev -
    Android News
    Going deep on Flows and Channels - Part 2! Flows
    Going deep on Flows and Channels - Part 2! Flows

    By Julián Ezequiel Picó

    We already know what cold & hot streams are (and if you don’t, check the previous article, link below). Now, let’s discover our first Kotlin Stream implementation: Flows. Again, you can see some examples by checking the GitHub Repository. There are very small and simple cases that will help you to understand how to use Flows and some other stuff.

    By ProAndroidDev -
    Android News
    Change DI Library from Koin to Dagger-Hilt
    Change DI Library from Koin to Dagger-Hilt

    By Hongbeom

    My first Android DI library was Koin. Dagger had a high running curve at the beginning and it was difficult to learn, and at that time, I used Koin to build an app at the company I work for. Recently, the Android studio unveiled a library called Dagger-Hilt, which makes it easier to use Dagger, which has a disadvantage of being difficult to learn. I didn’t know anything about the dagger, but I thought I should learn it someday, so I started using the Dagger-Hilt.

     

    By ProAndroidDev -
    Android News
    Optimizing Gradle Daemon’s memory and cache usage
    Optimizing Gradle Daemon’s memory and cache usage

    By Rafa Araujo

    When we build our project with Gradle, either by command line or by Android Studio, a long-running background process that runs the builds called Daemon is used. The Daemon is used not only to avoid the cost of starting the JVM for each build but also to cache information about the project structure, files, tasks, and more in memory. This makes the next compilations much faster.

    By ProAndroidDev -
    Android News
    How I resolved WindowManager.BadTokenException for ToasthandleShow
    How I resolved WindowManager.BadTokenException for ToasthandleShow

    By Niharika Arora

    “Every problem is a gift — without problems, we would not grow.” ― Anthony Robbins. When we have to display information for a short span of time in Android, we use Toast. Here are some key features: It provides simple feedback about an operation in a small popup, It is a view containing a quick little message for the user, It only fills the amount of space required for the message and the current activity remains visible and interactive.

    By ProAndroidDev -
    Android News
    Integrate Virtual Reality experience in your apps with ExoPlayer
    Integrate Virtual Reality experience in your apps with ExoPlayer

    By Javier Marsicano

    ExoPlayer has been a widely used library to implement customized video players into Android apps since it’s an open source library supported by Google. It is an alternative to Android’s MediaPlayer API providing many more out-of-the-box features as well as supporting a lot of video formats and sources. Hence, we can develop an advanced and tailored video player avoiding reinventing the wheel.

     

     

    By ProAndroidDev -
    Android News
    Testing Espresso Matchers
    Testing Espresso Matchers

    By Fábio Carballo

    If you are using instrumentation tests in your Android app, it is likely that you are using Espresso— allowing you to define expectations about your app screens and how to interact with them. During your day-by-day as a developer you will eventually implement some custom views.

    By ProAndroidDev -
    Android News
    My Android project template
    My Android project template

    By Nicola Corti

    Have you ever experienced something like this: Have a great idea for a weekend project, Create a new repository, Setup a proper CI to build your project, Setup a code formatter to enforce code-style, Start reading articles about tool name here...Weekend is over 😅, Repeat

    By ProAndroidDev -
    Android News
    N26 Cards in Flutter, part one
    N26 Cards in Flutter, part one

    By Aleksandar Balalovski

    I find any technology a tool to create wonderful things. That was one of the reasons why I gave Flutter a chance. To be honest it shook my world in a very pleasant way. One of the key benefits that I, as an Android engineer first noticed is the immediate feedback loop. If every talented and curious developer out there develops the things at the moment a creative energy flows, how many wonderful features, products or concepts can happen in a span of one Android clean-build?

    By ProAndroidDev -
    Android News
    The forgotten art of construction
    The forgotten art of construction

    By Danny Preussler

    How tools made us forget how to write sane constructors. In an ideal world, developers get smarter every day. The code we write this year should be better than the code we wrote 10 years ago, which in turn should be better than the code 20 years ago. Today we have better tools, more modern languages, and better practices. But as often in life, we realize we are not living in that ideal world. 

    By ProAndroidDev -
    Android News
    Building Scalable Navigation System in Android
    Building Scalable Navigation System in Android

    By Ahmed Abd-Elmeged
    Navigation sounds like a trivial problem to solve right? as you start an activity or a fragment and the flow goes on. But Let’s be real that is not how it works. Usually, you will have a ton of conditional navigation like, is that user is logged in? is that his/her first time should I open home? or should I open the onboarding flow? How many screens can I trigger the auth flow from?

    By ProAndroidDev -
    Android News
    Making Application class much cleaner! Dagger vs App Startup
    Making Application class much cleaner! Dagger vs App Startup

    By Jaewoong Eum

    Application class is the first entry point of the android application process and it’s for maintaining a global application state. It is always running while our activities and services are running and also it is the first context to be created and the last to be destroyed. So it manages lifecycles of the whole applications using ApplicationContext, we can access the application’s resources, show toast messages, and create instances of Android SDK related classes that use it.

    By ProAndroidDev -
    Android News
    Automating the Android Build and Release Process using Fastlane and Circle CI-Part 4
    Automating the Android Build and Release Process using Fastlane and Circle CI-Part 4

    By Roger Taracha

    This is Part 4 of the blog series Automating the Android Build and Release Process using Fastlane. In case you haven’t read the 3 posts that precede this one, here are links to Part 1, Part 2 and Part 3. This will be a somewhat long and detailed post, so I would recommend that you grab a cup of coffee as you begin reading this. ☕️

    By ProAndroidDev -
    Android News
    Retrofit CallAdapter for Either type
    Retrofit CallAdapter for Either type

    By Lukasz Kalnik

    The Arrow.kt Either type is very practical for handling domain errors in the app. What if we could get the type returned directly from our REST API calls made with Retrofit and use it consistently in the whole application? Retrofit gives us two kinds of errors:

    By ProAndroidDev -
    Android News
    Get your own personal Code Search
    Get your own personal Code Search

    By Alex Saveau

    When it comes to finding a piece of code, GitHub’s search can be less than helpful at times. In stark contrast to that, the public version of Google’s Code Search tooling absolutely kicks ass. cs.android.com and cs.opensource.google are my go-to tools for finding open source Google code, but unfortunately, they’re just that: Google Code Search. If you’re looking for non-Google code, you’re out of luck. Until now.

     

    By ProAndroidDev -
    Android News
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 5! Deploy on Heroku
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 5! Deploy on Heroku

    By Cristian Villaseca

    Heroku is a cloud platform as a service that supports Kotlin. It has a free plan that will allow us to start working on integrating our clients with our API and is very easy to configure. I’m going to use a Github Action to make automatic deploys every time something is pushed to master. After you have created an account, we can follow with the next steps:

    By ProAndroidDev -
    Android News
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 4! Testing
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 4! Testing

    By Cristian Villaseca

    Now that we have our API working we need to make sure that it works as expected, in this part I’m going to explain how to write Unit tests: They cover small pieces of code, don’t cross layers and they execute fast. I also want to mention the Integration tests, they don’t use mock data and cross all the layers, which is the reason why they are slower compared to unit tests. To do Integration testing we need a testing database which. which it is out of the scope of this tutorial.

    By ProAndroidDev -
    Android News
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 3! Adding a H2 database
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 3! Adding a H2 database

    By Cristian Villaseca

    H2 is a relational database management system written in Java. It can be embedded in Java applications so it is perfect to not spend a lot of time installing and setting up a database and focusing on our API instead. 

    By ProAndroidDev -
    Android News
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 2! Security with OAuth2
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 2! Security with OAuth2

    By Cristian Villaseca

    OAuth 2.0 is a protocol that allows a user to grant limited access to their resources on one site, to another site, without having to expose their credentials. It allows limited access to the user’s data and allows accessing when authorization tokens expire. It has ability to share data for users without having to release personal information. It is easier to implement and provides stronger authentication. Click here to learn more about OAuth2.

    By ProAndroidDev -
    Android News
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 1! Initial setup and Controller
    How to create a REST API for your App with Spring Boot, Kotlin and Gradle Part 1! Initial setup and Controller

    By Cristian Villaseca

    As an Mobile Engineer, I’ve tried numerous times to build an API for my App projects and I’ve always ended up frustrated for reasons like: Not understanding the language or the framework I’m using, Not willing to pay for hosting before the project goes live, Using a platform that won’t scale up. So after all these problems, I decided to write the Rest API using the Spring Boot framework, in Kotlin, and with Gradle as a dependency provider (instead of Maven).

    By ProAndroidDev -
    Android News
    ViewModel by Dependency Injection! from Dagger to Hilt
    ViewModel by Dependency Injection! from Dagger to Hilt

    By GuilhE

    I assume the reader has knowledge and strong base concepts of Kotlin, Dagger, and Android App Architecture. The purpose of this article is to show an Activity evolution — can also be applied to a Fragment — to accommodate a ViewModel setup. Throughout this journey we’ll see how dependency injection will fit in by using the following approaches:

    By ProAndroidDev -
    Android News
    Android MotionLayout! Creating the Twitter Splash Screen Part II
    Android MotionLayout! Creating the Twitter Splash Screen Part II

    By Waseef Akhtar

    I didn’t plan to write this at first since my last tutorial covers pretty much everything about MotionLayout I intended to write about. But..I received questions on social media about this one action several times, which is about how to move to next screen after our animation is complete. I thought it’d be easy to figure out on your own but when I looked around, I figured that there aren’t very many resources for MotionLayout yet.

    By ProAndroidDev -
    Android News
    App Startup 🚀 plus Hilt 🗡
    App Startup 🚀 plus Hilt 🗡

    By Bartek Lipinski

    Initializing app start is an unexpectedly complex problem. I have already briefly raised the subject here. I will address how the new App Startup library from Google’s Jetpack handles (or doesn’t handle 😉) the problem in a different blog post. This one simply describes how to bind App Startup with Hilt.

    By ProAndroidDev -
    Android News
    Fueled Reactive apps with Asynchronous Flow - Part 3 - Data layer Implementation
    Fueled Reactive apps with Asynchronous Flow - Part 3 - Data layer Implementation

    By Raul Hernandez Lopez

    The most exciting moment for a software engineer surely is when enjoys coding and gets stuff done. However, for the pragmatic developer, implementation details should be as important as the process to get things done, because the difference is on the details, isn’t?

    By ProAndroidDev -
    Android News
    How to get a list of installed apps in Android 11
    How to get a list of installed apps in Android 11

    By Nikit Bhandari

    In Android 11, we can see a lot of updates that improves privacy. If your app uses thePackageManager methods to get the list of installed apps in the user’s device, you will have to make some changes in your code for devices using Android 11. In this blog post we will be discussing all our options. If you are already querying user’s installed apps, the following code snippet will look familiar. This is how you can get a list of installed apps of the user.

    By ProAndroidDev -
    Android News
    AndroidX! App Startup
    AndroidX! App Startup

    By Husayn Hakeem

    AndroidX App Startup is a new addition to the Jetpack suite of libraries. This article takes an initial look at it, and focuses on 3 things: Why it was created, what it is, and how you can get started using it. It isn’t uncommon for libraries to run some initialization logic on app startup. Libraries such as WorkManager and Lifecycle run this initialization code on app startup using a ContentProvider, which allows to automatically run the initialization once the app goes through a cold start before Appliation.onreate( ) is invoked.

    By ProAndroidDev -
    Android News
    Remote logging with Timber and Firebase Realtime Database
    Remote logging with Timber and Firebase Realtime Database

    By Vipin KT

    Logging is an essential part of software development. It helps developers to see what the application code is really doing. Android SDK has a built in class called Log. It contains utility methods to log messages with different priorities. The problem with Log class is that every time we need to to provide a TAG for the log and we have to make sure that the log messages are disabled in production.

    By ProAndroidDev -
    Android News
    Making Network Calls with LiveData Transformations
    Making Network Calls with LiveData Transformations

    By Kunal Chaubal

    Reactive programming has been trending in Android for quite some time now, mainly because it simplifies the process of writing async code. LiveData is a variant of the original observer pattern, with the addition of active/inactive transitions, allowing communication between the data source and other UI components. With LiveData, comes Transformations, which provides a better way to perform manipulations on the LiveData instance. Think of Transformations as Util class for LiveData that helps in modifying the data as required.

    By ProAndroidDev -
    Android News
    Scalable Architecture For Big Mobile Projects
    Scalable Architecture For Big Mobile Projects

    By Alexey Glukharev

    Today we will talk about architectural decisions that are more complex and global than the architecture of the presentation layer (like MVP, MVVM, MVI, etc). We will talk about how to build an extensive application and make this an efficient workplace for dozens or hundreds of developers. With these techniques, your application will be able to scale to any size regardless of how much code you’ve written.

    By ProAndroidDev -
    Android News
    Migrating to AndroidX! The time is right! Let s summarize it!
    Migrating to AndroidX! The time is right! Let s summarize it!

    By Anoop M Madasseri

    The final version of the support library is 28.0.0 and it’s no longer maintained. So, If we want bug fixes or new features that would have previously gone into the Support Library, we need to migrate to AndroidX. All new Jetpack libraries will be released in AndroidX namespace.

    By ProAndroidDev -
    Android News
    Important Changes in New Android Studio 4.0
    Important Changes in New Android Studio 4.0

    By Elvina Sh

    Hi there! I am from the Navigine team. For eight years we have been providing integrated positioning mobile technologies that enable advanced indoor navigation and proximity solutions. I wrote an article about new Android R important changes and after the release of the new Android Studio, I decided to review all the changes and new features of it. I already managed to test the new android studio, so I decided to analyze in detail each change and innovation with which we will use in the future. So let’s start!

    By ProAndroidDev -
    Android News
    Dark Mode on Android App with Kotlin
    Dark Mode on Android App with Kotlin

    By Manuel Ernesto

    On the Google I/O 2019, the Google team presented the possibility to developers add a dark theme to the android applications and since then many application has already been updated with this feature like example: Youtube, Instagram, Chrome and so many others. In this article, I will explain how you can implement dark mode in your application in an easy way.

    By ProAndroidDev -
    Android News
    Dagger 2 setup with WorkManager - 2020 Edition
    Dagger 2 setup with WorkManager - 2020 Edition

    By Tuan Kiet

    WorkManager has come a long way, there are a lot of changes and improvements in the library but the Dagger setup remains unchanged and still working well. Despise all of that, I feel like my article 2 years ago is a bit out of date. So here you are, the 2020 edition with the latest stuff and best practices updated.

    By ProAndroidDev -
    Android News
    Obfuscating Android Apps! Do you know your choices for protection
    Obfuscating Android Apps! Do you know your choices for protection

    By Lina Berzinskas

    PreEmptive participated as a partner in droidcon Berlin, droidcon NYC and droidcon San Francisco in 2019. This article is based on comments, questions and feedback we gathered from discussions with developers at these events. We wanted to summarize our answers in an article to help you understand some of the key differences between ProGuard, DexGuard and DashO which are the three leading obfuscation, code shrinking and code optimization tools.

    By ProAndroidDev -
    Android News
    Finding a Beacon without losing It! My journey into a realm of Bluetooth Low Energy on Android
    Finding a Beacon without losing It! My journey into a realm of Bluetooth Low Energy on Android

    By Artem Gapchenko

    Recently I’ve been playing with my own beacon monitoring library. I was curious if I could build something that would fit my needs while being significantly simpler than the AltBeacon solution from Radius Networks. While I was working on it, I’ve found several unexpected quirks (from bugs that lead to crashes, to bugs that lead to the necessity of the device’s factory resets) that I want to share with you today.

    By ProAndroidDev -
    Android News
    Learn By Doing ! Executing a list of Retrofit requests Asynchronously using Coroutines on Android
    Learn By Doing ! Executing a list of Retrofit requests Asynchronously using Coroutines on Android

    By Shivam Dhuria

    I use val dogBreedList = api.getBreedsList().message.keys.toList() to fetch all the breeds and convert it into a List. This happens in background thread ,Dispatcher.IO as explained in Part 1 because of the suspend modifier in retrofit requests in MainActivityApi.kt.

    By ProAndroidDev -
    Android News
    Android Studio! Layout Inspector
    Android Studio! Layout Inspector

    By Peter-John Welcome

    Android Studio 4.0 was recently released to the stable channel and it came with many new features. A feature I’ve been looking forward to has been the Layout Inspector. I’ve been doing mobile development for a while, including iOS development, and when debugging iOS apps, especially when it came to UI bugs, Xcode had a great tool for this. It was called Debug View Hierarchy. 

    By ProAndroidDev -
    Android News
    New Android R Important Changes
    New Android R Important Changes

    By Elvina Sh

    Hi there! I am from the Navigine team. For eight years we have been providing integrated positioning mobile technologies that enable advanced indoor navigation and proximity solutions. This article will be devoted to changes in the new android, which will appear from day to day, but previews and docks for which are already available.

    By ProAndroidDev -
    Android News
    Fueled Reactive apps with Asynchronous Flow - Part 2 - Asynchronous communication! Streams and Basics
    Fueled Reactive apps with Asynchronous Flow - Part 2 - Asynchronous communication! Streams and Basics

    By Raul Hernandez Lopez

    Refactoring an application to use modern techniques and libraries can be really challenging. This post is the second part where I explain how I started to learn about the concepts that are a must-do for it. Since the presentation had a limited time to speak about some topics, they were covered quickly sometimes, but here I want to tell in-depth or at least trying about a few subtle details.

    By ProAndroidDev -
    Android News
    LiveData transformations
    LiveData transformations

    By Peter Törnhult

    LiveData is a great tool to use when working with Android Architecture Components. Before I knew how to use the Transformations class, I was abusing LiveData and creating a lot of code-smell. Having worked with LiveData and Architecture components for a few years now I think I’ve figured out some good practices and patterns that I’d like to share with you.

    By ProAndroidDev -
    Android News
    Exploring Dagger-Hilt and what s main differences from Dagger-Android
    Exploring Dagger-Hilt and what s main differences from Dagger-Android

    By Jaewoong Eum

    Dagger is one of the most popular and most used libraries for building dependency injection, especially in Android. But the initial cost of learning is high and beginners are difficult to debug and hard to understand what’s going on in the compile time. So here is another powerful DI weapon for beginners and old dagger users: Dagger-Hilt. In this post, we will look around what’s big differences from dagger-android and dagger-hilt and what’s the benefits bu using Hilt.

    By ProAndroidDev -
    Android News
    Four Steps to Achieve Dynamic Transitions with Motion Layout on Android
    Four Steps to Achieve Dynamic Transitions with Motion Layout on Android

    By Kunal Chaubal

    Animations and transitions are essential ingredients for developing any mobile application. Think about how rarely we come across apps that do not have at least one animated component. It helps in keeping the app as user friendly as possible and becomes a very effective marketing tool.

    By ProAndroidDev -
    Android News
    Styling Theme with Dark Mode and Material Components in Android Applications
    Styling Theme with Dark Mode and Material Components in Android Applications

    By Shivam Dhuria

    Use this as starting point for this guide.Naming Convention. Since there is no way to differentiate between a style or a theme as both a wrapped around in 

    By ProAndroidDev -
    Android News
    Accommodate your project-specific needs with custom templates
    Accommodate your project-specific needs with custom templates

    By Vipin KT

    Android Studio has a set of pre-packaged templates for creating Activities, Services, Layouts etc. They reduce the burden of writing the same piece of code again and again. But if you are following a specific architecture (or a certain pattern of writing code) in your project, then these template may-not be suited for your needs as they are too generic. And it will take much time to adjust the code in each file generated by the template to follow your architecture.

    By ProAndroidDev -
    Android News
    Auto fetching string resources
    Auto fetching string resources

    By Michael Spitsin

    Recently I received an interesting wish from my PM. He asked me: “If I will change one of the translations, will we need to release a new version of the app?”. I said that yes because we need to rebuild everything. And he said: “It would nice to have the possibility to not release every time when a translation is changed by PM”.

    By ProAndroidDev -
    Android News
    Hilt! First Impressions
    Hilt! First Impressions

    By Remco Mokveld

    The hilt of a dagger, sword or lightsaber is used to be able to hold the weapon without cutting yourself in the fingers. Hilt is the latest attempt from Google to attempt to prevent you from cutting yourself when using Dagger. Shortly before the alpha release I started playing with it a bit. Being a big dagger-android fan I must say I was skeptical at first, but diving into it I found it to be pretty amazing.

    By ProAndroidDev -
    Android News
    Android Material Component! Creating a Gmail like Navigation Drawer
    Android Material Component! Creating a Gmail like Navigation Drawer

    By Waseef Akhtar

    If you’ve been following me on Medium for a while, chances are, you might have passed by my blog posts regarding an easy approach to Navigation Drawer and styling it: Since those posts are more thorough, I know that it’s intimidating to consume so much knowledge all at once. And I know that because I received a few DMs asking about styling specific elements in the Navigation Drawer after those posts.

    By ProAndroidDev -
    Android News
    A Quick Guide for using Material Components in Android
    A Quick Guide for using Material Components in Android

    By Shivam Dhuria

    For this tutorial, we will be styling an App with Material Theme.The application basically fetches a list of items from [Imgur Api] and displays it via a Recycler. For this guide however, we will just be working with the design of the App using everything material!

    By ProAndroidDev -
    Android News
    Jetpack Compose! Calculator UI
    Jetpack Compose! Calculator UI

    By Ahmed Rizwan

    Cloned Android 10’s Calculator UI using Jetpack Compose, as it’s (surprisingly) one of the more complex UI structures. Before I get into it — previously I also covered Twitter UI —so check that out as well:

    By ProAndroidDev -
    Android News
    Efficiently configuring binary dependencies in a multi-flavour Android project
    Efficiently configuring binary dependencies in a multi-flavour Android project

    By Vipin KT

    One year back while working on a project, we were tasked to create a separate application for a specific country (China). It was suppose have the same functionality of the main application but with a some changes. Initial thought was of copying the project and making changes to fit for the requirement. But the problem is that as new features will get added in future, maintaining the code will became a headache.

    By ProAndroidDev -
    Android News
    Do I need to call suspend functions of Retrofit and Room on a background thread
    Do I need to call suspend functions of Retrofit and Room on a background thread

    By Lukas Lechner

    After publishing my open source project about Coroutines on Android, which currently includes 16 of the most common, real-world use cases of using Coroutines in an Android application, one of the most common questions I get from developers was whether or not we have to switch to a background thread whenever we call a suspend function to make a network request with Retrofit or a database call with Room in order to not block the main thread which would make the UI freeze and get unresponsive.

    By ProAndroidDev -
    Android News
    Fueled Reactive apps with Asynchronous Flow - Part 1 - Use case and Migration Strategy
    Fueled Reactive apps with Asynchronous Flow - Part 1 - Use case and Migration Strategy

    By Raul Hernandez Lopez

    During this first part, I will introduce both the Use case which drove me to create the presentation called “Fueled Reactive apps with Asynchronous Flow” and what the Migration strategy I decided to take forehand. This is the story behind the scenes of the presentation

    By ProAndroidDev -
    Android News
    Learn Dagger by Visualization
    Learn Dagger by Visualization

    By Eric N

    As explained by Dan Lew, it simply means passing dependencies through your class’s constructors or functions’ parameters so as to be able to swap them in unit tests. (MVP is used for simplicity here. Same concepts apply to MVVM). Here’s a very basic testable Presenter that make use of dependency injection:

    By ProAndroidDev -
    Android News
    Sequences vs Iterable in Kotlin
    Sequences vs Iterable in Kotlin

    By Angélica Oliveira

    Let's see the difference between them and use the benchmark library to compare their efficiency. In Android it is really hard to think about an application without a RecyclerView. There are so many usages in our apps, like lists of contacts, users, clients, products, etc. Lists are part of our everyday life as developers, and of course, as users too!

    By ProAndroidDev -
    Android News
    Android Development - Internal Storage and The Evolution of External Storage
    Android Development - Internal Storage and The Evolution of External Storage

    By Harshal Dev

    The official Android documentation carries no pages dedicated specifically to the topics of Internal and External storage. Though one of it’s pages provides an Overview of the Android Storage Model and explains the different ways you can store your application’s data, it still fails to provide any exact definitions of Internal or External storage and touches upon these topics only very briefly.

    By ProAndroidDev -
    Android News
    Understanding Kotlin Coroutines with this mental model
    Understanding Kotlin Coroutines with this mental model

    By Lukas Lechner

    For the majority of developers, the concept of a coroutine is pretty unfamiliar, although the first ideas date back to the early sixties. This is because we started to learn Software Development with programming languages like Java, in which the concept of a coroutine simply does not exist. What we did learn, however, are how basic concepts like classes, functions, and interfaces work.

    By ProAndroidDev -
    Android News
    Stop using Gradle buildSrc Use composite builds instead
    Stop using Gradle buildSrc Use composite builds instead

    By Josef Raska

    buildsrc is a directory at the Gradle project root, which can contain our build logic. This allows us to use the Kotlin DSL to write our custom build code with very little configuration and share this logic across the whole project.

    By ProAndroidDev -
    Android News
    Dagger Tips! Leveraging AssistedInjection to inject ViewModels with SavedStateHandle and Map-Multibinding to constructor-inject Workers in WorkManager using WorkerFactory
    Dagger Tips! Leveraging AssistedInjection to inject ViewModels with SavedStateHandle and Map-Multibinding to constructor-inject Workers in WorkManager using WorkerFactory

    By Gabor Varadi

    Dependency injection is great. It can massively simplify our code, manage the lifecycle, instance count and scope of our object instances, and the more powerful DI solutions can even automatically resolve the dependency graph for us, potentially just by adding a single annotation to our constructor Inject), without us having to manually configure providers for our classes.

    By ProAndroidDev -
    Android News
    Activity Results API! A better way to pass data between Activities
    Activity Results API! A better way to pass data between Activities

    By Andrew Japar

    As we know passing data and getting responses between two activities are the most common thing we do during the development phase for a long time ago. Currently, the only way to get responses back from the next activity is passing Intent and requestCode through startActivityForResult.

    By ProAndroidDev -
    Android News
    360 degree image showcase in Flutter
    360 degree image showcase in Flutter

    By Harpreet Seera

    From handbags to power tools to electrical components to automobiles, 360° product photography is the most effective way to provide visual information that builds buyer trust and confidence in your brand. When searching products on any e-commerce or product based application, customers want to virtually “touch” and visualise your product/merchandise. 

    By ProAndroidDev -
    Android News
    Exploring Dependency Injection in Android - Dagger Koin and Kodein
    Exploring Dependency Injection in Android - Dagger Koin and Kodein

    By Sherry Yuan

    Dagger has been the reigning dependency injection library in Android for a long time, but a few alternatives have appeared recently. I’ve used Dagger and Koin while working at Yelp and Hootsuite in enterprise-scale Android projects, and played around with Kodein in personal projects, and wanted to compare and contrast using the three different libraries.

    By ProAndroidDev -
    Android News
    Firebase Predictions 🔮
    Firebase Predictions 🔮

    By Vladimir Jovanović

    Firebase provides a wide variety of tools, something for every developer and something for every problem. But did you know that it has a tool that enables you to see into the future 🔮😮?! Yes, you heard me right, the tool called Firebase Predictions enables you to predict future actions of your users.

    By ProAndroidDev -
    Android News
    An amazing analytics architecture for Android apps! Part 1
    An amazing analytics architecture for Android apps! Part 1

    By Mikhail Kulaha

    If you have ever implemented analytics on Android you know how hard it can be to attach it to the existing app structure. Everything looks more or less fine as long as the number of events doesn’t go over a certain number. However, once the quantity of events starts to increase, support becomes really difficult. Events start to stick out from places where they shouldn’t be, properties start to disappear and everything becomes a huge mess.

    By ProAndroidDev -
    Android News
    Adding Google AdMob to an Android application
    Adding Google AdMob to an Android application

    By Deborah Yambenu

    AdMob is Google’s advertising platform specifically designed for mobile applications. AdMob allows you to monetize your apps by serving ads selected according to criteria you define. So if you’ve developed an Android app and now you want to make money with your app, in this article I show you how to do it, how to add different ad formats to your apps.

    By ProAndroidDev -
    Android News
    Implementing Dark theme in your Android Application
    Implementing Dark theme in your Android Application

    By Kunal Chaubal

    With Android 10 rolling out in more and more devices every month, the need for an Android app to support dark mode is on the rise. And if you haven't already updated your app to support Dark theme, your app could soon appear to be an outdated application.

    By ProAndroidDev -
    Android News
    The Real Kotlin Flow benefits over RxJava
    The Real Kotlin Flow benefits over RxJava

    By Vasya Drobushkov

    Recently the article about Kotlin Flow benefits over RxJava was published by Antoni Castejón García. Though Antoni made a good work and many thanks to him for providing his feedback and experience (we need to share our thoughts, this improves community acknowledgment in various areas) — I found few places in the article with which I don’t fully or partially agree.

    By ProAndroidDev -
    Android News
    Abusing Dagger with Initializers
    Abusing Dagger with Initializers

    By Bartek Lipinski

    I started writing this as a simple answer to Facilitating dependency initialization with Dagger multibindings, but it grew very quickly so I eventually decided that I should release it as a standalone post. So that more people are able to read it.

    By ProAndroidDev -
    Android News
    Note Keeper with ML - A Pet Project Idea
    Note Keeper with ML - A Pet Project Idea

    By Ivan Shafran

    The article presents a pet project idea for Android developers. It includes design in Figma, useful links, and other tips. Initially, I’ve created the materials for an Android course for beginners. Most students were able to implement a project from scratch, so I believe this pet project is a good start point in Android development.

    By ProAndroidDev -
    Android News
    Android Unidirectional Data Flow - Kotlin Flow vs RxJava
    Android Unidirectional Data Flow - Kotlin Flow vs RxJava

    By Adam Hurwitz

    One of the many great things about the Unidirectional Data Flow (UDF) to organize an app’s logic is that it works with any reactive programming pattern, whether it be Kotlin coroutines Flow (Flow), ReactiveX (Rx) based RxJava/Kotlin, or LiveData. Kotlin coroutines version 1.0 was released at the end of 2018 and anecdotally has quickly been gaining adoption, alongside functionality.

    By ProAndroidDev -
    Android News
    Kotlin Collection s appended To By and With
    Kotlin Collection s appended To By and With

    By Elye

    Kotlin has lots of useful collection functions. It takes time to learn them all. To add to the challenge, some of the functions have variants where the name is appended with To, By and With. One good example that has it all is associate i.e. associate, associateTo, associateBy, associateByTo, associateWith and associateWithTo. 😵

    By ProAndroidDev -
    Android News
    Scaling an app for unexpected peaks
    Scaling an app for unexpected peaks

    By Mark Ng

    It’s been an extraordinarily difficult time for many people and companies as we live through the Covid19 pandemic. Australia Post has not been immune from the pandemic suffering serious declines in its letters and international parcels business. However, there has been a glimmer of hope with our domestic parcel volumes seeing record growth due the lockdowns and the shift to e-commerce.

    By ProAndroidDev -
    Android News
    Android Skeleton Repository for the infamous Initial Commit using MVVM plus Koin plus Coroutines plus Retrofit in Kotlin
    Android Skeleton Repository for the infamous Initial Commit using MVVM plus Koin plus Coroutines plus Retrofit in Kotlin

    By Kunal Chaubal

    As developers, you must be aware of the famous “Initial commit” that is pushed as the first commit to your repository. This forms as a base skeleton to your project on which we start building the app. This is the most crucial commit in the repository since this forms a building block of the project.

    By ProAndroidDev -
    Android News
    First ArCore app with - 100 lines of code
    First ArCore app with - 100 lines of code

    By Baljeet Singh

    Augmented reality is very popular these days. A number of popular apps are using this feature like Instagram, Snapchat etc for face filters. Today we will learn about ArCore (library provided by Google) for building our first AR-based application with approximately 100 Line of code.

    By ProAndroidDev -
    Android News
    Using a single RecyclerViewAdapter for every RecyclerView in your Android Application
    Using a single RecyclerViewAdapter for every RecyclerView in your Android Application

    By Kunal Chaubal

    If you have worked on android apps in the past, you must be aware of the crucial role that a RecylerView plays in the whole application. I have used this widget in all the applications that I have worked on until now and if I have learned anything about mobile apps, it is, lists are inevitable.

    By ProAndroidDev -
    Android News
    Making Asynchronous Network Calls With Kotlin Coroutines in Android
    Making Asynchronous Network Calls With Kotlin Coroutines in Android

    By Kunal Chaubal

    Coroutines were introduced with Kotlin v1.1 in 2017 and since then we have experienced asynchronous simplicity at its finest. Coroutines bring in a volley of power-packed features to the game and most of us have already witnessed it by now.

    By ProAndroidDev -
    Android News
    Playing with the new MergeAdapter on Android
    Playing with the new MergeAdapter on Android

    By Prateek Prasad

    Mobile apps have come a long way in terms of offering a rich user experience and have found new ways of structuring and surfacing information in the limited real-estate of a phone screen. Every app these days has some implementation of a “feed” of sorts that users interact with to consume the app’s content.

    By ProAndroidDev -
    Android News
    Part 3 - Single activity architecture plus some funky Dagger
    Part 3 - Single activity architecture plus some funky Dagger

    By Ian Alexander

    This series takes a basic MVP app using Retrofit and RxJava to display a list of Github repositories; and converts it into a modern Android app — along the way it will give an introduction to a variety of techniques used when architecting Android apps, explain why those techniques are used, and perform a few experiments to boot.

    By ProAndroidDev -
    Android News
    Retrofit Network Fetch Evolution
    Retrofit Network Fetch Evolution

    By Elye

    Android development has progressed more than a decade. Many lessons learned and approaches evolved. The below article provides a neat writeup of how Network Access has evolved in Android

    By ProAndroidDev -
    Android News
    Git repos as Gradle dependencies
    Git repos as Gradle dependencies

    By Alex Vasilkov

    It is not an uncommon desire to split your codebase into reusable libraries (git repositories). Let’s review what options we have if we want to include external code into a Gradle project. An obvious choice can be git submodules. Creating a git submodule is easy:

    By ProAndroidDev -
    Android News
    Default Error Handling With RxJava
    Default Error Handling With RxJava

    By Stephen Vinouze

    When working with RxJava, you’ll sooner or later end up dealing with this exception. Handling errors matter. RxJava throws an exception at you because you failed to take care of the problem. You must handle the error, or else your app will crash.

    By ProAndroidDev -
    Android News
    Be effective with Bitrise CI for Android - the lessons I learned the hard way
    Be effective with Bitrise CI for Android - the lessons I learned the hard way

    By Maciek Malak

    I won’t elaborate here on how important and crucial for any software development-oriented team the continuous integration (CI) practise is. I’m pretty sure we can all agree on how CI tools support our day to day effectiveness. How they might save dozens of hours spent on non-essential tasks. Yet, it’s common to present CI tools as a hassle; slow, bulky, 

    By ProAndroidDev -
    Android News
    How I published and distributed my LiveDataCallAdapter Android library
    How I published and distributed my LiveDataCallAdapter Android library

    By Roger Taracha

    In this article, I will explain to you the process that I used to publish my LiveData CallAdapter library. Let’s assume that you have already developed your Android library. You should have a library module in Android Studio as shown in the screenshot below: 

     

     

    By ProAndroidDev -
    Android News
    Parsing with Jackson and Kotlin
    Parsing with Jackson and Kotlin

    By Paneet Singh

    Jackson is one of the famous library to parse XML or JSON data though with Kotlin, some key factors are required to avoid unexpected issues. By default, Java provides a default constructor(if there’s no parameterized constructor) which is used by Jackson to parse the response into POJO or bean classes.

    By ProAndroidDev -
    Android News
    Type safety EventBus with RxJava 2
    Type safety EventBus with RxJava 2

    By Mkhytar Mkhoian

    When RxJava came to the world the Event bus pattern implementation becomes much easier, but we still need to write abstraction on top of the RxJava to make type safety API for our EventBus. First of all, create an EventBus interface.

    By ProAndroidDev -
    Android News
    Android Libraries on GitHub Packages
    Android Libraries on GitHub Packages

    By Chen Zhang

    An example Android project and walk-through of how to publish and consume libraries via GitHub Packages, along with features and tips such as achieving transitive dependencies through Gradle API dependency, source code availability in published package and local publishing through custom repo or MavenLocal.

    By ProAndroidDev -
    Android News
    Kotlin useful but unfairly not mentioned features
    Kotlin useful but unfairly not mentioned features

    By Vasya Drobushkov

    Many of us first learned Kotlin after Java. Learning process was fairly simple because Kotlin has many similarities when at the same time improves development experience by fighting common pain points Java developer (especially on Java 6, which is common in Android world) has to encounter every day.

    By ProAndroidDev -
    Android News
    When to use Internal App Sharing on Google Play or Firebase App Distribution
    When to use Internal App Sharing on Google Play or Firebase App Distribution

    By Peter-John Welcome

    Testing is a critical part of the software development cycle. There are different types of tests, such as unit testing, UI testing and even manual testing. When it comes to making app builds available to QA engineers, we can do this in many ways. 

    By ProAndroidDev -
    Android News
    Deep dive into Dagger generated code part 3
    Deep dive into Dagger generated code part 3

    By Alexander Sitnikov

    In previous blog posts, we looked at how different features of Dagger are implemented under the hood. We refactored and converted the generated code from Java to Kotlin to get a better understanding of it. In this blog post, we cover two more big topics: scopes and subcomponents.

    By ProAndroidDev -
    Android News
    Deep dive into Dagger generated code part 2
    Deep dive into Dagger generated code part 2

    By Alexander Sitnikov

    In the previous blog post, we looked at the different types of classes Dagger generates. Converting the generated code from Java to Kotlin with some additional refactoring removes visual noise and helps us understand it better.

    By ProAndroidDev -
    Android News
    GitHub CLI - GitHub From The Command Line
    GitHub CLI - GitHub From The Command Line

    By Nate Ebel

    GitHub recently announced GitHub CLI; a first-party command line tool for interfacing with GitHub from the command line. With GitHub CLI, developers can check the status of GitHub issues and pull requests, search for a specific issue or PR, create/fork a repo, or create new issues and pull requests right from the command line.

    By ProAndroidDev -
    Android News
    Rewriting a Complex Screen with Epoxy and Unidirectional Data Flow
    Rewriting a Complex Screen with Epoxy and Unidirectional Data Flow

    By Nimrod Dayan

    One of the projects I was working on recently, which was among the first activity recording apps, had a very complex screen with a lot of user interaction and data (referred to as Workout Summary Screen from now on). Naturally, as you’d expect, it had legacy code and tech, which was a blocker for extending it with new features. A decision was made to rewrite this screen so that it can be easily extended with new features and also get rid of weird bugs.

    By ProAndroidDev -
    Android News
    Dagger 2 - Custom Scopes
    Dagger 2 - Custom Scopes

    By Harshitfit

    If you are a beginner to Dagger and have just started learning it, then this blog is not meant for you. You can checkout Dagger for Dummies to get a basic idea of what dagger is? But if you have implemented Dagger once or twice in your application then you are good to go.

    By ProAndroidDev -
    Android News
    What you might not know about the AlertDialog
    What you might not know about the AlertDialog

    By Tomerpacific

    This seemingly simple UI element has a lot of hidden features. If you have ever developed an application, you probably have used it. An AlertDialog’s main function is to notify users of something that is going to happen that requires their immediate attention and an action to be made on their end. 

    By ProAndroidDev -
    Android News
    My notes on learning Kotlin coroutines
    My notes on learning Kotlin coroutines

    By Fernando Raviola

    I found coroutines a bit counter-intuitive at first glance, so I figured I would document the unintuitive bits here as a future reference for myself and anyone else interested. I’ll try to keep it short. Let’s say we want to perform an asynchronous operation using Coroutines. To start off really simple, we’ll assume this operation doesn’t even return anything back:

    By ProAndroidDev -
    Android News
    Replacing Custom Views with View Binding
    Replacing Custom Views with View Binding

    By Jossi Wolf

    In our codebase, we use a lot of custom views for reusability — but most of the time, a custom view was overkill. Here’s how we used View Binding to replace some of our custom views.

     

    By ProAndroidDev -
    Android News
    Make elegant apps with Palette API
    Make elegant apps with Palette API

    By Prafull Mishra

    While we Android Developers constantly strive to make our apps more efficient under-the-hood, often in this run, we don’t pay much attention to over-the-hood, things that can improvise the app’s look and feel. As a result, we might miss upon the things that are just lying there waiting to be picked up.

    By ProAndroidDev -
    Android News
    Functional Data Mappers
    Functional Data Mappers

    By Denis Brandi

    A while ago I wrote a post about the Repository Pattern in which, among the other concepts, I explained the importance of model separation and data mapping. After reading the comments on my article I was glad to see readers agreeing on the approach and overcoming the general hate over “extra models” and “annoying mappers”.

    By ProAndroidDev -
    Android News
    Android command line automation with Makefile
    Android command line automation with Makefile

    By Phellipe Silva

    Let’s say you are setting up a pipeline to improve the continuous delivery of your app. During this setup, you need to disable the animations on a target device to run your Espresso tests and see that everything is working fine. Do you remember the ADB commands to disable these animations?

    By ProAndroidDev -
    Android News
    Gradle Remote Cache with Redis and Circle CI
    Gradle Remote Cache with Redis and Circle CI

    By Iñaki Villar

    I would say Remote Cache is one of the top features to optimize the build speed across the Development Team using Gradle as Build System. Today, we have different solutions and resources helping to create, manage and implement Remote Caching.

    By ProAndroidDev -
    Android News
    Android AlarmManager As Deep As Possible
    Android AlarmManager As Deep As Possible

    By Myrick Chow

    AlarmManager is a bridge between application and Android system alarm service. It can send a broadcast to your app (which can be completely terminated by user) at a scheduled time and your app can then perform any task accordingly.

    By ProAndroidDev -
    Android News
    Using LiveData and Flow in MVVM - Part III
    Using LiveData and Flow in MVVM - Part III

    By Süleyman Fatih Giriş

    We have seen using LiveData & Flow and only Flow in MVVM architecture in Part I and Part II. In this post, we will see how to test LiveData & Coroutines and Flow. We will be solving a common race condition problem between LiveData and Coroutines with TestCoroutineDispatcher. After that, we will see how easy to test the Flow 😎

    By ProAndroidDev -
    Android News
    Benefit from AndroidX FragmentFactory with Koin
    Benefit from AndroidX FragmentFactory with Koin

    By Ruslan Myhal

    TL;DR — At first I’ve implemented instantiating fragments with FragmentFactory by using pure koin-android dependency. But when I decided to write an article about this, I saw that everything that I wrote is already implemented in Koin and shipped as koin-androidx-fragment dependency ¯\_(ツ)_/¯. So here I will show you how things are implemented under the hood in koin-androidx-fragment.

     

    By ProAndroidDev -
    Android News
    Collections vs Sequences! War of use-cases!
    Collections vs Sequences! War of use-cases!

    By Suraj Shah

    A definite use-case driven guide to Collections vs Sequences in Kotlin. Kotlin has 2 APIs to perform operations on a list or a collection of data. Namely the Collections API and the Sequences API. Both of these have differences in the way they perform operations on the underlying elements.

    By ProAndroidDev -
    Android News
    Animations in Jetpack Compose using Transition
    Animations in Jetpack Compose using Transition

    By Nikit Bhandari

    In this blog post, we will understand how we can use different types of animations in Jetpack Compose using Transition. If you are interested in exploring other components in Jetpack Compose you can check out the series of articles that I have written.

    By ProAndroidDev -
    Android News
    Building a Beautiful Disney MVVM Android Application 2! Jetpack plus Architectures
    Building a Beautiful Disney MVVM Android Application 2! Jetpack plus Architectures

    By Jaewoong Eum

    In the last post, we found out about the motion systems in the new version of the material design. In this part, we’re going to find about the modern Android development tools and architectures.

     

    By ProAndroidDev -
    Android News
    Kotlin Multiplatform - Firebase plus MVVM
    Kotlin Multiplatform - Firebase plus MVVM

    By Javier Arroyo

    When I started researching about Kotlin Multiplatform, the idea of using Firebase in my Multiplatform projects soon occurred to me. At first, there was no library that could accomplish this, until TouchLab released its implementation to use Firebase and Firestore sharing the business logic code. This library is FirestoreKMP.

    By ProAndroidDev -
    Android News
    Deep dive into Dagger generated code part 1
    Deep dive into Dagger generated code part 1

    By Alexander Sitnikov

    Dagger is one of the most complex DI frameworks for Java and Android out there. It comes with compile-time safety and fast runtime but has a steep learning curve and requires a lot of boilerplate code to setup. When using Dagger, our goal is to set it up to generate the code that would solve our DI needs. By understanding the code Dagger generates we can better understand how to configure it properly.

    By ProAndroidDev -
    Android News
    Connectivity State on Android 10 and Above
    Connectivity State on Android 10 and Above

    By Yaroslav Berezanskyi

    Most of the modern apps rely on a connectivity state in one way on another. We as developers used to utilize the CONNECTIVITY_ACTION broadcast receiver along with NetworkInfo API to get the current network state. And it’s been working like a charm for many years long, but it’s time to say goodbye since both of them have recently become deprecated in favor of NetworkCallback.

    By ProAndroidDev -
    Android News
    Dagger dependencies beyond the basics
    Dagger dependencies beyond the basics

    By Fabio Collini

    Dagger is one of the most polarizing subjects in the Android community, either you love it, or you hate it. Some developers love it and say that it reduces boilerplate code. Other developers have different opinions and say that it’s too complicated and really verbose. So, does it reduce the boilerplate or is it too verbose? As it often happens in software development, the answer is: it depends!

    By ProAndroidDev -
    Android News
    Testing the untestable - the case of the ViewModel delegate
    Testing the untestable - the case of the ViewModel delegate

    By Danny Preussler

    Android’s ViewModel was a game-changer. Not only did it solve the problem of configuration changes like rotation, but it also showed to many in the community how to write more testable code. You can now test your ViewModels with simple unit tests. You might need a JUnit Rule or Extension in case you use LiveData but normally there is no need for slower Robolectric or even heavy Instrumentation tests.

    By ProAndroidDev -
    Android News
    Analyze and improve Android app performance with System Tracing
    Analyze and improve Android app performance with System Tracing

    By Duy Pham

    When you tap on your app icon, it launches, you feel that it’s slow. Well, it’s slow, what should you do to fasten the startup time? Then you’d google something like “how to speed up android app startup time” or “best practices for android app startup time”. That’s a good way, but all the instructions would come to this fundamental:

    By ProAndroidDev -
    Android News
    What to expect when converting an iOS app to an Android app in React Native
    What to expect when converting an iOS app to an Android app in React Native

    By Tomoaki Imai

    Recently, I worked on developing an Android app for my company’s product, which we have released an iOS app over a year ago. Since we are using React Native, a lot of code worked without making any change. 

    By ProAndroidDev -
    Android News
    Easy navigation in a multi-module Android project
    Easy navigation in a multi-module Android project

    By Gaël Marhic

    N26, my current company, has gone through hypergrowth in the last couple of years. As an example, the Android team has gone from 4 to almost 40 engineers. Such growth brought its share of technical challenges like build times and code ownership amongst others.

    By ProAndroidDev -
    Android News
    Building a DevOps pipeline for your App! Choose a CI or CD server
    Building a DevOps pipeline for your App! Choose a CI or CD server

    By Peter-John Welcome

    Generally when we think of CI/CD, we think of a build server. This could be a machine that we have locally or could be a cloud provider that lets us build our apps on some virtual machine somewhere in the world.

     

    By ProAndroidDev -
    Android News
    Android Multi-Module and Dagger! a real use case, step by step
    Android Multi-Module and Dagger! a real use case, step by step

    By Julián Ezequiel Picó

    Before we start, I have something to tell you: this will be a journey. I will present a real use case, and together we will develop the requirements step by step while finding different solutions and, of course, problems.

    By ProAndroidDev -
    Android News
    Android! Error handling in Clean Architecture
    Android! Error handling in Clean Architecture

    By Duy Pham

    We have started refactoring our android project for almost two years with Clean Architecture. Since that time the only topic that has been missing till now is error handling. Sometimes it’s confusing how to propagate errors crossing boundaries between layers.

    By ProAndroidDev -
    Android News
    Scanning Wi-Fi and Wi-Fi RTT on Android devices
    Scanning Wi-Fi and Wi-Fi RTT on Android devices

    By Elvina Sh

    HI there! We are the Navigine team. For eight years we have been providing integrated positioning mobile technologies that enable advanced indoor navigation and proximity solutions. And in this article, we decided to draw your attention to the scanning of Wi-Fi and Wi-Fi RTT on Android devices.

     

    By ProAndroidDev -
    Android News
    Simplest ever camera app in Android
    Simplest ever camera app in Android

    By Baljeet Singh

    In recent times we have seen a number of libraries launched by Google under androidx one of them in camerax which is under heavy development as of now. But some weeks back it had officially jumped into the beta stage. So today we will see how we can use this library to create a very simple camera app.

    By ProAndroidDev -
    Android News
    A cautionary tale on Android! do not call System exit
    A cautionary tale on Android! do not call System exit

    By Carlos Mota

    Once upon a time… there was an issue that was hidden in plain sight! It lived freely for years without no one noticing it. Until one day, during a connectivity problem, he appeared leaving us speechless.

    By ProAndroidDev -
    Android News
    Best Architecture For Android ! MVI plus LiveData plus ViewModel
    Best Architecture For Android ! MVI plus LiveData plus ViewModel

    By Rohit Surwase

    If you are already aware of basic principles of architecture patterns and MVVM and MVI patterns in detail then skip the basics and jump to MVI + LiveData + ViewModel (or second) section of the article.

    By ProAndroidDev -
    Android News
    Accessibility of text over random background colors
    Accessibility of text over random background colors

    By Vasya Drobushkov

    One of the important parts of application development is to make it accessible to as many users as possible. This includes people with impaired vision, color blindness, impaired hearing, impaired dexterity, cognitive disabilities, and many other disabilities.
    Making an app accessible is challenging but rewarding.

    By ProAndroidDev -
    Android News
    Make your Android application rock SOLID - Dependencies
    Make your Android application rock SOLID - Dependencies

    By Jorge Nicolás Nogueiras

    We've arrived in the last chapter of this series of posts about SOLID in Android development. Let's find out the power of Dependency Inversion and how to use it in our daily work to create maintainable and robust apps.

    By ProAndroidDev -
    Android News
    Supporting Dark themes in Android
    Supporting Dark themes in Android

    By Baljeet Singh

    In recent times we have seen a number of apps adopting dark theme. Also as now Android 10+ officially supports dark theme so many devs wanted to implement this feature in their apps, So today we will learn how we can support our apps to use dark Theme using Google material design library.

     

    By ProAndroidDev -
    Android News
    BackPress handling in Android Fragments, The old and the new!
    BackPress handling in Android Fragments, The old and the new!

    By MohammadReza

    One of the nice things that recently was introduced in the Android world in devSummit19 was the new way of handling back presses in the fragments which always was a bit of pain to implement. Previously if a fragment let’s say a SearchFragment needed to respond to back press events and close the SearchView, we had to go through all the steps as below:

     

    By ProAndroidDev -
    Android News
    No more NPE! Converting Java to Kotlin safely
    No more NPE! Converting Java to Kotlin safely

    By Dmitry Si

    So what’s the problem with NullPointerException in Kotlin? Both Google and JetBrains promote Kotlin as safe & interoperable language, not necessarily emphasizing enough that it’s not intrinsically free from NPEs, in fact, if misused Kotlin code will throw as many KNPEs and similar exceptions. How do we convert old Java code into Kotlin safely then?

    By ProAndroidDev -
    Android News
    Context free Android navigation
    Context free Android navigation

    By Josef Raska

    One of the challenges in the Android world is accessing user interfaces from the application logic. We are taught to keep the logic out of UI code, however we also need to use that UI for things like navigation, permissions or simply interacting with users from a background service.

    By ProAndroidDev -
    Android News
    Retrofit cancelling multiple API calls
    Retrofit cancelling multiple API calls

    By Baljeet Singh

    Today we will see how to use Retrofit for calling a single API multiple numbers of times and cancelling all previous calls before making a new one. Also, we will see how to use coroutines in action with Retrofit.

    By ProAndroidDev -
    Android News
    Dissecting the inline keyword in Kotlin! Chapter 2
    Dissecting the inline keyword in Kotlin! Chapter 2

    By Suraj Shah

    Chapter 2: If you’ve somehow landed here directly, would recommend you to check out the Chapter 1 of this 2 chapter series, where we learn about why does Kotlin need an inline keyword for functions. What and how does it work internally. And if you’ve already read it or know about it, hold on to your seat, cause it just couldn’t get more interesting!

    By ProAndroidDev -
    Android News
    Video preloading, precaching using Exoplayer 2 in Android
    Video preloading, precaching using Exoplayer 2 in Android

    By Baljeet Singh

    Many of the Android developers who have been working on Online streaming of videos must have faced issues like slow buffering. Especially the ones working on any social platform must have faced similar situations when there is a collection of huge video contents.

    By ProAndroidDev -
    Android News
    Bound And Foreground Services in Android, A step by step guide.
    Bound And Foreground Services in Android, A step by step guide.

    By Baljeet Singh

    In Android applications sometimes we often need that Activities/Other apps can communicate with each other. For this medium, we can use ‘Bound services’. It is like a server in a client-server architecture where there is several clients requesting something from the server and server responds them back with the required result.

    By ProAndroidDev -
    Android News
    Evolution of location access on Android
    Evolution of location access on Android

    By Denys Soroka

    In Sep 2008, Android provided developers with the ability to use GPS location with app users’ permission as part of the first Android 1 (API 1). Millions of apps have been built using location-based services in creative ways since then.

    By ProAndroidDev -
    Android News
    Suspend functions under the hood
    Suspend functions under the hood

    By Ashish Kumar

    Many of us have been using coroutines to manage asynchronous taskswhich might have otherwise blocked the main thread and cause our app to freeze.

    By ProAndroidDev -
    Android News
    Exploring WindowInsets on Android 11
    Exploring WindowInsets on Android 11

    By Fernando García Álvarez

    Android 11 Developer Preview 2 introduced a long-awaited feature: the ability to synchronize the app’s content with the IME (soft keyboard) and system bars as they animate on and offscreen, instead of having the view simply jump on top of the keyboard when it opens.

    By ProAndroidDev -
    Android News
    How to generate Android Unique ID
    How to generate Android Unique ID

    By William Gouvea

    Generate unique ID at Android platform is a recurring theme among developers and it’s very important in order to perform:

    By ProAndroidDev -
    Android News
    Sending logs via Internet from Android with Timber and Node.JS
    Sending logs via Internet from Android with Timber and Node.JS

    By Denis Shilov

    TLDR: I have written a simple realisation of logging through Internet. It might be helpful if your client (or, for example, a tester) has a strange bug and you want to see what’s happening on the device in real time

    By ProAndroidDev -
    Android News
    Working with NFC tags on Android
    Working with NFC tags on Android

    By Vivek Maskara

    In this post, I will show you how to read and write an NFC tag on an Android device. We would be using Android’s NFC capabilities to read and write a tag. In a different post, I will illustrate how APDU commands could be used to talk directly with an NFC tag.

    By ProAndroidDev -
    Android News
    Smart Casts via Assertions plus Kotlin Contracts
    Smart Casts via Assertions plus Kotlin Contracts

    By Andre Perkins

    There are three things I do every-time I start a codebase that I know that I will be maintaining for the long haul.

    By ProAndroidDev -
    Android News
    Building a Beautiful Disney MVVM Android Application 1 ! Material Motion Systems
    Building a Beautiful Disney MVVM Android Application 1 ! Material Motion Systems

    By Jaewoong Eum

    Google’s material design team shared a new project including the motion system and it is released in the new version of the material design. The motion system is a set of transition patterns that can help implement motion much easier.

    By ProAndroidDev -
    Android News
    Logging in a multi-module Android project
    Logging in a multi-module Android project

    By Dmitry Akishin

    No doubt, every developer is familiar with the concept of logging. We can log errors, debug messages and other useful information we might need during development. And although logging in Android is pretty easy and straightforward, it still can impose some challenges in a multi-module project. In this post we will look at one way to solve these problems.

    By ProAndroidDev -
    Android News
    Step by Step to Bottom Navigation with Jetpack s Navigation Component and multiple nav graphs
    Step by Step to Bottom Navigation with Jetpack s Navigation Component and multiple nav graphs

    By Carlos Daniel

    This is a simple guide that shows how to implement within a new android app, bottom navigation view along with navigation component supporting multiple navigation graphs. This is a simple way and one among others but is the one I feel comfortable with and so far, it covers all what I currently need.

    By ProAndroidDev -
    Android News
    Pre-populating your Room I
    Pre-populating your Room I

    By Nikolai Kotchetkov

    Shipping pre-built databases along with your application (or downloadable module) may have benefits both for user experience and your backend infrastructure: less server queries, less data transfer, faster response.

    By ProAndroidDev -
    Android News
    Pre-populating your Room II
    Pre-populating your Room II

    By Nikolai Kotchetkov

    This is a second part of two-part series on Room-friendly way to pre-package a database and ship it with your APK. This article focuses on application sample and packing all things together. Please take a look at part 1 for database pre-populating introduction.

    By ProAndroidDev -
    Android News
    Collecting the Garbage A brief history of GC over Android versions
    Collecting the Garbage A brief history of GC over Android versions

    By Augusto Herbel

    When I came to the Android world about two years ago, I didn’t know anything about how things were done. I came from a Java world learned in college and I learned about the Garbage Collector and how this piece of software affects the performance of an application, especially mobile devices where the resources are limited.

    By ProAndroidDev -
    Android News
    Glide ing your way into RecyclerView state invalidation
    Glide ing your way into RecyclerView state invalidation

    By Ricardo Costeira

    A few days ago, I worked on a sample project for a tutorial. It was a very simple app: a list of images, where you could click any image to view it in full screen. The code was simple, well structured, did what it had to do, and did it well.

    By ProAndroidDev -
    Android News
    Scanning Google Eddystone in Android Application
    Scanning Google Eddystone in Android Application

    By Navigine

    Hi there! We are the Navigine team. For eight years we have been providing integrated positioning mobile technologies that enable advanced indoor navigation and proximity solutions. And in this article, we decided to draw your attention to the scanning of Google Eddystone.

    By ProAndroidDev -
    Android News
    Android library distribution with maven-publish
    Android library distribution with maven-publish

    By Christian Schmitz

    Support for the Maven Publish plugin has landed in Android Studio 3.6. Unofficial implementations have been around with android-maven-publish or the abandoned android-maven-gradle-plugin. But these tools rely on internal Gradle APIs and thus have to be updated with every new release of the Android Gradle Plugin or Gradle itself.

    By ProAndroidDev -
    Android News
    Make your Android application rock SOLID - Interfaces
    Make your Android application rock SOLID - Interfaces

    By Jorge Nicolás Nogueiras

    Before starting to put some lights over the fourth principle (The Interface Segregation Principle), let’s make the "recap" of the previous ones. SOLID is the acronym that intends to join several principles about good design practices in software development. We have covered the first three letters of it and today it is the time for ISP.

    By ProAndroidDev -
    Android News
    Once upon a time in Kotlin
    Once upon a time in Kotlin

    By Alexey Soshin

    Lately I’ve stumbled upon an interesting task — executing a function exactly once, while invoked from multiple coroutines. That is, having:

    By ProAndroidDev -
    Android News
    Android Material Component! Navigation Drawer Styling Part III
    Android Material Component! Navigation Drawer Styling Part III

    By Waseef Akhtar

    In Part II, you’ve looked in to how to add color states for navigation menu items and adding shapes as background for the menu items. In this post of the series, we’re looking at how to add and style the header view of the NavigationDrawer. But first, here’s how far we’ve come since the original post.

    By ProAndroidDev -
    Android News
    Polling with Kotlin Channels and Flows
    Polling with Kotlin Channels and Flows

    By Mohit Sarveiya

    In this article, I will explore how to implement and test polling with Channels and Flow. Prior to reading on, please check out this article for understanding the basics of coroutines.

    By ProAndroidDev -
    Android News
    From RxJava to Kotlin Flow! Testing
    From RxJava to Kotlin Flow! Testing

    By Vasya Drobushkov

    Testing is a crucial part of whole development. Testing allows you to write programs in a reliable fashion, prevent regressions and have many other goodies. I won’t go through the list of advantages of writing tests in this article though. In testing it is important to have tools which allow you to write reliable tests and also tools which allow you to test your business logic.

    By ProAndroidDev -
    Android News
    Background BLE scan in DOZE mode on Android devices
    Background BLE scan in DOZE mode on Android devices

    By Navigine

    Hi there! We are the Navigine team. For eight years we have been providing integrated positioning mobile technologies that enable advanced indoor navigation and proximity solutions. Today we decided to open the doors to our technology and talk about how to scan BLE devices when the Android application is killed and in background mode.

    By ProAndroidDev -
    Android News
    Declarative lists on Android With RecyclerView plus ViewBinding
    Declarative lists on Android With RecyclerView plus ViewBinding

    By TJ

    The RecyclerView is an extremely flexible and indispensable Android ViewGroup. It unfortunately requires quite a bit of boilerplate to set up; a fully functional RecyclerView asks that you:

    By ProAndroidDev -
    Android News
    Android CameraX
    Android CameraX

    By Sergio Belda

    CameraX is a Jetpack support library, built to help you make camera app development easier. It provides a consistent and easy-to-use API surface that works across most Android devices.

    By ProAndroidDev -
    Android News
    The case for interfaces
    The case for interfaces

    By David Rawson

    Recently there’s been a bit of buzz around over-engineering in Android projects. Unfortunately, one person’s mere engineering is another’s overengineering. And vice versa. It’s like we’re trying to strike a median between Fizz Buzz Enterprise Edition and Big Ball of Mud.

     

    By ProAndroidDev -
    Android News
    The power of lazy properties in Kotlin
    The power of lazy properties in Kotlin

    By Andrew Lord

    Do you have properties in your Kotlin types that you want to create later after initialization? You may want to avoid making them nullable, avoid using lateinit or delay an expensive set up process to a later point.

    By ProAndroidDev -
    Android News
    Kotlin Flow on Android - Quick guide
    Kotlin Flow on Android - Quick guide

    By Thomas Middel

    RxJava has been around for a few years now and has been one of the main building blocks for many Android projects to date. Kotlin’s Flow is taking a serious shot at contending for this spot, but can it replace RxJava or is it too immature still to fit our needs?

    By ProAndroidDev -
    Android News
    Uploading a file with progress in Kotlin
    Uploading a file with progress in Kotlin

    By Andrew Lord

    Do you want to upload a file using the clean Retrofit syntax, but aren’t sure how to receive the result as well as the upload progress? We will be using Retrofit to perform the file upload, building an implementation that is able to receive the completion progress at intervals and then complete with the remote API response.

    By ProAndroidDev -
    Android News
    droidcon Online - A virtual event series
    By Greg Fawson
    Android News
    From RxJava to Kotlin Flow! Stream Types
    From RxJava to Kotlin Flow! Stream Types

    By Vasya Drobushkov

    In reactive programming we use streams. Therefore in both RxJava and Kotlin Flow we’ll have to use some streams. Though we’ll encounter some differences if we decide to migrate. In this article we’ll try to get into the stream types which have RxJava and Kotlin Flow and some important differences.

    By ProAndroidDev -
    Android News
    Android Material Component! An easy approach to Navigation Drawer (Part I)
    Android Material Component! An easy approach to Navigation Drawer (Part I)

    By Waseef Akhtar

    The Navigation is a powerful component in Android Development which provide easy access to destinations in your app. If you’ve come to this article, you probably know that and considering the title of the story, you’ve probably implemented it before.

    By ProAndroidDev -
    Android News
    Dissecting the inline keyword in Kotlin! Chapter 1
    Dissecting the inline keyword in Kotlin! Chapter 1

    By Suraj Shah

    Just in case you have been living under a rock and haven’t heard of Kotlin, I implore you do read this. And, if you have heard about it, tried it and used it at production level, then I would recommend you to read how an amazing compiler level optimization, which forms the basis for APIs like Collections and frameworks like Ktor, works.

    By ProAndroidDev -
    Android News
    Basic implementation of Navigation Architecture Component - Jetpack 🧨Part II
    Basic implementation of Navigation Architecture Component - Jetpack 🧨Part II

    By Ali Azaz Alam

    Android Jetpack is a collection of components and libraries (represent as X) to build a better application and navigation architecture component is a part of it. Navigation Architecture Component is a collection of libraries and plugins that provide its own set of classes to get rid of complex  Fragment Transition including Bottom navigation → that we will discuss it in our next part.

    By ProAndroidDev -
    Android News
    Say no to BaseActivity and BaseFragment
    Say no to BaseActivity and BaseFragment

    By Josef Raska

    There are many situations where you want to add functionality to all of an app’s screens. Examples can be: Analytics, Navigation, Displaying dialogs on screen, Handling runtime permissions, Reacting to lifecycle events for various libraries

    By ProAndroidDev -
    Android News
    Classes in Kotlin
    Classes in Kotlin

    By Magda Miu

    The journey in Kotlin Wonderland continues with an article about classes and objects. Until now we discovered details about Kotlin philosophy, basic types, control flow expressions, null safety and functions.

    By ProAndroidDev -
    Android News
    Kotlin Flow Assert Delight
    Kotlin Flow Assert Delight

    By Mohit

    How do we assert items are being emitted from a Flow? We could use collect, single, toList extensions on a Flow. But, I found a nice pattern used in the SQL Delight library for Flow assertions. In this article, I will describe how this pattern works.

    By ProAndroidDev -
    Android News
    Optimizing Android ViewModel with Lifecycle 2.2.0
    Optimizing Android ViewModel with Lifecycle 2.2.0

    By Adam Hurwitz

    The Lifecycle 2.2.0 update including simplified initialization with by viewModels(), by activityViewModels(), and by navGraphViewModels(...) syntax for the ViewModel (VM) component is great for quickly creating VMs. What about re-using the VM instance throughout fragments, passing arguments/parameters into the VM while also enabling saved state? 

    By ProAndroidDev -
    Android News
    From RxJava to Kotlin Flow! Error Handling
    From RxJava to Kotlin Flow! Error Handling

    By Vasya Drobushkov

    Error handling is fundamental in reactive programming. Reactive streams might fail with exception and propagate it as an event downstream notifying consumers on the error that happened. As in previous articles, we’ll try to compare RxJava and Kotlin Flow error handling mechanisms. This might help us to migrate existing code from RxJava to Kotlin Flow and also understand how to properly use Kotlin Flow.

    By ProAndroidDev -
    Android News
    Declarative Adapter Building
    Declarative Adapter Building

    By Michael Spitsin

    I’ve seen and used different ways to organize work with lists of data through the adapters: vanilla method, delegates by type, each item as its own delegate and little bit exotic adapter’s composition. Each of them can be used in different situations. And what interesting, depending on the case and on the team agreements each can be more suitable to apply.

    By ProAndroidDev -
    Android News
    Sharing build logic with Kotlin DSL
    Sharing build logic with Kotlin DSL

    By Chirag Kunder

    Kotlin DSL for Gradle provides a type-safe way to write build logic and an alternative syntax to the Groovy DSL. Kotlin, being a statically typed language, provides compile-time checking while enhancing developer experience with auto-completion, suggestions, refactoring, documentation, navigation, etc.

    By ProAndroidDev -
    Android News
    Is Your Kotlin Code Really Obfuscated?
    Is Your Kotlin Code Really Obfuscated?

    By Idan Atsmon

    Each week I try to watch at least one session from the latest Google I/O or Android Dev Summit. I always learn something new, even with subjects that I am quite familiar with, and that is exactly why I keep watching year after year.

    By ProAndroidDev -
    Android News
    Android Biometrics In React Native
    Android Biometrics In React Native

    By Oleksandr Kucherenko

    As Android native developer I was involved in upgrading our existing RN project. The business requirement was simple: Enable biometric authentication for users in our app. Business promise - Devs implement JTBD.

    By ProAndroidDev -
    Android News
    Troubleshooting Firebase plus Google Tag Manager events not showing on Google Analytics
    Troubleshooting Firebase plus Google Tag Manager events not showing on Google Analytics

    By Daniel Beleza

    Tracking can be boring, but if we think it right, tracking has a huge role in a company, because it helps to plan and effectively decide the best path for each feature. Either if your app is an E-commerce, a game, or some day-to-day tool, Google Tag Manager (GTM) has a great tool to track your users' actions.

    By ProAndroidDev -
    Android News
    Protecting secrets in an Android project
    Protecting secrets in an Android project

    By Andrew Lord

    When developing apps we will often need to use secret values that we don’t want anyone to get access to, such as tokens, IDs and API keys. There are many reasons they may be needed in our source code and in Gradle scripts, the most common being when we are asked to provide one to authenticate with a third-party API.

    By ProAndroidDev -
    Android News
    A Dependency Injection Showdown
    A Dependency Injection Showdown

    By Mark Ng

    Choosing a dependency framework for your Android app is a big decision, it’s not something that you can easily replace later on. Dependency injection spans all layers of your app so it’s important that the DI framework that you choose meets all your requirements and that includes testing.

    By ProAndroidDev -
    Android News
    Parameterized tests with Kotlins Sealed Classes
    Parameterized tests with Kotlins Sealed Classes

    By Danny Preussler

    Parameterized tests are a very powerful feature. Those are tests that are taking method parameters. This is very useful if we need multiple runs of the same test but with different input arguments.

    By ProAndroidDev -
    Android News
    Developing your own Dynamic Feature
    Developing your own Dynamic Feature

    By Igor Escodro

    In 2018, Google Play introduced a new application serving model, the Dynamic Delivery, to help generating and serving optimized APKs based on the device configuration. It uses the Android App Bundle format to dynamically generate the APK for each device variant, which is much better than manually generating them.

    By ProAndroidDev -
    Android News
    Scoped Storage on Android 11
    Scoped Storage on Android 11

    By Fernando García Álvarez

    This is a follow-up to my previous post about Scoped Storage, so I highly recommend reading that one first since this post will build upon that foundation. On February 19th, the first Developer Preview of Android 11 was released and it introduces changes to Scoped Storage, adding new features and fixing some annoyances.

    By ProAndroidDev -
    Android News
    Kotlin! fun with "in"
    Kotlin! fun with "in"

    By Patrick Cousins

    I’m a big fan of determinism. It’s part of why I love Kotlin as a programming language. I like pushing problems to the compiler. I like using types for expressiveness and safety. And I really like sealed classes for representing state. One of the tools in Kotlin that allows us to achieve greater determinism is the language’s when expression.

    By ProAndroidDev -
    Android News
    Testing your first Android lint rule
    Testing your first Android lint rule

    By Fábio Carballo

    In the previous article in this series on making use of custom Lint rules, we covered what is Lint and what we have to do to create a simple custom Lint rule. If you haven’t read it yet, I would highly recommend that you take a look to get some more context:

    By ProAndroidDev -
    Android News
    Android functional Clean Architecture
    Android functional Clean Architecture

    By Lukasz Kalnik

    At grandcentrix we are looking into ways to improve the architecture of our apps. Recently we have found a way to use Kotlin functional programming features to simplify behavior injection. In Kotlin we have the possibility of declaring values of functional type. Let’s explore how we can use them to inject behavior in the classical three-layer Clean Architecture.

    By ProAndroidDev -
    Android News
    What is the difference between @plus id and id?
    What is the difference between @plus id and id?

    By Tam H. Doan

    TL;DR: The plus sign in “@+id/” tells Android build tools that you are declaring a new resource. And if it does not exist, add to R.java file. But basically, you don’t have to think, just use “@+id/” anywhere you want!

    By ProAndroidDev -
    Android News
    Build.VERSION in Unit Testing
    Build.VERSION in Unit Testing

    By Tam H. Doan

    TL;DR: To write JVM unit test for Android build version, you can: Modify the build version field at runtime or Create a wrapper for build version checking.

    By ProAndroidDev -
    Android News
    Jetpack Compose! Data Tables
    Jetpack Compose! Data Tables

    By Lin Min Phyo

    DataTables guidelines were introduced on material.io about a year ago. It is currently available for developers on Material Components for Web and Flutter but not available for Android and iOS, yet. When Jetpack Compose came out, DataTable is inside its material package.

    By ProAndroidDev -
    Android News
    Security Implementation in Android Projects
    Security Implementation in Android Projects

    By Oleksandr Kucherenko

    Man in The Middle — This is when they proxy between your app and server. Intercepting all requests and modifying data in both directions. Examples are: replacing TLS/SSL certificates by custom one, controlled by proxy code, and encrypt/decrypt/re-pack all data for server-side. HTTPS can up the bar for these scenarios.

    By ProAndroidDev -
    Android News
    DevOps - Understanding and applying CI and CD pipeline for Android developers - Part 2
    DevOps - Understanding and applying CI and CD pipeline for Android developers - Part 2

    By Mustafa Khaled

    As we mentioned in part 1, FirebaseAppDistribution is a tool provided by Firebase where you can upload your beta .apk files. You can find many posts that use Slack channels as their CD channel. In my opinion, this isn’t a perfect channel because it’s plan limitation. Their free plan has storage of 4 GB for all channels within the workspace, which may limit your App APK files to be uploaded.

    By ProAndroidDev -
    Android News
    Mastering Android Emulator SIM card
    Mastering Android Emulator SIM card

    By Filipe Batista

    The Android emulator has improved a lot these years (for reference how it was before, see this old StackOverflow question). Nowadays the emulator is much faster with better performance and with easy settings option.

    By ProAndroidDev -
    Android News
    DevOps - Understanding and applying CI and CD pipeline for Android developers  - Part 1
    DevOps - Understanding and applying CI and CD pipeline for Android developers - Part 1

    By Mustafa Khaled

    As an Android Engineer, think about how much time you waste in deploying an APK for someone to test. ⌛️It may be done in many steps, compile your project, run unit test, start generating your .apk file, then upload it to a third party (e.g. firebase distribution, diawi, etc ..). After that, you have to notify the testers that your build is ready for testing.

    By ProAndroidDev -
    Android News
    Welcome Navigation Architecture Component - Jetpack (Part-01)
    Welcome Navigation Architecture Component - Jetpack (Part-01)

    By Ali Azaz Alam

    Powered by Android Jetpack (Google I/O 18 and soon in I/O 19). Being an android developer we mostly interact with fragments and we make sure to implement one activity architecture.

    By ProAndroidDev -
    Android News
    Android Fragments! FragmentFactory
    Android Fragments! FragmentFactory

    By Husayn Hakeem

    Fragment constructor injection is now -and has been for a while- supported in Android thanks to FragmentFactory. While it isn’t an API developers have to use, it can be regarded as a better design approach in certain situations and can help when testing Fragments with external dependencies.

    By ProAndroidDev -
    Android News
    Enforcing type safety of IDs in Kotlin
    Enforcing type safety of IDs in Kotlin

    By Andrew Lord

    For codebases with many different entities, most of us will at some point have hit a bug due to the wrong ID being assigned to a property or passed to a function. Why don’t we use the type system to give all of our IDs their own type and ensure this never happens again.

    By ProAndroidDev -
    Android News
    Kotlin functions are fun
    Kotlin functions are fun

    By Magda Miu

    Kotlin promises concise, expressive and safe code. In the previous articles I covered topics like basic types, control flow instructions, equality checks, null safety. In this article we will have some fun with functions and learn new keywords from the Kotlin Wonderland.

    By ProAndroidDev -
    Android News
    How Method reference works! Kotlin
    How Method reference works! Kotlin

    By Tushar Saha

    Method reference in Kotlin is one of the most talked about and loved features. I have always wondered how method reference internally works. Syntax is pretty straight forward. You can declare a method and pass it as shown below.

    By ProAndroidDev -
    Android News
    In-App Testing For Android
    In-App Testing For Android

    By Johann Blake

    This article describes a new way of developing and testing Android apps/libraries although the primary focus will be on a new methodology in testing. This new form of development came about with the need to:

    By ProAndroidDev -
    Android News
    Using LiveData and Flow in MVVM - Part II
    Using LiveData and Flow in MVVM - Part II

    By Süleyman Fatih Giriş

    We have seen how to use Flow in the repository layer and how to change the app theme with Flow & LiveData in Part I. In this post, we will see how to remove LiveData (even MediatorLiveData) and use only Flow in all layers. We will also dive deep into the common Flow operators like map, filter, transform, and more. In the end, we will implement a search bar example given by Sean McQuillan in “Fragmented Podcast — 187: Coroutines with Manuel Vivo & Sean McQuillan” with using Channel and Flow.

    By ProAndroidDev -
    Android News
    Complex UI and Animations on Android - featuring MotionLayout
    Complex UI and Animations on Android - featuring MotionLayout

    By Nikhil Panju

    MotionLayout is the new kid on the block for animations, transitions, complex motions, what-have-you. In this article, we’re going to look at how MotionLayout and Coroutines can help us structure multi-step animations.

    By ProAndroidDev -
    Android News
    From RxJava to Kotlin Flow! Backpressure
    From RxJava to Kotlin Flow! Backpressure

    By Vasya Drobushkov

    This article unfortunately is not that dive deep (because of complexity of internals of coroutines), but instead trying to compare RxJava and Kotlin Flow mostly as black box with trying to find out differences in behavior and how to migrate from RxJava with its backpressure solution to Kotlin Flow.Hopefully this article will give you direction on where to look at if you decide to migrate to Kotlin Flow. 

    By ProAndroidDev -
    Android News
    Diving deep into Android Dex bytecode
    Diving deep into Android Dex bytecode

    By Vasya Drobushkov

    Modern Android development is based on Kotlin, which is interoperable with Java. Whenever we use some cool feature from Kotlin (say High-order functions) under the hood (when running on JVM) the feature is implemented in terms of Java bytecode. This might lead to some overheads in memory and performance if used without caution (for example excessive usage of lambdas with parameters without inlining might produce a lot of anonymous classes and put additional pressure on GC).

    By ProAndroidDev -
    Android News
    Build a WhatsApp Clone on Android With Kotlin - Part 1
    Build a WhatsApp Clone on Android With Kotlin - Part 1

    By Thierry Schellenbach

    Android development has come a long way over the last few years. The Jetpack components significantly speed up development. In this tutorial, we’ll build a functional clone of WhatsApp with Kotlin. Building a messaging app used to be difficult; in this tutorial, you’ll get a chat experience up and running in roughly 20 minutes. 

    By ProAndroidDev -
    Android News
    Automating the Android Build and Release Process using Fastlane -Part 3
    Automating the Android Build and Release Process using Fastlane -Part 3

    By Roger Taracha

    GOAL: The goal of this article is to demonstrate how to add a CI service to your project and use Fastlane to not only upload an APK to the same QA slack channel (for your team to review the app internally) but also add Firebase App Distribution to the mix. 🛠

    By ProAndroidDev -
    Android News
    Kotlin Scope Functions Made Simple
    Kotlin Scope Functions Made Simple

    By Federico Puy

    Scope Functions do not introduce new technical capabilities, nor do they have a real impact on performance. So you may wonder, what´s the point in using them? Well, they are here for the same reason that the Kotlin Language was intended for. Making code easier to read, more concise, and more efficient to write.

    By ProAndroidDev -
    Android News
    Intro to animations with Jetpack Compose
    Intro to animations with Jetpack Compose

    By Zsolt Kocsi

    Earlier on, I got inspired by the Kotlin-Pokedex project and its Flutter counterpart: flutter_pokedex, and started experimenting with a Compose-based solution for it, out of which compose-pokedex was born. All these projects are based on the beautiful original design done by Saepul Nahwan:

    By ProAndroidDev -
    Android News
    Android Fragments, FragmentContainerView
    Android Fragments, FragmentContainerView

    By Husayn Hakeem

    FragmentContainerView is now the recommended View to use in order to host Fragments instead of the previously common way of using FrameLayouts. In addition to correctly handling Fragment transactions under the hood, it has some additional features that coordinate with Fragment behavior.

    By ProAndroidDev -
    Android News
    Dynamic screens using server-driven UI in Android
    Dynamic screens using server-driven UI in Android

    By Vipul Asri

    Developing native apps for mobile is still a first choice for the businesses who are working at scale and want to reach masses with performance efficient products. We will not go into a debate on which platform outperforms another, that’s a whole different discussion.

    By ProAndroidDev -
    Android News
    From RxJava 2 to Kotlin Flow! Threading
    From RxJava 2 to Kotlin Flow! Threading

    By Vasya Drobushkov

    For a long time RxJava was undisputed leader for reactive solutions on Android, though with Kotlin expansion and introducing cold streams (Flow) seems situation might be rapidly changing in the coming years. Though reactive programming is not related to threading in the first place, concurrency and parallelism are very important anyway.

    By ProAndroidDev -
    Android News
    The power of types for errors
    The power of types for errors

    By Danny Preussler

    At KotlinConf’19 I talked about the power of types. In essence, I discussed limiting the number of primitives we use in our code in favor of using custom types instead. In this way, we as developers will not only reduce the possibility of bugs by using the compiler, but we will also achieve more readable and self-documented types.

    By ProAndroidDev -
    Android News
    Java Streams vs. Kotlin Sequences
    Java Streams vs. Kotlin Sequences

    By Dan Rusu

    Java 8 streams are available to be used within Kotlin code when targeting JDK 8 or later. A common question among developers that use Kotlin for backend development is whether to use streams or sequences. Although Android developers can’t target JDK 8, I’ve included some surprises that affect the way we work with sequences and structure our code.

    By ProAndroidDev -
    Android News
    Creating A Basic Custom Rule For Testing
    Creating A Basic Custom Rule For Testing

    By Carlos Daniel

    Have you realized that in some situations the basic ActivityRule is not enough to cover all the scenario for your tests? Moreover, what if we can write custom rules that define custom behaviours to save us from writing tons of code and to make like sort of setup procedures more shippable to other classes?

    By ProAndroidDev -
    Android News
    How to store scoped Dagger Components in Android applications
    How to store scoped Dagger Components in Android applications

    By Alexander Sitnikov

    There’s a lot of articles explaining how to use scopes and create scoped components in Dagger 2, but hardly ever it is mentioned where to store those scoped components.

    By ProAndroidDev -
    Android News
    How to use Tabs in Jetpack Compose?
    How to use Tabs in Jetpack Compose?

    By Nikit Bhandari

    In this blog post we will explore how we can use Tabs in Jetpack Compose. If you are interested in exploring other components in Jetpack Compose you can check out the series of articles that I have written.

    By ProAndroidDev -
    Android News
    Under the Hood #0 Navigation. Dynamic Features
    Under the Hood #0 Navigation. Dynamic Features

    By Igor Malytsky

    Welcome to Under the Hood. Here we dive into the new Android tools to find how do they work to get prepared for the possible pitfalls and to keep our knowledge in a good shape.

    By ProAndroidDev -
    Android News
    Using LiveData and Flow in MVVM - Part I
    Using LiveData and Flow in MVVM - Part I

    By Süleyman Fatih Giriş

    Lately, I have been searching for the best practices of Kotlin Flow in MVVM architecture. After I have answered this question about LiveData and Flow, I’ve decided to write this post. In this post, I will be explaining how to use Flow with LiveData in the MVVM pattern. Then we will see how to change the app theme by using Flow.

    By ProAndroidDev -
    Android News
    Change Theme Dynamically with Circular Reveal Animation on Androi
    Change Theme Dynamically with Circular Reveal Animation on Androi

    By Vasya Drobushkov

    Dark theme on Android is on a hype at the moment. More and more apps add support for Dark theme over time allowing users to customize their phones, save battery and provide better accessibility. Though another trend which grows today is animated theme changes. First app I saw support of this was Telegram:

    By ProAndroidDev -
    Android News
    SQLite Triggers - Android Room
    SQLite Triggers - Android Room

    By Vasya Drobushkov

    SQLite is one of the most used database. This is because it is used on almost all mobile devices in the world. As SQLite is very similar to SQL everyone already knows the basic concepts like querying, inserting, updating, deleting data; databases and tables; joining tables etc. But SQLite also has some advanced features and this article is about one of such called Trigger.

    By ProAndroidDev -
    Android News
    LiveData for dummies
    LiveData for dummies

    By C'Aira Shields

    I’m going to guess that since you’ve clicked on this article, you have an interest in learning about one of the key Android Architecture Components: LiveData. I won’t, however, assume that you’re a dummy. That was just clickbait. Let’s jump right in and learn about how we can make our Android apps better!

    By ProAndroidDev -
    Android News
    Kotlin Multiplatform - MVVM & Clean Architecture
    Kotlin Multiplatform - MVVM & Clean Architecture

    By Javier Arroyo

    During the KotlinConf 2019 there were several talks about Kotlin Multiplatform, in one of them Alexander talked about different libraries developed by IceRock to achieve MVVM pattern, share resources or widgets using the same code on different platforms (Android, iOS, JS or web).

    By ProAndroidDev -
    Android News
    Maximizing Code Sharing between Android and iOS with Kotlin Multiplatform
    Maximizing Code Sharing between Android and iOS with Kotlin Multiplatform

    By Kurt Renzo Acosta

    This article aims to discuss code sharing between Android and iOS using Kotlin Multiplatform. You may or may not have the knowledge of Android and iOS development but having them would help you grasp the topic.

    By ProAndroidDev -
    Android News
    Creating AppBars in Jetpack Compose
    Creating AppBars in Jetpack Compose

    By Nikit Bhandari

    In this blog post we will learn how to make a Toolbar and a Bottom Navigation Bar in Jetpack Compose. If you are interested in exploring other components in Jetpack Compose you can check out the series of articles that I have written.

     

    By ProAndroidDev -
    Android News
    Constructor injection into Fragments with respect of scopes
    Constructor injection into Fragments with respect of scopes

    By Vladislav Ermolin (Uladzislau Yarmolin)

    This article is targeting those developers who uses dagger-android to do DI in their projects and want to switch to the constructor injection into Fragments. Thus to read it smoothly you might first need to get some insights on that tech. The article also heavily uses Dagger multibinding feature, so if have not encountered it before you might want to check it out too.

    By droidcon Global
    Android News
    Stronger Typing for CoroutineScopes
    Stronger Typing for CoroutineScopes

    By Rick Busarow

    If you use Kotlin coroutines, you’re probably familiar with the Dispatchersobject. And you’re probably aware that you can define a default dispatcher when you’re implementing or creating a CoroutineScope:

     

    By ProAndroidDev -
    Android News
    Migrating to ViewPager2
    Migrating to ViewPager2

    By Volodymyr Buberenko

    ViewPager is a well-known citizen in lots of Android apps since its first appearance. We use it for setup wizards, introduction screens, books and tons of other scenarios with customizations of all kinds. Yet, it wasn’t ideal and developers saw some room for improvement. So after some back and forth Google released a reworked version and named it ViewPager2.

    By ProAndroidDev -
    Android News
    Companion object invoke operator overloading for default constructor argument in generic classes
    Companion object invoke operator overloading for default constructor argument in generic classes

    By Fred Porciúncula

    That might've been the worst title I've ever come up with. But it also might be the shortest blogpost I've ever written, so maybe that makes up for it. 

    By ProAndroidDev -
    Android News
    Handling Clicks in Jetpack Compose
    Handling Clicks in Jetpack Compose

    By Nikit Bhandari

    Creating views in Jetpack Compose is really easy but not all components have onClick listeners, this is where we can use either Clickable or Toggleable. We can use it to wrap our components and provide an onClick listener to them.

    By ProAndroidDev -
    Android News
    A Story about FFmpeg on Android. Part III - Extension
    A Story about FFmpeg on Android. Part III - Extension

    By Alexander Berezhnoi

    FFmpeg is a great tool with many features available right out-of-the-box. On top of that it supports integration of many external libraries that provide even more features. And they are available through the single FFmpeg API. In this part, I’d like to show the concept of integration of an external library as well as several specific examples.

    By Root Root
    Android News
    Implementing your first Android lint rule
    Implementing your first Android lint rule

    By Fábio Carballo

    Lint is a static analyser, which has the goal of finding bugs on our source code without the need of compiling or running it. And even if you are not totally sure what I am talking about, you have definitely seen it in action during your Android development work. Are this type of messages familiar to you?

    By Root Root
    Android News
    ViewStub - On-demand inflate view or lazily inflate layout resource
    ViewStub - On-demand inflate view or lazily inflate layout resource

    By Kishan Maurya

    Sometimes while developing an application, we have encountered a situation like based on some logic, we have to render some new view in the layout that is rarely used. A general approach for this is to make View visibility GONE/VISIBLE. So always inflating this rarely used view in a layout, is not a good idea and also it impacts the rendering of the layout. So what to do in this case?

    By ProAndroidDev -
    Android News
    Connecting The Dots
    Connecting The Dots

    By Tomáš Mlynarič

    Android Developers team finally @Provides opinion about dependency injection and the winner is  Dagger. From my perspective, Dagger is “not great, not terrible”, but it scales well and when properly set up, you don't need to “touch” it later. In this article, I'll try to explain how to setup Dagger to work with ViewModel and SavedState module in the most universal way — set it once, use for ever.

    By ProAndroidDev -
    Android News
    Lessons learned with a personal application
    Lessons learned with a personal application

    By Igor Escodro

    Learning new released libraries is great, but applying it right away in your professional project can be very dangerous: the libraries are released on alpha, with some bugs and lacking stability. One way of keeping updated with the latest technologies without compromising the production code is having a personal application to be used as playground.

    By ProAndroidDev -
    Android News
    Android Unidirectional Data Flow - Local Unit Testing
    Android Unidirectional Data Flow - Local Unit Testing

    By Adam Hurwitz

    When I started building the Unidirectional Data Flow (UDF) with LiveData pattern, I did not have testing experience. Working on a small/fast moving startup team, Close5, owned by eBay, and building Coinverse from scratch, I had not been required, nor did I allocate the time to develop tests. One of the touted advantages of UDF is optimizing the architecture for testing. This made for a great opportunity to develop testing fundamentals explored in the Coinverse code below.

    By ProAndroidDev -
    Android News
    Android Architecture starring Kotlin Coroutines, Jetpack (MVVM, Room, Paging), Retrofit and Dagger 2
    Android Architecture starring Kotlin Coroutines, Jetpack (MVVM, Room, Paging), Retrofit and Dagger 2

    By Eli Fox

    Over years Android architecture evolved to support complex, robust, production-quality apps on any scale. It is great to see how Google recommendations are aligned with Android community needs and choices.

    By ProAndroidDev -
    Android News
    The “Real” Repository Pattern in Android
    The “Real” Repository Pattern in Android

    By Denis Brandi

    Over the years I’ve seen many implementations of the repository pattern, yet I think most of them are wrong and not beneficial. These 5 are the most common mistakes I’ve seen (some of these are also in the official android documentation):

    By ProAndroidDev -
    Android News
    (Kotlin Pearls 6) Extensions - The Good, The Bad, The Ugly
    (Kotlin Pearls 6) Extensions - The Good, The Bad, The Ugly

    By Uberto Barbini

    How to use Extension Functions and Properties to improve the readability of your code - Extension Functions (and properties) are a new thing for Java developers, they are present in C# since long but they landed in the JVM land for the first time by courtesy of Kotlin.

    By ProAndroidDev -
    Android News
    Cancelling Kotlin Coroutines
    Cancelling Kotlin Coroutines

    By Chris Cooper

    The latest project my team and I are working on involves manipulating a large amount of data. As this has the potential to block the UI thread and give a poor user experience, we took this as an opportunity to get more familiar with Kotlin Coroutines and use them to handle the heap of data in the background.

    By ProAndroidDev -
    Android News
    Coil vs Picasso vs Glide - Get Ready… Go!
    Coil vs Picasso vs Glide - Get Ready… Go!

    By Miguel Ángel Ruiz López

    Coil is the new boy in town and is becoming increasingly popular. But why is it arousing so much interest? Well, this library is a breath of fresh air in the image loading context which nowadays is dominated by mature libraries. Coil is different because was created with Kotlin in mind.

    By ProAndroidDev -
    Android News
    Dagger 2 same scope dependency
    Dagger 2 same scope dependency

    By Elye

    Ever wonder if we could have a component dependent on another component of same scope? It's a no-no in Dagger 2, but checkout... In my example of Setup Android Modules with Dagger 2, due to different module have different component, I can’t have them in the same scope, even though they don’t need to be in different scope.

    By ProAndroidDev -
    Android News
    Introducing Chucker
    Introducing Chucker

    By Nicola Corti

    Chucker, a fork of Chuck, is a simple library to inspect OkHTTP traffic directly on your Android device. Here some story on how we built...

     

     

    By ProAndroidDev -
    Android News
    Flutter Passwordless Authentication — a guide for phone & email login
    Flutter Passwordless Authentication — a guide for phone & email login

    By Joosep Lahe

    If you are building an app, there’s a good chance you’ll need to implement login and increasingly popular passwordless is a good way to go — it’s safe and easy for the user. There has been a lot of questions and confusion on how to implement passwordless authentication with Flutter. This article puts forward one approach to passwordless authentication on Flutter.

    By ProAndroidDev -
    Android News
    Configure Firebase Project for Continuous Integration Builds
    Configure Firebase Project for Continuous Integration Builds

    By Tam Doan

    Firebase (and Google Cloud Services) have become very popular with developers. It’s easy if you only develop your app on local machine, until you use some kind of Continuous Integration service (e.g: Travis CI).

    By ProAndroidDev -
    Android News
    Converting your Android Gradle scripts to Kotlin
    Converting your Android Gradle scripts to Kotlin

    By André Ramon

    Using the same language throughout your whole project can further streamline and speed up your development process. With the stalbe release announcement of the Kotlin DSL for Gradle, things got even more compelling for modern Android development considering Kotlin is now the preferred language for Android.

    By ProAndroidDev -
    Android News
    Workout your tasks with WorkManager — Advanced Topic
    Workout your tasks with WorkManager — Advanced Topic

    By Magda Miu

    Advanced topics like getting the status of the work, BackoffPolicy, chaining work and Threading options.
    In my previous two posts about 
    WorkManage I covered topics like: Android memory model, Android battery optimizations... In this blog post I’ll cover some extra features of the WorkManager library like: how to identify a task, how to get the status of a task...

    By ProAndroidDev -
    Android News
    In-App Updates Android - Tips & Tricks
    In-App Updates Android - Tips & Tricks

    By Nikit Bhandari

    Recently I was working with in-app updates in Android and I found this API extremely useful but there are certain parts where this API can be a bit confusing.

    By ProAndroidDev -
    Android News
    Testing your isolated Fragments with Koin
    Testing your isolated Fragments with Koin

    By Oleg Osipenko

    UI-tests are a necessary part of our development routine in AUTO1. Although that wasn’t the case a while ago. One of the issues, which was blocking developers from writing and running UI-tests, was the need to set up UI-tests.

    By ProAndroidDev -
    Android News
    Making Google-Apps Like NavigationView — Android
    Making Google-Apps Like NavigationView — Android

    By Shreyas Patil

    Hello Developers, You might use Google’s Apps like Gmail, Google Photos, Google Drive, Keep Notes, etc. You have seen their Navigation drawer and it seems much attractive 😍 and best Material Design implementation there. 

    By ProAndroidDev -
    Android News
    In-App Updates for Android Made Easier
    In-App Updates for Android Made Easier

    By Nikolai Kotchetkov

    Keeping your app up-to-date on your users’ devices enables them to try new features, as well as benefit from performance improvements and bug fixes. Although some users enable background updates when their device is connected to an unmetered connection, other users may need to be reminded to update. In-app updates is a Play Core library feature that introduces a new request flow to prompt active users to update your app.

    By ProAndroidDev -
    Android News
    Android UI Testing Frameworks
    Android UI Testing Frameworks

    By Alex Zhukovich

    Testing is an essential part of the software development process and product release. Often, there is a situation when there are two mobile applications to test: iOS and Android versions. Even here, we have different options:

    By ProAndroidDev -
    Android News
    Kotlin - when statement, when expression… oh my! or How we created our custom Detekt rule
    Kotlin - when statement, when expression… oh my! or How we created our custom Detekt rule

    By Oleg Osipenko

    Back in 2015 when I only started trying Kotlin (many thanks to Jake Wharton for his thorough investigation) and then later, when Kotlin 1.0 was released and year after announced by Google as a priority language for development on Android, in the long list of shiny Kotlin features, presented by the articles and blog posts related to the new language, sealed classes were one of the most interesting for me.

    By ProAndroidDev -
    Android News
    Android Tutorial On Location Update With LiveData
    Android Tutorial On Location Update With LiveData

    By Mayowa Egbewunmi

    In this tutorial, I will introduce you to how to implement continuous location update with Android architecture components and Google FusedLocationProviderClient. By the end of this tutorial, we would have achieved 3 objectives:

    By ProAndroidDev -
    Android News
    Building a Gradle plugin to support your Android SDK
    Building a Gradle plugin to support your Android SDK

    By Shahrukh Ahmed Siddiqui

    A Gradle plugin could help your SDK users in integration. It happened to be that when we @ M800 were developing our new SDK, we needed some configuration file to be added to project root by the app developer.

    By ProAndroidDev -
    Android News
    What I Learned After Becoming an Engineering Manager
    What I Learned After Becoming an Engineering Manager

    By Sergii Zhuk

    This post will help engineers get the best results out of their work with managers, and achieve career goals in a predictable way. After many years of being an individual contributor and Tech Lead, I decided to transition to the Engineering Manager role.

    By ProAndroidDev -
    Android News
    Building a DevOps pipeline for your App - Introduction
    Building a DevOps pipeline for your App - Introduction

    By Peter-John Welcome

    DevOps and pipelines are words that we hear a lot in our development environments and they are always being done by either people doing infrastructure or a DevOps engineer. But what if you wanted to build a DevOps pipeline for your new app?  This series of blog posts will help you with getting from starting a new app, to automatically deploying your app to the Google Play Store/App Store.

    By ProAndroidDev -
    Android News
    Better dependency management in Android Studio 3.5 with Gradle buildSrcVersions
    Better dependency management in Android Studio 3.5 with Gradle buildSrcVersions

    By Jean-Michael Fayard

    Personally, I’m most excited not by any new feature but by a bugfix which makes relevant again for android developers my open-source project for managing dependencies.

    By ProAndroidDev -
    Android News
    Building a DevOps pipeline for your App - Git Strategy
    Building a DevOps pipeline for your App - Git Strategy

    By Peter-John Welcome

    When thinking about a DevOps pipeline the first thing most people think about is where am I going to host my build server? This infrastructural discussion is important but thinking about your day to day work and how your app will get released is just as important. This is where git strategies come in.

    By ProAndroidDev -
    Android News
    Interface Singleton in Kotlin
    Interface Singleton in Kotlin

    By Martin Devillers

    The Kotlin object declaration is a convenient feature, used to create a singleton instance while avoiding boilerplate. However, it’s also a very strict feature, in the sense that an object is necessarily final. This means that it’s impossible to extend from it.

    By ProAndroidDev -
    Android News
    Safe Parsing Kotlin Data-classes with Gson
    Safe Parsing Kotlin Data-classes with Gson

    By Dmitry Si

    Kotlin Data Classes are great; they’re concise, they’re null-safe. Gson is great as well; it’s a de-facto standard for JSON parsing on Android for a good reason. But! Data classes parsed via Gson guarantee neither null-safety nor even default values. Or do they?

    By ProAndroidDev -
    Android News
    How to unit test code with Coroutines
    How to unit test code with Coroutines

    By Marcin Oziemski

    In this article, I would like to focus on the topic of how to test code with coroutines. Let’s start with some example of ViewModel. It’s a simple ViewModel that is fetching data from the server.

    By ProAndroidDev -
    Android News
    Stop rewriting projects
    Stop rewriting projects

    By Michael Spitsin

    I’ve heard so many times: “I wish I could rewrite this project from scratch”, “if I would write all that code from the beginning I would do everything right”, “we should maintain that, but we all know that want to rewrite whole that code”.

    By ProAndroidDev -
    Android News
    How to configure Bitbucket Pipelines for an Android project
    How to configure Bitbucket Pipelines for an Android project

    By Vladimir Hudnitsky

    Doing initial research, I found very few articles about Bitbucket Pipelines. Most of them were for beginners, but what to do when I need something bigger than just “assembleDebug”? In this article, I want to cover some mid/advanced level stuff. 

    By ProAndroidDev -
    Android News
    64-bit Computing for Mobile
    64-bit Computing for Mobile

    This paper is intended for the Android application developer  who wishes to learn about why the Arm 64-bit instruction set architecture  is an important mobile device building-block for the future. Additional information about the advantages, benefits, and considerations for 64-bit Android application development as well as guidance about where to find additional information is also provided.

    By droidcon Global
    Android News
    Testing with Koin
    Testing with Koin

    By Danny Preussler

    One of the great advantages in using dependency injection is ease of testing. It allows us to replace any dependency with a test double. Some DI frameworks are better here than others, Dagger is on the “not so good” side. Happily, Koin did a better job here. I’ll show you how.

    By ProAndroidDev -
    Android News
    The ugly OnPropertyChanged Callback
    The ugly OnPropertyChanged Callback

    By Danny Preussler

    Data binding is an amazing feature in Android development. We can bind view model properties directly to the XML, the place where they are needed. No ugly ‘handwritten’ glue code in between, which also means less code in the Activities and Fragments.

    By ProAndroidDev -
    Android News
    How I made CurvedBottomSheet
    How I made CurvedBottomSheet

    By Tayfun Cesur

    Hi everyone. In this story, I’m gonna tell you how I drew and animated the curved shapes using Cubic Bezier Curves.For motivation, you must know, you don’t have to be an expert on Mathematics to draw these kind of shapes.

    By ProAndroidDev -
    Android News
    Building Unit Tests for ViewModel in TDD style
    Building Unit Tests for ViewModel in TDD style

    By Jarosław Michalik

    I will show you simple way of creating unit tests for Android ViewModel implementation with step-by-step explanation and Test-Driven-Development spirit.

    By ProAndroidDev -
    Android News
    Android flavours - White-labeling an app
    Android flavours - White-labeling an app

    By Thomas Middel

    You might’ve used them before: product flavours in your Gradle file. They’re good for setting up multiple environments for example: staging, production, etc. They’re super handy for setting up multiple flavours as well!

    By ProAndroidDev -
    Android News
    Given When Then — Our Testing Approach
    Given When Then — Our Testing Approach

    By Alistair Sykes

    Given When Then (GWT) is an approach adopted by many teams. It’s a style of writing tests which lays out a framework for what a test should look like.

    By ProAndroidDev -
    Android News
    Mocking Coroutines
    Mocking Coroutines

    By Danny Preussler

    A few posts out there guide us to test Coroutines. The issue is that many posts where written before the API became stable, so before the scoping changes that happened. Also, I did not find many tips about mocking and Coroutines. Time to fill this gap.

    By ProAndroidDev -
    Android News
    React Native-Is It Worth It? (Part II)
    React Native-Is It Worth It? (Part II)

    When new technologies start gaining momentum in the Android community, the pragmatic (or lazy) among us eventually have to ask ourselves, “Is it worth it?” After the initial arrival and departure of the hype train, some of these become trusted tools we use in almost every app. Think RxJava and Dagger.

    By ProAndroidDev -
    Android News
    SingleLiveEvent to help you work with LiveData and events
    SingleLiveEvent to help you work with LiveData and events

    By Carlos Daniel

    Have you had to deal with a Dialog or a SnackBar that after been triggered/shown or dismissed and followed by a device rotation is triggered/shown again?

    By ProAndroidDev -
    Android News
    An easy-to-start approach to TDD with Espresso
    An easy-to-start approach to TDD with Espresso

    By Dmitry Si

    A lot was written about the TDD approach, in essence, it relies on one assumption — your tests are fast... But what if there is a way to try TDD, even with slow UI tests, and still increase the productivity and the code coverage at the same time?

    By ProAndroidDev -
    Android News
    Testing Custom Views with Robolectric 4
    Testing Custom Views with Robolectric 4

    By Peter Törnhult

    This is a short tutorial/intro on how to set up and use Robolectric to create Component tests for your custom views. If you‘re not familiar with Robolectric, it’s a library which, instead of using an Emulator/Device, allows you to Unit test your Android application.

    By ProAndroidDev -
    Android News
    Everything you need to know about Memory Leaks in Android
    Everything you need to know about Memory Leaks in Android

    By Ali Asadi

    One of the core benefits of Java is that they are a garbage collected language. Essentially, we can create objects and the garbage collector will take care of allocating and freeing up memory for us. Unfortunately, memory leaks still occur and it can be made easily If you’re not careful...

    By ProAndroidDev -
    Android News
    Throttling in RxJava 2
    Throttling in RxJava 2

    By Vasya Drobushkov

    In RxJava there are the following throttle operators: throttleFirst, throttleLast, throttleLatest, throttleWithTimeout / debounce. Although using debounce to avoid multiple clicks on buttons is commonly suggested, this is bad UX. Let’s finally look at available options in RxJava and find out when it is better to use what.

    By ProAndroidDev -
    Android News
    What I learned from unit testing
    What I learned from unit testing

    By Stavro Xhardha

    So what the hell is testing?   Testing is just a piece of code where you invoke your written production code and check its’ behavior.  So lets get more specific about Unit testing...

     

    By ProAndroidDev -
    Android News
    Suspend what you’re doing - Retrofit has now Coroutines support!
    Suspend what you’re doing - Retrofit has now Coroutines support!

    By Paolo Rotolo

    To better understand how this works and how to migrate your current code, let’s make an example app that… makes a simple network request!

    By ProAndroidDev -
    Android News
    React Native-Is It Worth It? (Part I)
    React Native-Is It Worth It? (Part I)

    By Andy Dyer

    When new technologies start gaining momentum in the Android community, the pragmatic (or lazy) among us eventually have to ask ourselves, “Is it worth it?” After the initial arrival and departure of the hype train, some of these become trusted tools we use in almost every app. Think RxJava and Dagger.

    By ProAndroidDev -
    Android News
    Coroutines patterns & anti-patterns
    Coroutines patterns & anti-patterns

    By Dmytro Danylyk

    Decided to write about several things which in my opinion you should and shouldn’t do (or at least try to avoid) when using Kotlin coroutines.

    By ProAndroidDev -
    Android News
    Bohemian Wrapsody
    Bohemian Wrapsody

    By Dmytro Danylyk

    One of my colleagues told me that wrapping third-party libraries is a controversial topic, but I will try to convince you that it’s actually something worthy of consideration.

    By ProAndroidDev -
    Android News
    Kotlin DSLs demystified
    Kotlin DSLs demystified

    By Mihaly Nagy

    If you want to write a DSL, or you’re just plain curious, this article will explore what DSLs are, why you would write one, and how to get started.

    By ProAndroidDev -
    Android News
    Android Version Code Tricks
    Android Version Code Tricks

    By Vasya Drobushkov

    Version code is a special integer value which works as an internal version number. It is not visible to end users. Android system uses this number to protect against application downgrades...

    By ProAndroidDev -
    Android News
    Google Cloud Anchors with Sceneform in Android
    Google Cloud Anchors with Sceneform in Android

    By Ayusch Jain

    In this post on Augmented Reality App Development using ARCore, we’ll take a look at how to use Cloud Anchors. This is the 4th post in our Augmented Reality App development articles. 

    By ProAndroidDev -
    Android News
    Improve Android unit tests with shared preferences mock library
    Improve Android unit tests with shared preferences mock library

    By Ivan Shafran

    TL;DR: Shared preferences mock is the lightweight library let you increase coverage of unit tests and simplify code for them with one line of code.

    By ProAndroidDev -
    Android News
    The Mystery of Mutable Kotlin Collections
    The Mystery of Mutable Kotlin Collections

    By Umberto Barbini

    This post is a little more low-level than my recent posts about Kotlin Pearls, so brace yourself to a tour on the inner workings of Kotlin.

    By ProAndroidDev -
    Android News
    Build watch faces for Wear OS
    Build watch faces for Wear OS

    By Nikit Bhandari

    Wear OS, previously called Android Wear, is a version of Google’s Android operating system designed for smartwatches. There are millions of devices currently using Wear OS and I believe this is only going to increase. In this blog post you will understand everything that you need to know to publish a watch face in Wear OS.

    By ProAndroidDev -
    Android News
    SiMMMMpLLLLe Date Format
    SiMMMMpLLLLe Date Format

    By Vasya Drobushkov

    Using SimpleDateFormat to format dates and times is a common thing (as Java 8 Time API is not that available on Android yet).

    By ProAndroidDev -
    Android News
    Algebraic Data Types in Kotlin
    Algebraic Data Types in Kotlin

    By Alexey Soshin

    Following a post about representing ADTs in four different languages: Scala, Haskell, Rust and TypeScript, I’ve been thinking about how this would work in Kotlin world.

    By ProAndroidDev -
    Android News
    My experience with Material Design Components on Android
    My experience with Material Design Components on Android

    By David Debre

    Users like fancy and functional interfaces and experiences. From the user perspective, it doesn’t matter how the business logic or communication with server are implemented — as far as it’s functional. However, it matters how a UI is designed and how much of it is functional and intuitive. The Material Design Components (MDC) as a tool, comes to help to be consistent in the implementation and thus in the app UI.

    By ProAndroidDev -
    Android News
    Forever Suspended. What if your lateinit var was really late?
    Forever Suspended. What if your lateinit var was really late?

    By Łukasz Wiśniewski

    TL:DR; I decided I really need a suspended getter in Kotlin. Two implementation attempts. Learn from my mistakes. CompletableDeferred might be just enough.

    By ProAndroidDev -
    Android News
    Build Your Own Home Automation Hub with Android Things & Kotlin
    Build Your Own Home Automation Hub with Android Things & Kotlin

    By TJ

    Android is an extremely versatile operating system with APIs for a smattering range of technologies used in IOT from Bluetooth to WiFi, along with USB host mode to interface with other peripherals quite conveniently, making it a great candidate to build a Home Automation hub with.

    By ProAndroidDev -
    Android News
    Android Internals 101 - How Android OS Starts You Application
    Android Internals 101 - How Android OS Starts You Application

    By Ayusch Jain

    This post is targeted for Software Engineers wanting to dive deep into Android’s Internals and its workings. We’ll take a look at what happens when your Android Phone boots up but specifically what is Zygote in Android and its role in firing up an application.

    By ProAndroidDev -
    Android News
    How to remote debug a Robolectric test by command line using Gradle
    How to remote debug a Robolectric test by command line using Gradle

    By Enrico Bruno Del Zotto

    hile we are waiting for public release of Google project Nitrogen many of us are most likely currently running our UI tests on Robolectric or JVM.

    By ProAndroidDev -
    Android News
    Look Deep Into ViewPager2
    Look Deep Into ViewPager2

    By Serap Bercin

    Earlier this year, Google announced ViewPager2 alpha-04 in Google IO/19. ViewPager2 is the replacement of ViewPager and is much better. The biggest change in the ViewPager2 API is that it now uses the RecyclerView. In this article, I won’t go into AndroidX migration too deeply but just to say/mention I didn’t encounter any big issues during migration even in the big scale project.

    By ProAndroidDev -
    Android News
    Experiment - Converting existing MVP to MVVM without ViewModel library
    Experiment - Converting existing MVP to MVVM without ViewModel library

    By Suraj Sau

    I guess I’ll be the last person on earth to have come aboard the MVVM hype train. Google provides the wonderful ViewModel library for implementing MVVM painlessly. This article however, is a product of ‘what if there wasn’t the library’ thought.

    By ProAndroidDev -
    Android News
    10 Tips for Android Library Developers
    10 Tips for Android Library Developers

    By Paolo Rotolo

    Libraries are certainly something developers are dealing with every day. They help make big projects modular, giving us lots of advantages likeGradle’s selective module compiling for faster build time and smoother git flows. If some libraries are strongly related to some particular features, they also simplify the creation of different feature modules for dynamic deliverywith Android App Bundles.

    By ProAndroidDev -
    Android News
    Android ProcessLifecycleOwner by example
    Android ProcessLifecycleOwner by example

    By Alex Zhukovich

    Analyzing User behaviour we can see that a lot of applications are changing the state of them from foreground to background and in the reverse order. However, as being developers, we would like to know when our application moved to the background. It’s a very popular use case for analytics. Different analytics solutions define sessions in different ways, some solutions allow developers to define “sessions” meaning.

    By ProAndroidDev -
    Android News
    Implementing Firebase Smart Reply in your Android App
    Implementing Firebase Smart Reply in your Android App

    By Domenico Rotolo

    In May 2018, at the I/O developer conference, Firebase announced new Machine Learning APIs that are now available for free to developers. They introduced Object Recognition, Face Detection, Barcode Scanning, Language Detection and much more; We might focus on these in future articles, but today we’ll check out Smart Reply.

    By ProAndroidDev -
    Android News
    Android for Everyone - Part 1 — Android & Accessibility
    Android for Everyone - Part 1 — Android & Accessibility

    By Pamela Hill

    This article series is for developers and designers interested in learning more about accessibility, particularly related to the Android platform. There are many misconceptions about accessibility, so the first article aims to clarify what accessibility is and which services the Android platform provides to make Android a platform for everyone.

    By ProAndroidDev -
    Android News
    Android - Full Screen UI with Transparent Status Bar
    Android - Full Screen UI with Transparent Status Bar

    By Diva Vikash

    Activities, the building block of any Android app. Something so simple, yet so complex. Here we are going to talk about something similar related to activities which looks very simple from the outset but gets complex pretty soon. We will build a full screen layout with transparent status bar. I'm not going to talk about why would you need a full screen layout and in what situations. That's a topic for another discussion.

    By ProAndroidDev -
    Android News
    When to load data in ViewModels
    When to load data in ViewModels

    By Josef Raska

    More than two years ago, Architecture Components were introduced to the Android world, in order to improve the way we develop our apps. A core part of these components is the ViewModel with LiveData, which is an observable lifecycle-aware data holder to connect an Activity with a ViewModel. ViewModels output data and Activities consume it.

    By ProAndroidDev -
    Android News
    Making Android Lint Theme Aware — Part 2
    Making Android Lint Theme Aware — Part 2

    By Saurabh Arora

    Over the last year or so, we have seen a lot of apps provide support for Dark Theme in their apps. Android Q brought this toggle to the system setting. Eventually, users will expect all apps to have/provide support for Dark theme and apps not doing so will be the exception rather than the norm.

    By ProAndroidDev -
    Android News
    Getting Touch Held Down Callbacks on Android
    Getting Touch Held Down Callbacks on Android

    By Altuğ Keçiciler

    Android doesn’t provide any easy to use native API for getting touch held down callbacks continuously. So here is my approach to the problem. Since Android lets us handle incoming touch events on a view we can easily adopt OnTouchListener for our use case. Before getting straight into implementation lets list some possible requirements that developers need.

    By ProAndroidDev -
    Android News
    Motional Intelligence for Global Persistent UI on Android with a Simple State Store
    Motional Intelligence for Global Persistent UI on Android with a Simple State Store

    By TJ

    Android Q’s debut draws nearer, and with it, the cries and echoes of multiple Android Developer Advocates stressing by way of numerous talks and blog posts that we really ought to embrace edge to edge UIs for our Android apps. Going edge to edge is only step one however; the fruition of that initial step only comes to bear fully if delightful animations and transitions accompany navigation from destination to destination within the app.

    By ProAndroidDev -
    Android News
    Evolution of unit tests in Android
    Evolution of unit tests in Android

    By Ivan Shafran

    In the article we take a look at the unit test evolution from beginner to pro-level. “Rate us” dialog is a popular feature, and it will be a good example. Typical “rate us” dialog has requirements like: Should be shown after some condition or user action, Has “rate us” button that leads to Google Play...

    By ProAndroidDev -
    Android News
    How to unit test Room - runInTransaction
    How to unit test Room - runInTransaction

    By Peter Törnhult

    In case you have tried writing Unit tests for your application business logic but gotten stuck at testing your Room logic where some database calls are wrapped in a runInTransaction call, I just figured out how to stub it using MockK and thought I’d share it.

    By ProAndroidDev -
    Android News
    Adapting Your RecyclerView - The 2019 Approach
    Adapting Your RecyclerView - The 2019 Approach

    By Idan Atsmon

    Many things have changed in the Android ecosystem over the years, but one thing remains constant - the need to display data to our users in the most convenient way. Since 2014, the recommended way of displaying data in our Android application is with RecyclerView.

    By ProAndroidDev -
    Android News
    Expounding Android Canvas’ DrawText
    Expounding Android Canvas’ DrawText

    By Elye

    In Android, when we want to have some Text, we would just use TextView. However, in case we want to have a custom view and have better control of the text, we could use the Canvas' drawText api to draw the text.

    By ProAndroidDev -
    Android News
    Part 1— Simple dependency injection with Dagger
    Part 1— Simple dependency injection with Dagger

    By Ian Alexander

    This series provides an introduction to a variety of techniques used when architecting Android apps and why we use those techniques. We’ll start with a basic MVP app which uses Retrofit and RxJava to display a list of Github repositories, and by the end we’ll have a modern Android app.

    By ProAndroidDev -
    Android News
    Making Android Lint Theme Aware
    Making Android Lint Theme Aware

    By Saurabh Arora

    Over the last year or so, we have seen a lot of apps provide support for Dark Theme in their apps. Android Q brought this toggle to the system setting. Eventually, users will expect all apps to have/provide support for Dark theme and apps not doing so will be the exception rather than the norm.

    By ProAndroidDev -
    Android News
    Kotlin-Destructuring Declarations
    Kotlin-Destructuring Declarations

    By Thomas Sunderland

    For Android developers who are making the transition from Java to Kotlin one of the more interesting features that you will eventually encounter are destructuring declarations.

    By ProAndroidDev -
    Android News
    New way of SMS Retriever API - SMS User Consent
    New way of SMS Retriever API - SMS User Consent

    By Caer Mert CEYHAN

    I worked on SMS Retriever API for verification screen of arabam.com application a while ago. After many attempts, I learned that this cannot be done in Turkey. Because the API has difficult requirements.

    By ProAndroidDev -
    Android News
    Why service locator is so unpopular
    Why service locator is so unpopular

    By Michael Spitsin

    In this article we will talk about what is a Service Locator, describe its cons and will make a basic refactoring of this conception. Also, We will slightly touch some problems of dagger, kodein and why we can consider Service Locator as an alternative still nowadays at least in the begging.

    By ProAndroidDev -
    Android News
    Playing with Jetpack Compose dev preview — Part 1 - Sample
    Playing with Jetpack Compose dev preview — Part 1 - Sample

    By Kirill Rozov

    During Google I/O’19 many new and interesting things were presented for Android Developers. I am sure that Jetpack Compose is #1 in the top list of them. Unfortunately, it’s not ready for production and trying it was a difficult quest because you need to build your own version of Android Studio. Everything changed on October 10 when Google released the first dev builds of Jetpack Compose libraries.

    By ProAndroidDev -
    Android News
    Dagger 1 and Dagger 2 together
    Dagger 1 and Dagger 2 together

    By Fred Porciúncula

    We're reaching the end of 2019 and we just started our migration from Dagger 1 to Dagger 2. If there's one thing we learned from our experience migrating from Cupboard to Room is that migrating the whole thing at once is painful. So even though finding a step by step strategy might seem tricky at first, it'll most likely be worth it. So how do we migrate step by step from Dagger 1 to Dagger 2?

    By ProAndroidDev -
    Android News
    Drawing Bezier Curves like in Google Material Rally
    Drawing Bezier Curves like in Google Material Rally

    By Chan Myae Aung

    We were recently inspired by a Google Material Design case study Rally, therefore we have implemented this project for fun, as well to learn new things. While working on this project, I came across a situation where I needed to draw some shapes, such as the picture above, using Canvas API. In this article, I am focusing on drawing a Bezier curve, rather than the whole graph.

    By ProAndroidDev -
    Android News
    Kotlin - cleaning Java bytecode before release
    Kotlin - cleaning Java bytecode before release

    By Kirill Rozov

    Kotlin removes much boilerplate code that we need to write by hands or generate with an IDE or third party libraries like Dagger 2. What's is price of Kotlin null safety and how to remove additional bytecode. Let’s check decompiled Java code produced by the Kotlin compiler and find out how to bring down the price.

    By ProAndroidDev -
    Android News
    Awesomeness of ConstraintLayout Flow
    Awesomeness of ConstraintLayout Flow

    By Lin Min Phyo

    Constraint Layout Flow – Even though Constraint Layout is powerful, Linear Layout is enough to show 2 views horizontally, like the following.

    By ProAndroidDev -
    Android News
    Android 10 privacy changes for accessing device location
    Android 10 privacy changes for accessing device location

    By Suchi Bansal

    Android 10 gives users more control over when apps can get access to device location. When an app running on Android 10 requests location access, users see the dialog shown in Figure.This dialog allows users to grant location access to two different extents:

    By ProAndroidDev -
    Android News
    (Kotlin Pearls 8) Recursion, Tail Recursion and Y Combinator
    (Kotlin Pearls 8) Recursion, Tail Recursion and Y Combinator

    By Uberto Barbini

    Understanding how tailrec keyword works and how to take advantage of recursion in Kotlin – It is already passed a year since I wrote the first Kotlin Pearl blog post. Thanks to everybody (and you are really a lot) who supported me and clapped or liked my posts. This post will cover:

    By ProAndroidDev -
    Android News
    Split layouts into sub-folders in Android Studio
    Split layouts into sub-folders in Android Studio

    By Tam H. Doan

    Wandering search online, I find out that many people have the same problem as me. So I decide to write an article to share some tips for better manage res/layout folder in Android Studio.

    By ProAndroidDev -
    Android News
    Hello ViewBinding, goodbye findViewById
    Hello ViewBinding, goodbye findViewById

    By Filipe Batista

    It is often said that developers are lazy and that is (usually) a good thing. It just means that instead of repeating the same task or code over and over they tend to find ways to prevent that repetition and optimising their time.
    Android developers for several years have tried to avoid the boiler plate code regarding findViewById . Let’s imagine you have the following layout:

    By ProAndroidDev -
    Android News
    Firebase ML Kit - AutoML Vision Edge
    Firebase ML Kit - AutoML Vision Edge

    By Nikit Bhandari

    With AutoML Vision Edge, you can create custom image classification models for your mobile app by uploading your own training data. Firebase ML Kit has a lot of features that allows you to perform machine learning on the user’s phone. In this blog post we will build an app called SeeFood, the app sees food and tells you what food item it is.

    By ProAndroidDev -
    Android News
    Maybe Don’t Write That Test
    Maybe Don’t Write That Test

    By Matt Dupree

    Remember those gimmicky fitness products that made you think you could “get fit” without actually going to the gym/dieting/etc? Because I live in Orlando and have seen the Carousel of Progress at the Magic Kingdom a bunch of times, the first example of this kind of gimmicky product that comes to mind is a thing called an “exercise belt.” 

    By ProAndroidDev -
    Android News
    Communicate between Fragments using ViewModel
    Communicate between Fragments using ViewModel

    By Abhilash Das

    To make the fragments reusable and make them part of a modular architecture, Fragments should be self-reliant and should define its implementation independent of any activity or fragment so that a developer can connect the fragment to any activity or fragment and it should fit in perfectly as any jigsaw puzzle.

    By ProAndroidDev -
    Android News
    SCREENCAST- Kotlin and Android Lifecycles
    SCREENCAST- Kotlin and Android Lifecycles

    What are some strategies for dealing with Kotlin and Android Lifecycles? In this screencast, cast you'll learn how Android Lifecycles appear to inhibit some core behaviors of Kotlin.

    By Big Nerd Ranch
    Android News
    TalkBack Crash Course
    TalkBack Crash Course

    TalkBack is Google’s screen reader for Android devices. It’s hard to understand accessibility issues without experiencing them yourself. Take 5 minutes to read this article, download its cheatsheet, and then go explore your app with fingers and ears. You might be surprised by what you find.

    By Big Nerd Ranch
    Android News
    Icing on the Slice - Providing more value to users with range actions
    Icing on the Slice - Providing more value to users with range actions

    In this post, I’ll show how to add a range action. Ranges allow users to control any field that accepts a discrete range of options, such as volume or brightness.

    By Big Nerd Ranch
    Android News
    Icing on the Slice - Providing more value to users with toggle actions
    Icing on the Slice - Providing more value to users with toggle actions

    In my previous post, I covered adding multiple actions to your Slice to make it more interactive. In this post, I’ll show how to add a toggle action. This type of action is good for controls the user can enable or disable in your application. 

    By Big Nerd Ranch
    Android News
    Icing on the Slice - Providing more value to users with multiple actions
    Icing on the Slice - Providing more value to users with multiple actions

    In my previous post, I covered adding multiple actions to your Slice to make it more interactive. In this post, I’ll show how to add a toggle action. This type of action is good for controls the user can enable or disable in your application. 

    By Big Nerd Ranch
    Android News
    Leading Edge - Why Android Developers Should Care About Edge Computing
    Leading Edge - Why Android Developers Should Care About Edge Computing

    Today, over 90 percent of enterprise data is sent to the cloud. In the next years, this number will drop to just 25 percent according to Gartner. Where is the rest of the data going? It’s not going anywhere. It is being stored and used locally, on the device it was created on. This is edge computing. Our pragmatic definition.

    By droidcon Global
    Android News
    SCREENCAST- Kotlin Class Extensions
    SCREENCAST- Kotlin Class Extensions

    Class extensions are a powerful feature of Kotlin that allow you to add behavior to classes without extending them. In this video we will take a look at how to work with class extensions, some of the subtleties of how class extensions work with custom objects, and how to define your own class extensions to simplify your code.

    By Big Nerd Ranch
    Android News
    SCREENCAST- Firebase Authentication
    SCREENCAST- Firebase Authentication

    How do I set up user authentication using Firebase with Android? User authentication is very useful for mobile apps but can be tricky to get right. Firebase allows your users to authenticate with a wide variety of options and is very easy to set up.

    By Big Nerd Ranch
    Android News
    SCREENCAST- ConstraintLayout
    SCREENCAST- ConstraintLayout

    In this video you will learn about ConstraintLayout. It will cover how to use the graphical editor, how to add constraints to your views and tweak their attributes to position them on screen, and it has an example of converting an existing layout to use ConstraintLayout.

    By Big Nerd Ranch
    Android News
    SCREENCAST- App Shortcuts
    SCREENCAST- App Shortcuts

    App shortcuts give you the ability to provide convenient shortcuts to specific actions in your application. In this video learn how to implement app shortcuts and give your users quick access to the functionality they want.

    By Big Nerd Ranch
    Android News
    SCREENCAST- Creating Adaptive Icons for Android
    SCREENCAST- Creating Adaptive Icons for Android

    How do you create adaptive icons for Android? Android Oreo introduces Adaptive Icons which allow device manufacturers to choose the outline, or mask, of all app icons on the device We'll show you how to implement these icons in Android Studio.

    By Big Nerd Ranch
    Android News
    SCREENCAST- Converting a Java Android App to Kotlin
    SCREENCAST- Converting a Java Android App to Kotlin

    How do you convert a Java Android Project to Kotlin? In the process, we will also learn Kotlin language fundamentals, including the null safety features of the language, safe call operator, and how statics are represented in Kotlin.

    By Big Nerd Ranch
    Android News
    SCREENCAST- Dagger with Kotlin
    SCREENCAST- Dagger with Kotlin

    Dagger is a dependency injection framework. In this screencast you will learn how to set up Dagger in a Kotlin Android app and some best practices. Check out this Screencast video from Big Nerd Ranch on how to set up Dagger

    By Big Nerd Ranch
    Android News
    Juggling Daggers - Changing Things Up in Tests
    Juggling Daggers - Changing Things Up in Tests

    Dependency injection is a great tool to break up your dependency creation into reusable pieces. This helps separate your code into logical chunks where some create the dependencies and others consume them...

    By Root Root
    Android News
    SCREENCAST - Android Studio Keyboard Shortcuts
    SCREENCAST - Android Studio Keyboard Shortcuts

    Learn these useful navigation and editing keyboard shortcuts in Android Studio.

    By Big Nerd Ranch
    <