博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何通过 AAR 形式集成 leakcanary-android 服务
阅读量:4966 次
发布时间:2019-06-12

本文共 1784 字,大约阅读时间需要 5 分钟。

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

leakcanary-android 官网: 

如何通过在线引用的方式拿到所有相关的依赖项文件?

#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

通过文本工具打开 *.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 模式类结构图:

debug 模式类结构图:

转载于:https://www.cnblogs.com/AsionTang/p/8992330.html

你可能感兴趣的文章
Minimum Inversion Number
查看>>
s7day2
查看>>
[LeetCode] 146. LRU Cache_Hard tag: Hash, Linked List
查看>>
【CSON原创】javascript椭圆旋转相册发布
查看>>
nginx的安装 傻瓜式
查看>>
MySQL 5.7开启二进制日志注意事项
查看>>
SQL Server中通用数据库角色权限处理
查看>>
Alpha 冲刺 (9/10)
查看>>
Oracle数据库之序列
查看>>
输入任意IP,将IP转化为minion-IP格式(saltstack)
查看>>
SQL查询-约束-多表
查看>>
谷歌的黑客梦之队
查看>>
JVM GC Roots
查看>>
2.4 传输控制协议(TCP)
查看>>
golang-build-error
查看>>
Docker使用docker-compose.yml构建Asp.Net Core和Mysql镜像并与Mysql数据库通信
查看>>
pause 和 title
查看>>
向值栈放List集合
查看>>
Spring AOP开发
查看>>
CentOS Docker环境搭建教程
查看>>