Troubleshooting for Kotlin SDK
Understand what to do when you encounter the most common issues.
Android crashes with org.json classes
If your Android release build crashes immediately on startup with errors related to org.json classes (for example, java.lang.NoSuchMethodError: No virtual method e()Ljava/lang/Object; in class Lorg/json/JSONTokener;), this might be caused by ProGuard or R8 configuration of your project.
Root cause
The PubNub Kotlin SDK introduces a transitive dependency on org.json classes that are built into the Android platform. When ProGuard or R8 shrinks your release build, it may rename org.json methods (for example, nextValue() → e()). At runtime, however, Android loads its own original version of org.json from the framework — causing NoSuchMethodError crashes because the renamed method names no longer exist.
Fix
Add this rule to your ProGuard configuration file (proguard-rules.pro) to prevent renaming of org.json classes:
1# Prevent renaming of org.json classes (required for Android)
2-keepnames class org.json.** {
3 *;
4}
Android crashes on older API versions
If your app crashes on Android API levels below 26 with java.time related errors, you need to enable Java 8 API desugaring.
Root cause
The Kotlin SDK uses java.time package features that were added in Android API 26. Apps with minSdkVersion below 26 don't have access to these APIs by default.
Fix
Enable Java 8 API desugaring in your app-level build.gradle:
1android {
2 compileOptions {
3 // Flag to enable support for the new language APIs
4 coreLibraryDesugaringEnabled true
5 sourceCompatibility JavaVersion.VERSION_1_8
6 targetCompatibility JavaVersion.VERSION_1_8
7 }
8}
9
10dependencies {
11 coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
12}
For more information, refer to Android's Java 8+ API desugaring documentation.