我应该在发布版中移除LeakCanary的代码/类吗?

9

我搜索了一下,没有找到任何答案,这可能意味着这是一个基本问题。为了避免显露我的无知,我还是要问一下。我正在准备发布我的应用程序,并希望确保Leak Canary不会弹出给我的用户。我的泄漏Canary相关依赖如下。

dependencies {
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
}

我认为,由于releaseCompile包含no-op,这意味着我可以按原样进行发布构建,而无需删除Leak Canary代码。我是对的吗?


2
据我所知,你是正确的。 - CommonsWare
3个回答

14
我找到了这个在线资源。

dependencies {
// Real LeakCanary for debug builds only: notifications, analysis, etc
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'

// No-Op version of LeakCanary for release builds: no notifications, no analysis, nothing
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
}

6
为什么加入“空操作”指令,如果它什么都不做? - farhan patel
4
即使它不起作用,你仍然需要这些类来编译你的应用程序。 - ysfcyln
1
@ysfcyln 但是不需要类,只需要依赖导入。 - htafoya

4

1
2020年6月的版本是:debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4'。 - Pablo Alfonso
如果您使用了单个Leak-canary API,例如排除已知的泄漏,那么会发生什么呢?您需要手动创建一个no-op类。 - Top-Master

3
我正在使用最新版本的库2.0-alpha-1以调试模式运行,并且在库的发布依赖中没有找到。我采取了以下步骤:
  1. 为每个构建模式(发布和调试)创建单独的文件夹。
  2. 调试文件夹的路径:app/src/debug
  3. 发布文件夹的路径:app/src/release

然后我创建了一个用于初始化LeakCanary的类,名为LeakCanaryInitializer.kt,并将其创建在两个构建文件夹内:

  • 调试模式:app/src/debug/java/LeakCanaryInitializer.kt
  • 发布模式:app/src/release/java/LeakCanaryInitializer.kt

发布模式下的类包含如下内容:

import android.content.Context
object LeakCanaryManager {

  fun init(context: Context) {
    // We should do nothing in the release mode
  }
}

调试模式中的类包含:

import android.content.Context
import leakcanary.LeakCanary
import leakcanary.LeakSentry

object LeakCanaryManager {

  fun init(context: Context) {
    // Here you should write your custom initializing
  }
}

然后在你的Application类中调用init方法:

LeakCanaryManager.init(this)

我的gradle文件中只包含debug依赖:

debugImplementation "com.squareup.leakcanary:leakcanary-android:2.0-alpha-1"

这是一个好的解决方案。我面临着完全相同的问题,因为他们在leak canary 2中删除了no-op包,因此这些类对于所有构建风格都不可用。 - Francois
嗨,这对我似乎没用。@Francois 有什么帮助吗? - Faisal Ahmed
发个私信给我,我们一起来解决你的问题吧。你是要升级到 LeakCanary 2 吗?另外你遇到了哪些错误? - Francois

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接