LeakCanary is a memory leak detection library for Android and Java. LeakCanary
My project is based on android make file system, which relies on some android internal
This is needed to be part of your application in order for leakcanary to work.
public class ExampleApplication extends Application {
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
but this is confusing because most of us do not write such kind of class that extends the Application class directly, a work around rather a simple statement will fix this problem,
public class YourClass extends Activity{//AppCompatActivity, A ctionBarActivity or anything
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(getApplication());
}
}
hope this helps!!!
Its better to call this method in
onPostCreate()
For Leak Canary, you should work with Android Studio. In Android Studio, In your build.gradle, add this
dependencies {
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
}
And in your Application class, add this line LeakCanary.install(this); in onCreate() method like this
public class ExampleApplication extends Application {
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
follow this link https://github.com/square/leakcanary for more details.
Hope this might be helpful.
This answer is probably too late for you, but it might help others. It is possible to add more projects exposed through gradle in a regular project as jar files.
Gradle is just a build tool. These java libraries that you need a still bunch of jar files at the end of the day. So what I do is the following ...
I have done this to import the whole or sometimes parts of the Google Play library, and many other libraries. In fact, it's a common practice for me.
Now, as Deepscorn mentionned it, I notice that LeakCanary has some res/ folders obviously containing Android resources ... and I badly need to include LeakCanary in Titanium SDK right now. So I am going to proceed the same way, but this time, I will add the resources in the titanium project's resources folder and see what happens.
Resources all end up being included and being available in the entire project. I am not away of scoping in android resources. You just to R... or ...getIdentifier(...) to get them.
You will also need to make sure that AndroidManifest entries are copied to an AndroidManifest file that will be compiled.
I will post my results here if I have time. In the mean time, anyone can give this a try and post some feedback.
What you need is to install gradle, then call "gradle assembleRelease" in library dir of leak canary. If everything goes find, you get several aars files in build/outputs directory. These are android libraries. You should reference them as any other android libraries.
LeakCanary is not just a JAR - it contains not only the java code, but resources too (png's for example). If you are using ANT, then the only thing you can do is to include LeakCanary as a library project. But I strongly recommend switching to gradle. Because android development team is not going to support importing any library which is not just jar in any user-friendly way in the nearest future (because gradle is priority). And importing as library projects is a painful procedure, which get's more painful when it sometimes comes to including library's dependencies also as library projects. I've done it by hand long ago only because the client used eclipse with ant for big project for ages. Generally, you must do the following:
The final step is to enable manifest merger. Add the following line to project.properties of your project:
manifestmerger.enabled=true
It is done to merge all the AndroidManifest.xml from library project into final apk.