如何通过 AAR 形式集成 leakcanary-android 服务

努力尽今夕,少年犹可夸。这篇文章主要讲述如何通过 AAR 形式集成 leakcanary-android 服务相关的知识,希望能为你提供帮助。

  • 如何通过 AAR 形式集成 leakcanary-android 服务
    • 如何通过在线引用的方式拿到所有相关的依赖项文件?
      • #1.禁用 Gradle 离线模式
      • #2.按照文档要求添加项目依赖
      • #3.Sync同步后会在线解析并缓存所有相关依赖项
      • #4.从依赖项缓存所在目录里找到 *.pom 文件分析其子依赖项
      • #5.将所有依赖项复制出来.
      • #6.改造 .aar 依赖项文件
      • #7.修改原在线形式的项目依赖为AAR形式的依赖
      • #8.启用 Gradle离线模式即可正常使用了.
    • 如何改造 Release 依赖项 .aar 文件 将仅在Release模式才使用的JAR类库文件集成到一块?
      • 改造前:leakcanary-android-1.5.4.aar > libs 为空
      • 改造后:将其所有依赖的JAR包添加到 `leakcanary-android-1.5.4.aar > libs` 目录里.
      • 结果验证
如何通过 AAR 形式集成 leakcanary-android 服务leakcanary-android 官网:  square/leakcanary: A memory leak detection library for Android and Java.
如何通过在线引用的方式拿到所有相关的依赖项文件?
#1.禁用 Gradle 离线模式 #2.按照文档要求添加项目依赖
In your build.gradle:

dependencies {
debugImplementation \'com.squareup.leakcanary:leakcanary-android:1.5.4\'
releaseImplementation \'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4\'
}

#3.Sync同步后会在线解析并缓存所有相关依赖项 #4.从依赖项缓存所在目录里找到 *.pom 文件分析其子依赖项Windows系统缓存一般所在路径:
  • .gradle\\caches\\modules-2\\files-2.1\\com.squareup.leakcanary\\leakcanary-android\\1.5.4
  • .gradle\\caches\\modules-2\\files-2.1\\com.squareup.leakcanary\\leakcanary-android-no-op\\1.5.4
子目录里一般存在以下几种类型的文件: *-sources.jar,  .aar或.jar, *.pom
【如何通过 AAR 形式集成 leakcanary-android 服务】通过文本工具打开 *.pom 文件,可见是XML格式的文本,寻找到以下节点数据即可获知其子依赖项信息:
project - dependencies - dependency - artifactId
#5.将所有依赖项复制出来.将缓存里的所有*.aar或*.jar格式的文件依赖项都复制出来.并放入指定的flatDir目录中(如libs目录里.)
#6.改造 .aar 依赖项文件将仅在Release模式才使用的JAR类库文件集成到一块
#7.修改原在线形式的项目依赖为AAR形式的依赖
debugImplementation(name: \'leakcanary-android-1.5.4\', ext: \'aar\')
releaseImplementation(name: \'leakcanary-android-no-op-1.5.4\', ext: \'aar\')

注意AAR形式的依赖需要在build.gradle里增加以下设置:
repositories {
flatDir {
dirs \'libs\'
}
}

#8.启用 Gradle离线模式即可正常使用了. 如何改造 Release 依赖项 .aar 文件 将仅在Release模式才使用的JAR类库文件集成到一块?
最终目的为:
  1. 保证在  debug  运行模式能正常使用leakcanary-android的功能,
  2. 保证在  Release发布模式时不额外添加任何多余的代码和资源(只增加no-op类保证编译不报错即可)
改造前:leakcanary-android-1.5.4.aar > libs 为空 改造后:将其所有依赖的JAR包添加到  leakcanary-android-1.5.4.aar > libs  目录里.leakcanary-android依赖项本来就是JAR的有:
  1. leakcanary-watcher-1.5.4.jar
  2. haha-2.0.3.jar
部分依赖项是AAR的需要提取出JAR文件:
  1. leakcanary-analyzer-1.5.4.aar
将其解压后,提取出  classes.jar  改一下名字leakcanary-analyzer-1.5.4.jar以便区分.
最终leakcanary-android-1.5.4.aar > libs  目录里有以下文件:
  1. leakcanary-watcher-1.5.4.jar
  2. haha-2.0.3.jar
  3. leakcanary-analyzer-1.5.4.jar
结果验证Release 模式类结构图:
如何通过 AAR 形式集成 leakcanary-android 服务

文章图片

debug 模式类结构图:
如何通过 AAR 形式集成 leakcanary-android 服务

文章图片


    推荐阅读