如何使用leakcanary,如何添加leakcan作为jar来构建一个带有.mk文件的apk

lyn*_*570 8 android leakcanary

LeakCanary是一个用于Android和Java的内存泄漏检测库. LeakCanary

我的项目基于android make文件系统,它依赖于一些android内部接口和自定义方法.

如何将LeakCanary作为lib添加到我的应用程序中以检测内存泄漏.

我的解决方案:首先,我必须将LeakCanary构建为jar文件,但是如何.因为它是一个gradle目录结构,我之前从未使用过Gradle.

任何提示都很珍贵.

Pra*_*ran 7

对于Leak Canary,您应该使用Android Studio.在Android Studio中,在build.gradle中添加此项

dependencies { 
 debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
 releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
}
Run Code Online (Sandbox Code Playgroud)

在您的Application类中,添加此行LeakCanary.install(this); 在像这样的onCreate()方法中

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    LeakCanary.install(this);
  }
}
Run Code Online (Sandbox Code Playgroud)

点击此链接https://github.com/square/leakcanary了解更多详情.

希望这可能会有所帮助.


Uza*_*air 7

这需要成为您的应用程序的一部分,以便泄漏工作.

public class ExampleApplication extends Application {

 @Override public void onCreate() {
  super.onCreate();
  LeakCanary.install(this);
 }
}
Run Code Online (Sandbox Code Playgroud)

但这很令人困惑,因为我们大多数人都没有编写直接扩展Application类的类,一个简单的语句就可以解决这个问题,

public class YourClass extends Activity{//AppCompatActivity, A  ctionBarActivity or anything

@Override public void onCreate() {
  super.onCreate();
   LeakCanary.install(getApplication());
 }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!!!

最好将此方法称为

   onPostCreate()
Run Code Online (Sandbox Code Playgroud)


Dee*_*orn 2

LeakCanary 不仅仅是一个 JAR - 它不仅包含 java 代码,还包含资源(例如 png)。如果您使用 ANT,那么您唯一能做的就是将 LeakCanary 包含为库项目。但我强烈建议切换到 gradle。因为android开发团队在不久的将来不会支持以任何用户友好的方式导入任何不仅仅是jar的库(因为gradle是优先考虑的)。作为库项目导入是一个痛苦的过程,当有时将库的依赖项也包含为库项目时,这会变得更加痛苦。我很久以前就手工完成了,只是因为客户多年来一直使用 eclipse 和 ant 来完成大型项目。一般来说,您必须执行以下操作:

  1. 获取来源:源代码、资产、资源...
  2. 调查 LeakCanary 的依赖项。您可以在这里查看“POM 对象模型” 。
  3. 对于不仅仅包含 java 代码的依赖项,您需要再次将它们作为库包含在内。对于其他人,只需将它们下载为 jar 即可。
  4. 对于资产(例如字体),有一个额外的步骤:您必须将它们复制到您正在处理的项目中,否则您将收到“资源未找到”异常。
  5. 最后一步是启用清单合并。将以下行添加到项目的 project.properties 中:

    清单合并.启用=true

完成后,将库项目中的所有 AndroidManifest.xml 合并到最终的 apk 中。