首页 > 解决方案 > 使用 Twilio 可编程聊天聊天模块启用 Proguard 后无法正常工作

问题描述

我为发布风格启用了 proguard,但之后 Twilio Programmable Chat 停止工作。

我在 Proguard 文件中添加了这个https://github.com/twilio/twilio-chat-demo-android/blob/master/chat-demo-android/proguard-project.txt 。

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

构建.gradle

    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

标签: androidtwilioproguard

解决方案


试试这个,proguard-rules.pro

#==============================================
# Proguard rules for use with IP Messaging SDK
#==============================================

-keep class com.twilio.chat.** { *; }
-keepattributes InnerClasses
#-keep interface com.twilio.chat.** { *; }
#-keep enum com.twilio.chat.** { *; }

## Keep native methods

-keepclasseswithmembernames class com.twilio.chat.** {
    native <methods>;
}

## Keep callbacks from native
# ?

#======================================
# Local demo application configuration
#======================================

-keepclassmembers class **.R$* {
    public static <fields>;
}

## EasyAdapter

-dontwarn uk.co.ribot.easyadapter.**
-keepattributes *Annotation*
-keepclassmembers class * extends uk.co.ribot.easyadapter.ItemViewHolder {
    public <init>(...);
}

## Google libraries

-dontwarn android.support.**
-keep class com.google.ads.** { *; }
-keep class com.google.android.gms.** { *; }
-keep class com.google.firebase.** { *; }
-keepattributes Signature

推荐阅读