EasyCanary

EasyCanary是一个旨在简化内存泄漏和卡顿检测的Android开源项目,它是LeakCanary和BlockCanary的结合体。作者通过阅读并理解两个项目的源码,实现了两者的融合,减少了不必要的组件。在融合过程中,遇到了依赖冲突的问题,通过分析依赖树并调整Gradle配置成功解决。项目已在GitHub上开源,欢迎贡献和使用。

EasyCanary的诞生

github链接的地址:

https://github.com/yuboxiao/EasyCanary   欢迎star 欢迎fork !!!

目前已经读完了LeakCanary + blockCanary源码,想基于这两个解决内存+卡顿的神器做一个简单化的定制,目前能想到的第一个事情就是先把这两个工程做一个融合并且裁减;

 

1、EasyCanary的融合

先将LeakCanary的代码融合进来

a、内存泄露的检测时机

ActivityRefWatch & FragmentRefWatch    --->代码已经编写完毕

 

附录

1、过程中遇到的问题

Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.0.0-beta1) and test app (27.1.1) differ

解决方案:

在as 中输入gradlew app:dependencies

查看app模块的依赖树

在debugAndroidTest的构建依赖中可以看到

com.android.support:support-annotations:26.0.0-beta1 -> 27.1.1

这里的依赖冲突了 删除了leackCanary、log模块中的appcompat-v7:26.0.0-beta1,问题解决!


debugAndroidTestRuntimeClasspath - Resolved configuration for runtime for variant: debugAndroidTest
+--- com.android.support.test:runner:1.0.2
|    +--- com.android.support:support-annotations:27.1.1
|    +--- com.android.support.test:monitor:1.0.2
|    |    \--- com.android.support:support-annotations:27.1.1
|    +--- junit:junit:4.12
|    |    \--- org.hamcrest:hamcrest-core:1.3
|    \--- net.sf.kxml:kxml2:2.3.0
+--- com.android.support.test.espresso:espresso-core:3.0.2
|    +--- com.android.support.test:runner:1.0.2 (*)
|    +--- com.android.support.test.espresso:espresso-idling-resource:3.0.2
|    +--- com.squareup:javawriter:2.1.1
|    +--- javax.inject:javax.inject:1
|    +--- org.hamcrest:hamcrest-library:1.3
|    |    \--- org.hamcrest:hamcrest-core:1.3
|    +--- org.hamcrest:hamcrest-integration:1.3
|    |    \--- org.hamcrest:hamcrest-library:1.3 (*)
|    \--- com.google.code.findbugs:jsr305:2.0.1
+--- com.android.support.constraint:constraint-layout:1.0.2
|    \--- com.android.support.constraint:constraint-layout-solver:1.0.2
+--- project :leakcanary
|    \--- com.android.support:appcompat-v7:26.0.0-beta1
|         +--- com.android.support:support-annotations:26.0.0-beta1 -> 27.1.1
|         +--- com.android.support:support-v4:26.0.0-beta1
|         |    +--- com.android.support:support-compat:26.0.0-beta1
|         |    |    \--- com.android.support:support-annotations:26.0.0-beta1 -> 27.1.1
|         |    +--- com.android.support:support-media-compat:26.0.0-beta1
|         |    |    +--- com.android.support:support-annotations:26.0.0-beta1 -> 27.1.1
|         |    |    \--- com.android.support:support-compat:26.0.0-beta1 (*)
|         |    +--- com.android.support:support-core-utils:26.0.0-beta1
|         |    |    +--- com.android.support:support-annotations:26.0.0-beta1 -> 27.1.1
|         |    |    \--- com.android.support:support-compat:26.0.0-beta1 (*)
|         |    +--- com.android.support:support-core-ui:26.0.0-beta1
|         |    |    +--- com.android.support:support-annotations:26.0.0-beta1 -> 27.1.1
|         |    |    \--- com.android.support:support-compat:26.0.0-beta1 (*)
|         |    \--- com.android.support:support-fragment:26.0.0-beta1
|         |         +--- com.android.support:support-compat:26.0.0-beta1 (*)
|         |         +--- com.android.support:support-core-ui:26.0.0-beta1 (*)
|         |         \--- com.android.support:support-core-utils:26.0.0-beta1 (*)
|         +--- com.android.support:support-vector-drawable:26.0.0-beta1
|         |    +--- com.android.support:support-annotations:26.0.0-beta1 -> 27.1.1
|         |    \--- com.android.support:support-compat:26.0.0-beta1 (*)
|         \--- com.android.support:animated-vector-drawable:26.0.0-beta1
|              +--- com.android.support:support-vector-drawable:26.0.0-beta1 (*)
|              \--- com.android.support:support-core-ui:26.0.0-beta1 (*)
\--- project :log
     \--- com.android.support:appcompat-v7:26.0.0-beta1 (*)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值