如何修复 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。
在我的应用程序中,我想启用 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。