Search code examples
androidflutterproguardjitsijitsi-meet

Flutter Jitsi Stopping in release mode


Adding video meeting functionality in Flutter app using Jitsi. App is working in debug mode, but in release version, as soon as try to join the meeting, app closes.

Added proguard-rules.pro file.

Plugin documentation on pub.dev says click here to know what content to put in proguard-rules.pro files. And on clicking, 404, not found, file not found.


Solution

  • Content for proguard-rules.pro

    # Add project specific ProGuard rules here.
    # By default, the flags in this file are appended to flags specified
    # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
    # You can edit the include path and order by changing the proguardFiles
    # directive in build.gradle.
    #
    # For more details, see
    #   http://developer.android.com/guide/developing/tools/proguard.html
    
    # Add any project specific keep options here:
    
    # React Native
    
    # Keep our interfaces so they can be used by other ProGuard rules.
    # See http://sourceforge.net/p/proguard/bugs/466/
    -keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
    -keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
    -keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
    
    # Do not strip any method/class that is annotated with @DoNotStrip
    -keep @com.facebook.proguard.annotations.DoNotStrip class *
    -keep @com.facebook.common.internal.DoNotStrip class *
    -keepclassmembers class * {
        @com.facebook.proguard.annotations.DoNotStrip *;
        @com.facebook.common.internal.DoNotStrip *;
    }
    
    -keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
      void set*(***);
      *** get*();
    }
    
    -keep class * extends com.facebook.react.bridge.JavaScriptModule { *; }
    -keep class * extends com.facebook.react.bridge.NativeModule { *; }
    -keepclassmembers,includedescriptorclasses class * { native <methods>; }
    -keepclassmembers class *  { @com.facebook.react.uimanager.UIProp <fields>; }
    -keepclassmembers class *  { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
    -keepclassmembers class *  { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }
    
    -dontwarn com.facebook.react.**
    -keep,includedescriptorclasses class com.facebook.react.bridge.** { *; }
    
    # okhttp
    
    -keepattributes Signature
    -keepattributes *Annotation*
    -keep class okhttp3.** { *; }
    -keep interface okhttp3.** { *; }
    -dontwarn okhttp3.**
    
    # okio
    
    -keep class sun.misc.Unsafe { *; }
    -dontwarn java.nio.file.*
    -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
    -keep class okio.** { *; }
    -dontwarn okio.**
    
    # WebRTC
    
    -keep class org.webrtc.** { *; }
    -dontwarn org.chromium.build.BuildHooksAndroid
    
    # Jisti Meet SDK
    
    -keep class org.jitsi.meet.** { *; }
    -keep class org.jitsi.meet.sdk.** { *; }
    
    # We added the following when we switched minifyEnabled on. Probably because we
    # ran the app and hit problems...
    
    -keep class com.facebook.react.bridge.CatalystInstanceImpl { *; }
    -keep class com.facebook.react.bridge.ExecutorToken { *; }
    -keep class com.facebook.react.bridge.JavaScriptExecutor { *; }
    -keep class com.facebook.react.bridge.ModuleRegistryHolder { *; }
    -keep class com.facebook.react.bridge.ReadableType { *; }
    -keep class com.facebook.react.bridge.queue.NativeRunnable { *; }
    -keep class com.facebook.react.devsupport.** { *; }
    
    -dontwarn com.facebook.react.devsupport.**
    -dontwarn com.google.appengine.**
    -dontwarn com.squareup.okhttp.**
    -dontwarn javax.servlet.**
    
    # ^^^ We added the above when we switched minifyEnabled on.
    
    # Rule to avoid build errors related to SVGs.
    -keep public class com.horcrux.svg.** {*;}