Photo by NeONBRAND on Unsplash


  • Download Android Open Source Project


If you don’t have enough powerful PC, most probably your build will take hours and it’s not a fact that you will succeed in the end.

On my PC which has the following configuration, building Android 10 takes ~ 25 minutes.

Let’s imagine you have an Awesome application 😉

Also, you have an Awesome Library which should be used in your Awsome application. The challenge is that the library has different versions and each version provides different functionality. But we want our Awesome application to work with all versions of Awsome Library.

How we can solve this challenge 🤔

Product Flavors

Easy 🧐, with the help of Product Flavors.

Product Flavor allows you to create different versions or variants of your application in the same codebase. Product Flavors are a feature of Gradle Plugin used in Android Studio.

It’s easy to add flavor…

If you are playing around WiFi on the android and checking WiFiManager documentation, you will notice for most of the methods 👇

Recently I was working on a simple login layout. Nothing really special a ConstraintLayout which has LinearLayout, a few Edit Text, Text View and Button. A very common use case for most applications nowadays. So I took the first EditText from the palette and dropped it into the ConstraintLayout connecting it’s constrained and setting the width to 0dp

app:layout_constraintStart_toStartOf="parent" />

Looks pretty standard right? …

When you are working on the Android application, it's very important to deliver them to the users as fast as possible, so they can test and give you feedback. Google Play Console provides functionality to release an application for close/open beta channels, alpha channels, for internal testers and production. But the process of the release always takes some time and a few clicks, how we can improve this?

In the previous article, I showed how to integrate CircleCI

In this article, I will show how to integrate the Fastlane and completely automate the release process.

Installing Fastlane

The very first step would…

Screenshot from the

CircleCI is a modern continuous integration and continuous delivery (CI/CD) platform. Let’s integrate it in the Perfectus application.


  • Get Started

Get Started

In order to start building Perfectus, first, we need to Sign Up, this can be done either with GitHub, GitLab, or Bitbucket accounts.

If you are using GitHub, then you can choose which repositories you what to build: All or Public. After selecting the type of repository you will be asked to authenticate yourself with the GitHub account.

In the last article, we learned how to set up Firebase for authentication with email and password 👇

Now it’s time for implementing authentication logic - Sign In, Sign Up, Sign Out and Reset Password in the Perfectus application using firebase auth.

Authenticator (library)

First of all, let’s define an interface which will provide authentication functionality

As you maybe noticed, I am using suspend functions

A suspending function is just a regular Kotlin function with an additional suspend modifier which indicates that the function can suspend the execution of a coroutine. …

The Problem

Show an AlertDialog while the application is starting, or after the application is finished. The key here is that AlertDialog should look like the System Dialog, means there should be nothing behind it.

it seems the solution should be an easy one … right? 🤔

The Attempts to Solve

My first thought was to show an AlertDialog right from the application onCreate() method, something like this

Easy, right? 🤯 Unfortunately, this doesn’t work at all, throwing an exception

You need to use a Theme.AppCompat theme (or descendant) with this activity.

Digging deeper into the Alert Dialog documentation 🧐, I found out that I…

Our perfectus application needs authentication method, firebase provides easy ways to handle Email/Password, Phone, Google, Facebook, and other authentication methods. In our case, we will use Email/Phone authentication, but I will also cover Phone, Google, and Facebook authentication in my next articles. So let’s start with creating a Firebase Project

Creating a Firebase Project

To start implementing our Sign In functionality, first, let’s create a Firebase Project, to do that navigate to, there press on “Add Project” button

Photo by Steve Halama on Unsplash

Passing job interviews …
For some, it’s stressful, for some may be “not”.

But in general passing interviews is a skill, and to build this skill you need to start passing as many interviews as possible. Each time you will learn something new and that learning could be used in the next interview, life, job.

Syndrome of the Beginner (2% knowledge, 98% confidence)

When I just started searching for a new job and passing my first interviews, I was super confident in my “knowledge”, I knew “everything” 😋 and everything was just 2% of “everything” 🤭, about the existence of other 98% I even can’t imagine 🤓. …

Victor Apoyan

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store