我有一个 Android 应用程序在 Debug模式下运行良好,但在 Release模式下存在某种内存泄漏。基本上,它真的很慢,并且在 logcat 中重复出现以下行:
dalvikvm D WAIT_FOR_CONCURRENT_GC blocked 91ms
如果我不混淆,不收缩,不在 proguard 中优化,那么发布就可以了。如果我执行其中之一,则会出现此错误。我使用以下几行:
-dontshrink
-dontoptimize
-dontobfuscate
我正在使用多个使用一些 native (即 JNI)代码的外部库,但我不知道哪里出了问题。
- 我如何确定问题出在哪里?
- 我可以告诉 proguard 只优化/缩小/混淆一个包,以便我可以尝试隔离问题吗?
最佳答案
你可以告诉 Proguard 不要干扰,我的意思是混淆,在 proguard 配置文件中使用如下指令的包和子包:
-keep class com.google.** { *; }
-keep class okio.** { *; }
您还可以告诉它使用以下方法使用特定注释来保留类注释:
-keep class com.your.annotation
-keep @com.your.annotation class * { *; }
第一个 keep 指令确保它不会删除注释本身,第二个保留任何用它注释的东西。
可以找到包含其他示例的完整 Proguard 手册 here .
关于android - 仅在使用 Proguard 的 Release模式下内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32274606/