Image for post
Image for post

Gradle buildSrc approach has become standard for implementing custom plugins, tasks and specifying common configurations (like dependencies list and versions) but has one major flaw — it invalidates a build cache when it is changed. On the other hand, Gradle also provides an alternative composite build approach that lacks this flaw. In this article, I describe how to use composite build instead of buildSrc and the challenges to expect from migration.

My experience of Gradle configurations

Gradle build system was introduced for Android Development together with Android Studio. Android Studio has not always been used. If you have been developing applications for Android for more than 6 years, you probably remember Eclipse with Android Plugin. …


Image for post
Image for post

In part 1 of my series of articles, I have already explained to you what Dynamic Delivery is and what API it has. In this article, I describe in detail exactly how I used Dynamic Delivery in our application Bumble and why, in particular, integration was so easy. As a result, I was able to reduce the size of the application by half a megabyte for 99% of our users, turning a function which was available only in a given geolocation into a downloadable module.

I hope this will be as useful as it was for me :)

Bumble Brew

Recently we have been experimenting with offline interaction with users and have added a new screen featuring a QR code which when scanned at the door would allow you entry into a restaurant, cafe or shop, for example. This is what it looks…


Image for post
Image for post

Dynamic Delivery is a technology which allows you to install and delete parts of an application while the application is working, in order to reduce the space it occupied. If there are functions not being used, what is the point of a user having them on their device?

In part 1 of this article, I explore Dynamic Delivery and its API in more detail, specifically how to download and remove modules. …


Image for post
Image for post

As part of the MagicLab family, one of my main projects was involved in the team that created Reaktive library — reactive extensions on pure Kotlin.

Whenever possible, any library must maintain binary compatibility. Whenever various versions of a library are not compatible in terms of their dependencies, there are going to be crashes in runtime. We may encounter this problem when adding Reaktive support to MVICore.

In this article I am going to briefly explain you what binary compatibility: its peculiarities in the case of Kotlin; how it has been supported at JetBrains, and how it is now supported at MagicLab as well. …


Image for post
Image for post

As part of the MagicLab family, one of my main projects was involved in the team that created Reaktive library — Reaktive Extensions on pure Kotlin.

In the case of Kotlin Multiplatform I discovered that continuous integration and continuous delivery require additional configuration. You need to have multiple virtual machines with different operating systems in order to build a library. In this article I’ll be showing you how to configure continuous delivery for your Kotlin Multiplatform library.

Continuous integration and continuous delivery for open-source libraries

Continuous integration and continuous delivery have been part of the open-source communities for a long time as they offer a number of useful services. Many of them provide their services for open-source projects completely free of charge: Travis CI, JitPack, CircleCI, Microsoft Azure Pipelines and also GitHub Actions, which launched recently. …

About

Yury

Android Developer @BadooTech

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