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

2108

被折叠的 条评论
为什么被折叠?



