reckfellENGINE

Android crashes: logs and symbols

Distinguish Java/Kotlin exceptions, managed C# exceptions and native crashes first: they require different stacks. “The app closes” without logs cannot identify

On this page

Distinguish Java/Kotlin exceptions, managed C# exceptions and native crashes first: they require different stacks. “The app closes” without logs cannot identify a cause.

Collect evidence

  1. Record package identifier, version code, ABI, device, OS and exact APK/AAB build. Retain the artifact itself.
  2. Connect the device and capture adb logcat during one reproduction. Keep the exception beginning and full Caused by chain, or the native crash/tombstone block, rather than the final few lines.
  3. Obfuscated Java/Kotlin release code requires that release’s mapping file.
  4. Native stacks require symbols matching those SO files and ABI. Source builds create a native-symbol archive when both debug_symbols and separate_debug_symbols are enabled. This code does not establish an archive already published or installed.
  5. For C#, retain the managed stack and matching .NET artifacts. Native symbols cannot automatically recover managed method names.

Locate the cause

ClassNotFoundException concerns Java packaging or shrinking; UnsatisfiedLinkError concerns ABI, missing SO files or dependencies. A native signal requires symbolization and the first-failure stack; ANR requires thread stacks and blocking duration rather than only crash logs.

After a fix, repeat the same scenario in the same release/debug variant. Symbols from a similar build can produce a plausible but incorrect stack. No device run, symbolization or crash reproduction was executed here.

Reckfell Engine documentationBack to top ↑
QUICK LINKSGetting startedEntity hierarchyC# & .NET 10Scenes and prefabs
Reckfell guides and full API K
reckfellENGINE
RECKFELL ACCOUNT

Sign in

Sign in to your Reckfell account.

One account for the entire Reckfell platform.