If your Kotlin Android app crashes immediately on launch, you’re not alone. This issue is common among Android developers—especially when working with Android Studio and Kotlin. This guide will walk you through top reasons your app might crash and how to fix them with full code samples.

1. Missing Application
or Activity
Declaration in Manifest
When the MainActivity
or custom Application
class is not registered in AndroidManifest.xml
, your app will crash before the first screen is shown.
Fix:
Ensure this is declared properly:
<application android:name=".MyApp" android:label="@string/app_name" android:theme="@style/Theme.App"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
2. Unhandled NullPointerException
Kotlin uses nullable types, but if you force unwrap with !!
, any null value will cause a crash.
Fix:
Avoid using !!
. Use safe calls (?.
) or let
.
val username: String? = intent.getStringExtra("username") username?.let { Log.d("MainActivity", "Username: $it") }
3. Improper Context Usage
Using this
instead of applicationContext
or passing the wrong context can crash components like Toast, AlertDialog, or custom views.
Fix:
Double-check which context you need. For example, use:
Toast.makeText(applicationContext, "Hello!", Toast.LENGTH_SHORT).show()
4. ProGuard/R8 Obfuscation Issue
If you’re using ProGuard or R8, some classes might be stripped or renamed, causing runtime crashes.
Fix:
Add rules to keep important classes:
-keep class com.example.myapp.MyViewModel { *; } -keepclassmembers class * { public <init>(...); }
5. View Binding or findViewById Null Reference
If you’re using ViewBinding or findViewById
before the view is created, you’ll get a crash.
Fix:
Only access UI elements after setContentView
.
class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.textView.text = "Welcome" } }
External Guide for Debugging Crashes
Check out the official Android crash debugging guide for deeper analysis tools and log inspection using Logcat.