Proguard :忽略库混淆器错误
Proguard : ignore library proguard errors
我正在优化我的 proguard 配置,我仍然保留一些非强制性的 class 名称。
经过深思熟虑,我终于找到了原因。
我的 class 实现了 Parcelable
并且我使用了一些使用此 proguard 配置的库:
# Needed for Parcelable/SafeParcelable Creators to not get stripped
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
这似乎保留了 class 和 CREATOR
字段的名称。
我认为 CREATOR
字段确实是必需的,因为可以在官方 proguard-android-optimize.txt
proguard 文件中阅读:
-keepclassmembers class * implements android.os.Parcelable {
public static final ** CREATOR;
}
因为我不是库的所有者,所以我无法更改它。有没有办法覆盖他们的 proguard 配置文件? (可能包含在 consumerProguardFiles
gradle 关键字中)
感谢您的回答。
我终于找到了关于proguard-android-optimize.txt
的解决方案。
在 AndroidStudio 中,您可以访问 proguard-android-optimize.txt
(mac 上的 ⌘↑O
,或 windows/linux 上的 control + shift + N
。只需复制文件内容,然后将其粘贴到您的项目中,而无需删除您要删除的规则。最后将其用作您自己的proguardFiles。
替换
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
和
proguardFiles 'proguard-android-optimize.txt', 'proguard-rules.pro'
请注意,这需要您自担风险,并且您不会从最新的嵌入式 proguard 文件中获得优化。
关于 consumerProguardFiles
如果可以,您别无选择向他们提出拉取请求,或者如果您可以联系库作者,则要求进化。
我正在优化我的 proguard 配置,我仍然保留一些非强制性的 class 名称。
经过深思熟虑,我终于找到了原因。
我的 class 实现了 Parcelable
并且我使用了一些使用此 proguard 配置的库:
# Needed for Parcelable/SafeParcelable Creators to not get stripped
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
这似乎保留了 class 和 CREATOR
字段的名称。
我认为 CREATOR
字段确实是必需的,因为可以在官方 proguard-android-optimize.txt
proguard 文件中阅读:
-keepclassmembers class * implements android.os.Parcelable {
public static final ** CREATOR;
}
因为我不是库的所有者,所以我无法更改它。有没有办法覆盖他们的 proguard 配置文件? (可能包含在 consumerProguardFiles
gradle 关键字中)
感谢您的回答。
我终于找到了关于proguard-android-optimize.txt
的解决方案。
在 AndroidStudio 中,您可以访问 proguard-android-optimize.txt
(mac 上的 ⌘↑O
,或 windows/linux 上的 control + shift + N
。只需复制文件内容,然后将其粘贴到您的项目中,而无需删除您要删除的规则。最后将其用作您自己的proguardFiles。
替换
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
和
proguardFiles 'proguard-android-optimize.txt', 'proguard-rules.pro'
请注意,这需要您自担风险,并且您不会从最新的嵌入式 proguard 文件中获得优化。
关于 consumerProguardFiles
如果可以,您别无选择向他们提出拉取请求,或者如果您可以联系库作者,则要求进化。