使用 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
到您的配置文件。
我正在开发一个包含 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
到您的配置文件。