android - 仅在使用 Proguard 的 Release模式下内存泄漏

标签 android android-proguard

我有一个 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/

相关文章:

Android 应用程序在通过生成签名的应用程序发布后无法运行

android - 如何在不暴露源代码的情况下将 SDK 作为 AAR 文件分发?

android - Proguard 关于重复类定义的警告,但不会打印出重复类

删除 Android M HttpClient 会破坏兼容性吗?

android -/system/lib64/libart.so 中的 native 崩溃

c# - Unity如何序列化和反序列化复杂的嵌套json?

java - Bundle 丢失两个 Activity 之间的所有数据

库的 Android Studio consumerProguardFiles 不起作用

android - 发布新更新后 AnroidRuntime 出现致命异常

android - Flutter Navigator 2.0 - 从 URL 启动应用程序时路由器没有收到深层链接?