Jump to the conclusion for the matrix.

Publishing Kotlin/Java/Android libraries can be intimidating at first sight with plenty of options to choose from and a lot of different plugins providing different sometimes overlapping features to upload your jar files.

The good news is that the sunsetting of Jcenter brought some welcome clarification in this process and the ecosystem is starting to mature.

Numbers by duncan c

I’ll pass quickly over the process of setting up a Sonatype Account and uploading a simple library as there are some excellent resources out there to explain the process like this blog post or this other.

Instead, this…

The first time I heard about Gradle configurations, I thought it’d be about writing build.gradle files and configuring some DSL and writing {} blocks. Then I started writing plugins and realized that they have a configuration phase too that is run before execution.

Well these are all configurations for sure… They also hide another type of configuration, which plays a center role in Gradle dependency management: the Configuration API.

Elephant by flowcomm

Everytime you add a new dependency to a project, you’re actually using configurations behind the scenes:

The Gradle dependency management documentation is very detailed. It has a very detailed page…

I am a huge Kotlin fan. I’m using Kotlin daily for Android development, sometimes a little bit of macOS and occasionally on the backend to power a small API. Lately, I started replacing my Bash and Python scripts with Kotlin and I’m loving Kotlin even more!

I won’t go into the many advantages of using the same language for everything and avoiding context changes or the great tooling that comes with a strongly typed language like Kotlin. If you ever had to read a perl script written by someone else, you’ll know what I mean. …

.pom vs .module files and a real-life exemple

parallel lines by theilr

Disclaimer: the below was tested with Gradle 6.2.2, I’m not sure how much support for module files is in Gradle < 6.0

If you’re coming from the JVM ecosystem, chances are you are familiar with the Maven ecosystem, which I covered in another article.

Maven works well and is based on pom files. Pom files describe a project, its license, repository, authors and, importantly, dependencies. You can take a look at the okhttp pom file if haven’t seen a pom file before.

With the advent of Kotlin Multiplatform, the same project can…

Three different ways to load your Gradle plugins and a few ways to apply them.

Elephant by designerpoint

As an Android developer, I use a bunch of Gradle plugins: the Android Gradle plugin and a few other helpful ones too like Kotlin, Fabric, Dokka, SqlDelight, etc..

Most of the times, I copy/paste the instructions from the installation notes. For an example:

The traditional way of adding a Gradle plugin to your build

While this still works, there are nowadays a few other options that give better tooling or enable new features and it’s safe to say the above shouldn’t be recommended anymore.



Android Lint is a great tool to catch structural errors and improve your Android codebase. Unfortunately, the documentation can be a bit sparse and does not go in the details of precedence and XML options. We’ll try to do that here.

Library by Kotomi_

The different flavors of lint

Android lint (source code) is the engine that performs the check. Its name come from the original 1978 C lint used to analyze C source files. Today lint is the umbrella term for tools analyzing source files and you’ll find ESlint, JSlint, pylint and other for other languages. Ktlint is a thing too, which you can read about there.

I heart coffee by jojo 77

(Not sure you should use kotlin-stdlib-jdk8…)

I love Kotlin as it’s a concise yet powerful language with very sensible defaults and design decisions. In that regard, it adopts the Zen of Python:

There should be one-- and preferably only one --obvious way to do it.

One area where this failed though is the configuration of the stdlib. This is kind of ironic as it’s also one of the first thing you configure as a Kotlin newcomer.

What’s the best between the below? And what should you choose on an Android device with partial Java 8 support ?

// so many…

2021–02–04 Edit: The end of life of jcenter has brought some attention to this article. Most of it is still valid. I updated it to reflect recent changes to the maven-publish plugin, signing configs and a few other things. Many thanks to everyone that provided feedback!

Now that we know who are different actors of the maven ecosystem (part 1/3) and have chosen MavenCentral as our repository of choice (part 2/3), let’s see how to deploy !

Disclaimer: there are multiple steps involved. Nothing too complex but it’s not straightforward. Grab yourself a coffee and put your favorite playlist on…

This is the second article in a series describing how I started distributing my android/kotlin libraries. This article focuses on choosing between jcenter and mavenCentral from the point of view of a project maintainer. It assumes you’re familiar with the terms defined in article 1/3.

Part 1/3 focuses on terms, especially some misconceptions around maven, MavenCentral, bintray, jcenter, etc…

Part 3/3 describes a step-by-step solution to publishing your android/kotlin project on MavenCentral.

Edit: oh well, Jcenter is going down. That makes the choice even easier :)

Jcenter and mavenCentral are two hugely popular repositories in the Android community. There has…

This is the first article in a series describing how I started distributing my android/kotlin libraries. I am quite new to the subject and these articles do not pretend to be exhaustive yet they should be a good introduction for anyone who has been developing for a time and wants to make his/her software more broadly available. Especially, this first article tries to decode a lot of confusion around the different actors of the ecosystem.

Part 2/3 dives into the jcenter vs mavenCentral debate.

Part 3/3 describes a step-by-step solution for publishing your android/kotlin project to MavenCentral.

“Too much packaging material” by PlaxcoLab

The common ground

Let’s start by…

Martin Bonnin

Chocolate Droid Officer🍫

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