内存泄漏仅在发布模式下使用Proguard

时间:2015-08-28 15:26:46

标签: android android-proguard

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

dalvikvm  D  WAIT_FOR_CONCURRENT_GC blocked 91ms

如果我没有混淆,不收缩并且不在proguard中进行优化,那么发布工作正常。如果我做其中一个,我有这个错误。我使用以下几行:

-dontshrink
-dontoptimize
-dontobfuscate

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

  • 如何确定问题的来源?
  • 我可以告诉proguard优化/收缩/混淆一个包,以便我可以尝试隔离问题吗?

1 个答案:

答案 0 :(得分:3)

你可以告诉Proguard不要干扰,我的意思是在proguard配置文件中使用这样的指令来混淆,包和子包:

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

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

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

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

可以找到包含其他示例的完整Proguard手册here