LeakCanary是一款适用于Android和Java的内存泄漏检测库。 LeakCanary
我的项目基于android make文件系统,它依赖于一些android内部接口和自定义方法。
如何将LeakCanary作为lib添加到我的应用程序中以检测内存泄漏。
我的解决方案: 首先,我必须将LeakCanary构建为jar文件,但是如何。因为它是一个gradle目录结构,我之前从未使用过Gradle。
任何提示都很珍贵。
答案 0 :(得分: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'
}
在你的Application类中,在onCreate()方法中添加 LeakCanary.install(this); 这一行
public class ExampleApplication extends Application {
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
点击此链接https://github.com/square/leakcanary了解详情。
希望这可能会有所帮助。
答案 1 :(得分:7)
这需要成为您的应用程序的一部分,以便泄漏工作。
public class ExampleApplication extends Application {
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
但是这很令人困惑,因为我们大多数人都没有编写这种直接扩展Application类的类,一个简单的语句可以解决这个问题,
public class YourClass extends Activity{//AppCompatActivity, A ctionBarActivity or anything
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(getApplication());
}
}
希望这会有所帮助!!!
最好在
中调用此方法 onPostCreate()
答案 2 :(得分:2)
LeakCanary不仅仅是一个JAR - 它不仅包含java代码,还包含资源(例如png)。如果您使用的是ANT,那么您唯一能做的就是将LeakCanary包含为库项目。但我强烈建议切换到gradle。因为Android开发团队不会支持在最近的将来以任何用户友好的方式导入任何不仅仅是jar的库(因为gradle是优先级)。并且作为库项目导入是一个痛苦的过程,当有时包括库的依赖项也作为库项目时会更加痛苦。我很久以前手工完成它只是因为客户端使用eclipse和ant进行大项目的时间很长。通常,您必须执行以下操作:
最后一步是启用清单合并。将以下行添加到项目的project.properties中:
manifestmerger.enabled =真
完成将所有AndroidManifest.xml从库项目合并到最终的apk。
答案 3 :(得分:0)
你需要的是安装gradle,然后调用" gradle assembleRelease"在图书馆的泄漏金丝雀目录。如果一切顺利,您将在build / outputs目录中获得几个aars文件。这些是android库。你应该像任何其他的android库一样引用它们。
答案 4 :(得分:0)
这个答案对你来说可能为时已晚,但它可能对其他人有所帮助。可以在常规项目中将通过gradle公开的更多项目添加为jar文件。
Gradle只是一个构建工具。这些java库在一天结束时你需要一堆jar文件。所以我做的是以下......
我这样做是为了导入整个或部分Google Play库以及许多其他库。事实上,这对我来说是一种常见的做法。
现在,正如Deepscorn所提到的,我注意到LeakCanary有一些显然包含Android资源的res /文件夹......我现在非常需要在Titanium SDK中包含LeakCanary。所以我将以同样的方式进行,但这次,我将在钛项目的资源文件夹中添加资源,看看会发生什么。
资源最终都被包含在整个项目中并且可用。我不会在android资源中确定范围。你只需要R ...或... getIdentifier(...)来获取它们。
您还需要确保将AndroidManifest条目复制到将要编译的AndroidManifest文件中。
如果我有时间,我会在这里发布我的结果。与此同时,任何人都可以尝试并发布一些反馈。