Anatomy of a Gradle file

  This is the bare minimum you need to be able to compile and run an Android application: plugins { id ‘’ id ‘kotlin-android’ } android { compileSdk 30 defaultConfig { applicationId “de.creatronix.myapplication” minSdk 21 } } dependencies { implementation ‘androidx.core:core-ktx:1.6.0′ } Let’s dissect the parts Plugins Plugins are programs which extend the gradle build…

How to fix android.view.InflateException: Error inflating class fragment

I got the error E/AndroidRuntime: FATAL EXCEPTION: main Process: de.creatronix.levelup, PID: 17026 java.lang.RuntimeException: Unable to start activity ComponentInfo{de.creatronix.levelup/de.creatronix.levelup.MainActivity}: android.view.InflateException: Binary XML file line #18: Error inflating class fragment after enabling minification in my build. The issue is that with the usage of safeargs with custom objects we use the the @parcelize annotation which seems to…

What is kapt?

kapt is short for Kotlin annotation processor tool. Why do I need it? tl;dr; every time you use an annotation in a Kotlin file you need to use kapt. Prerequisites dependencies { kapt(“groupId:artifactId:version”) } plugins { kotlin(“kapt”) version “1.5.31” } Further reading

What is Ninja?

Ninja is a build system which replaces the GNU make in AOSP Up to Marshmallow / 6,0 the build system was based on GNU Make In Nougat / 7.0 and later, the build is run by ninja Ninja works from a pre-processed manifest generated by kati and soong kati kati converts files into ninja…

How can you use StrictMode in your Android app?

import android.os.StrictMode import android.os.StrictMode.ThreadPolicy import android.os.StrictMode.VmPolicy class LevelUpApplication : Application() { override fun onCreate() { if (BuildConfig.DEBUG) { StrictMode.setThreadPolicy( ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build() ) StrictMode.setVmPolicy( VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() .build() ) } super.onCreate()