小编SKO*_*son的帖子

Firebase Strictmode 资源泄漏

在通过 Fabric 从 Crashlytics 转换为通过 Firebase 的 Crashlytics 之后,我开始在调试运行中看到以下调用堆栈,其中启用了 StrictMode 以查找资源泄漏。

StrictMode 与此代码一起使用,仅在调试版本中使用:

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
    .detectLeakedClosableObjects()
    .penaltyLog()
    .build());
Run Code Online (Sandbox Code Playgroud)

我在项目级 gradle 中使用了这个版本的 Fabric 的 gradle 工具:

classpath "io.fabric.tools:gradle:1.27.0"
Run Code Online (Sandbox Code Playgroud)

以及模块级 gradle 中这些版本的 Firebase 和 Crashlytics:

implementation "com.google.firebase:firebase-core:16.0.7"
implementation "com.crashlytics.sdk.android:crashlytics:2.9.8"
Run Code Online (Sandbox Code Playgroud)

在初始化期间,Firebase 检测会启动一个后台线程,该线程使用 okhttp 进行设置调用。当它发生时, StrictMode 会导致此调用堆栈弹出:

W/CrashlyticsCore: Received null settings, skipping report submission!
D/StrictMode: StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
        at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1786)
        at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:264)
        at java.util.zip.Inflater.finalize(Inflater.java:398) …
Run Code Online (Sandbox Code Playgroud)

resource-leak firebase crashlytics

5
推荐指数
0
解决办法
538
查看次数

标签 统计

crashlytics ×1

firebase ×1

resource-leak ×1