使用 minifyEnabled true 来避免 multidex 禁用断点 - 如何修复?

Using minifyEnabled true to avoid multidex disables breakpoints - How to fix?

我正在开发一个包含 Dropbox SDK 的现有 Android 应用程序。 SDK 包含大量新的 类,这使得必须在构建设置中使用 minifyEnabled true 以避免 multidex。

虽然这在我的发布配置中没有问题,但在调试应用程序时有一个主要缺点:大多数断点不再起作用。

即使断点有效并且我想使用 "step into" 功能单步执行代码,但碰巧这是不可能的。调用堆栈显示混淆而不是真正的代码,而不是单步执行代码:

a.c:111,f (com.my.app.a)
xb:106,f (com.my.app.a)
onCreate:62, MyApp (com.my.app.TheClass)
...

所以,我无法设置minifyEnabled false。我还能做些什么来继续使用我的断点吗?

如果您只想使用 ProGuard (minifyEnabled true) 以防止应用程序需要 multidex,您可以禁用混淆并仅使用 ProGuard 的收缩功能(假设您不使用优化,例如当使用 proguard-android.txt 作为默认配置)。

这不应创建混淆的堆栈跟踪并允许您调试应用程序。

编辑:

为了禁用混淆,只需添加

-dontobfuscate

到您的配置文件。