1

我有一个在调试模式下运行良好的 Android 应用程序,但在发布模式下存在某种内存泄漏。基本上,它真的很慢,并且在 logcat 中重复出现以下行:

dalvikvm  D  WAIT_FOR_CONCURRENT_GC blocked 91ms

如果我不混淆,不缩小并且不优化proguard,那么发布就可以了。如果我做其中之一,我有这个错误。我使用以下几行:

-dontshrink
-dontoptimize
-dontobfuscate

我正在使用多个使用一些本机(即 JNI)代码的外部库,但我不知道可能出了什么问题。

  • 我如何确定问题来自哪里?
  • 我可以告诉 proguard 只优化/缩小/混淆一个包,以便我可以尝试隔离问题吗?
4

1 回答 1

3

您可以使用 proguard 配置文件中的如下指令告诉 Proguard 不要干扰,我的意思是混淆包和子包:

-keep class com.google.** { *; }
-keep class okio.** { *; }

您还可以使用以下命令告诉它使用特定注释对类进行注释:

-keep class com.your.annotation
-keep @com.your.annotation class * { *; }

第一个保持指令确保它不会删除注释本身,第二个保持任何带有它的注释。

可以在此处找到包含其他示例的完整 Proguard 手册。

于 2015-08-28T15:47:52.833 回答