proguard-rules.pro 似乎不适用于 R8
Posted
技术标签:
【中文标题】proguard-rules.pro 似乎不适用于 R8【英文标题】:proguard-rules.pro does not seem to work with R8 【发布时间】:2019-09-12 04:29:34 【问题描述】:我今天早些时候将我的 android Studio 升级到了 3.4,这是我第一次使用默认的压缩器 R8。我将一个库项目的proguard-project.txt
的内容复制到了它的proguard-rules.pro
。 proguard-project.txt
完美地为这个项目工作,该项目生成一个供其他应用项目使用的 aar 文件。
文件proguard-rules.pro
似乎没有被使用。该项目在其build.gradle
中有以下内容:
buildTypes
release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
signingConfig signingConfigs.Release
debug
signingConfig signingConfigs.Debug
proguard-rules.pro
有以下内容:
# Preserve all public classes, and their public and protected fields and methods.
-keep public class *
public protected *;
根本不保留公共方法的名称:
任何人都可以提供有关如何解决此问题的提示吗?
【问题讨论】:
【参考方案1】:将此行添加到gradle.properties
android.enableR8 = true
并在您的proguard-rules.pro
中尝试以下代码
-keep public class **
public *;
protected *;
编辑#1
在此处查看如何将 Proguard 迁移到 R8:Android/java: Transition / Migration from ProGuard to R8?
【讨论】:
非常感谢。民众 *;受保护的*;做到了。其他的似乎是不必要的。 我们需要第一行来启用 R8 吗?我以为在新版本的android studio中是默认开启的。 @NikosHidalgo 不。我没有第一行,现在工作正常。我相信你是对的 - 从 Android Studio 3.4 开始默认启用它。 这是一个错误,请参阅issuetracker.google.com/131712625。该问题已修复,将成为 Android Studio 3.4.1 的一部分。以上是关于proguard-rules.pro 似乎不适用于 R8的主要内容,如果未能解决你的问题,请参考以下文章
在我的颤振应用程序中找不到 proguard-rules.pro
Android混淆规则--proguard-rules.pro
NSURLSessionConfiguration timeoutIntervalForRequest 似乎不适用于后台会话