Anatomy of a Gradle file

  This is the bare minimum you need to be able to compile and run an Android application: plugins { id ‘com.android.application’ 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 https://kotlinlang.org/docs/kapt.html

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 Android.mk 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() https://developer.android.com/reference/android/os/StrictMode