couchbase / couchbase-lite-android-ce

The community edition of couchbase lite for android
Apache License 2.0
9 stars 1 forks source link

crash on release #36

Closed fralways closed 4 years ago

fralways commented 4 years ago

In my flutter app I’ve been using cb lite as native android lib. Recently the app started crashing on startup with error:

[ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.NoSuchMethodError: no static method “Lcom/couchbase/lite/internal/core/C4Log;.logCallback(Ljava/lang/String;ILjava/lang/String;)V” E/flutter (30027): at com.couchbase.lite.internal.core.C4Log.setCallbackLevel(Native Method) E/flutter (30027): at c.d.a.u0.(Unknown Source:23) E/flutter (30027): at c.d.a.b.(Unknown Source:5) E/flutter (30027): at app_id.a.i(Unknown Source:0) E/flutter (30027): at app_id.MainActivity$a.a(Unknown Source:860) E/flutter (30027): at d.a.c.a.k$a.a(Unknown Source:17) E/flutter (30027): at io.flutter.embedding.engine.b.b.a(Unknown Source:57) E/flutter (30027): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(Unknown Source:4) E/flutter (30027): at android.os.MessageQueue.nativePollOnce(Native Method) E/flutter (30027): at android.os.MessageQueue.next(MessageQueue.java:325) E/flutter (30027): at android.os.Looper.loop(Looper.java:142) E/flutter (30027): at android.app.ActivityThread.main(ActivityThread.java:6944) E/flutter (30027): at java.lang.reflect.Method.invoke(Native Method) E/flutter (30027): at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) E/flutter (30027): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) E/flutter (30027): F/flutter (30027): [FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(76)] Check failed: CheckException(env).

It crashes on Google play (using appbundle), it crashes when building it via Bitrise (using apk, not signed). It does not crash when I run in debug or with flutter run --release.

target api is 28 min api is 21 tested version 2.6.2, 2.6.0, 2.5.3, 2.5.0

I saw similar topic but as far as I know I’m not using Proguard or similar.

Any suggestion?

fralways commented 4 years ago

It seems that r8 replaced proguard but has poor documentation. Solution was to add proguard rules as if I am using proguard and then r8 builds on that rules by default. I didn't even know r8 was enabled but found it in gradle.properties file. Maybe couchbase readme section named ProGuard should be renamed to ProGuard/R8. Cheers