LeakCanary

LeakCanary是一个检测Android app内存泄漏的工具,
官方github:https://github.com/square/leakcanary
这个工具默认的使用方式,需要用gradle来进行build, 但是我们很多app都不能在Andoid studio里build,
因此我研究了一种能在源代码里build的办法.
这个办法需要借助其他开发者贡献的一个lib:http://lynn8570.github.io/media/DisplayLeak.rar
下载这个压缩包, 并解压到packages/apps/ 下,在DisplayLeak
的Android.mk中,需要注释掉第一行和最后一行,否则被测试的APK编不过.

导入LeakCanary
Android.mk中加入:

leak_dir:= ../DisplayLeak
   res_dirs:= res $(leak_dir)/res
   LOCAL_AAPT_FLAGS:= \
--auto-add-overlay \
--extra-packages com.squareup.leakcanary

应用 Application 类oncreate中加入

private RefWatcher refWatcher;
        @Override
        public void onCreate() {
            super.onCreate();
            refWatcher = LeakCanary.install(this);
        }

AndroidManifest里需要注册:

    <application
        android:allowTaskReparenting="true"
        android:name="com.android.TestApplication"

       <service
            android:name="com.squareup.leakcanary.internal.HeapAnalyzerService"
            android:enabled="false"
            android:process=":leakcanary" />
        <service
            android:name="com.squareup.leakcanary.internal.DisplayLeakService"
            android:enabled="false" />
        <activity
            android:name="com.squareup.leakcanary.internal.DisplayLeakActivity"
            android:enabled="true"
            android:icon="@drawable/__leak_canary_icon"
            android:label="@string/__leak_canary_display_activity_label"
            android:taskAffinity="com.squareup.leakcanary"
            android:theme="@style/__LeakCanary.Base" >
        </activity>

Make Test, push到手机, 运行.
如果检测到内存泄漏, 会在系统通知栏里显示通知, 并且能在Logcat中查看到leak trace.

关于leaktrace的分析以及上传到服务器等功能的研究,请参考:
https://www.liaohuqiu.net/cn/posts/leak-canary-read-me/
http://lynn8570.weebly.com/blogit/leakcanary

相关ticket及解决方法参考链接:
http://blog.csdn.net/xiabing082/article/details/53993298

其他类型内存泄漏错误参考:
http://blog.csdn.net/picasso_l/article/details/49279827
http://blog.csdn.net/xiabing082/article/details/53993093
http://blog.csdn.net/kamidox/article/details/45676469

需要特别说明的是, 目前, Leakcanary的backend已经从MAT换成了Haha , 但是我找来的库还是基于MAT的, 如果大家有能力, 希望能更新成基于最新版Leakcanary源码的库, 谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值