如何修复 ProGuard 错误

How to fix ProGuard bugs

在我的应用程序中,我想启用 proguard 并编写 proguard 规则,但在生成 apk 后显示 logcat.
[= 中的一些错误13=]

在我的应用程序中,我想启用 proguard 并编写 proguard 规则,但在生成 apk 后显示 logcat.
[= 中的一些错误13=]

告诉我这个错误:

Error: D:\Projects\myapp\BaseApp.0.22\app\proguard-rules.pro, offset: 3207, line: 88, column: 7, Expected [!]interface|@interface|class|enum

ProGuard 规则:

##########################
#        OKHTTP          #
##########################
-dontwarn javax.annotation.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn okhttp3.internal.platform.ConscryptPlatform
##########################
#        OKIO            #
##########################
-dontwarn org.codehaus.mojo.animal_sniffer.*
##########################
#        RETROFIT        #
##########################
-keepattributes Signature, InnerClasses, EnclosingMethod
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
-keepclassmembers,allowshrinking,allowobfuscation interface * {
    @retrofit2.http.* <methods>;
}
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn javax.annotation.**
-dontwarn kotlin.Unit
-dontwarn retrofit2.KotlinExtensions
-dontwarn retrofit2.KotlinExtensions$*
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface <1>
##########################
#        GSON            #
##########################
-keepattributes Signature
-keepattributes *Annotation*
-dontwarn sun.misc.**
-keep class com.google.gson.examples.android.model.** { <fields>; }
-keep class * implements com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
-keepclassmembers,allowobfuscation class * {
  @com.google.gson.annotations.SerializedName <fields>;
}
##########################
#        GLIDE           #
##########################
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}
##########################
#        ROOM            #
##########################
-keep class * extends androidx.room.RoomDatabase
-dontwarn androidx.room.paging.**
##########################
#       EVENTBUS         #
##########################
-keepattributes *Annotation*
-keepclassmembers class * {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}
##########################
#          YOYO          #
##########################
-keep class com.daimajia.easing.** { *; }
-keep interface com.daimajia.easing.* { *; }
-keep class com.daimajia.** { *; }
-dontwarn com.daimajia.**
-keepnames class com.daimajia.**
##########################
#        PDFVIEW         #
##########################
-keep class com.shockwave.**
##########################
#      DOWNLOADER        #
##########################
-keep class com.downloader.** {*;}
##########################
#       MY_FILES         #
##########################
-dontwarn com.app.app.data.model.**
-keep class com.app.app.data.model.** { *;}
-dontwarn com.app.app.utils.custom_view.**
-keep com.app.app.utils.custom_view.** { *;}

显示 第 88 行第 88 行 的错误是 -keep com.app.app.utils.custom_view.** { *;} !

我该如何解决?

如错误所述,您的 ProGuard 规则中存在语法错误,该语法错误位于关键字 keep 之后,您需要在提供名称之前指定类型。

在这种情况下,您漏掉了 class 这个词。

换行就行了

-keep com.app.app.utils.custom_view.** { *;}

-keep class com.app.app.utils.custom_view.** { *;}

有关自定义规则文件的详细信息,请阅读 ProGuard Manual