博客地址: dim.red
项目开源: DynamicLog
背景
当线上问题出现的时候. 往往需要之前的埋点进行问题定位. 但是埋点个数是有限的. 现有的埋点往往不够排查出具体的问题. 所以我们需要一个更灵活的埋点方案. 要求是可以动态的输出任何方法的入参和出参.
博客地址: dim.red
项目开源: DynamicLog
当线上问题出现的时候. 往往需要之前的埋点进行问题定位. 但是埋点个数是有限的. 现有的埋点往往不够排查出具体的问题. 所以我们需要一个更灵活的埋点方案. 要求是可以动态的输出任何方法的入参和出参.
市面上的插件化,已经百花齐放,趋于完善。
主流的开源框架主要的代表有 Alibaba 的 Atlas , 360 的 Replugin 和 DIDI 的 VirtualAPK 。
实现插件化的技术难点
因为 Gradle 的依赖发生冲突的时候, 会解决冲突, 默认是使用最高的版本, 但是也会因为 force 字段的关系选择较低的版本, 我们往往需要知道打到APK里面依赖的具体版本.
代码片段
dim.red
环境: gradle 4.1 , Android Plugin 2.3.0 , Android Plugin 3.0.0
#0x00 背景
去年的时候写个 Android Plugin Transform 初探 . 现在我们接着之前的脚步来学习 Gradle 下的 Transform . 同时熟悉一下 Android Plugin 在该规则下的应用.
在脚本录制回放过程中, 我们需要获取 View Hierarchy 的意图有三个.
#背景
android 的中设置监听有两种.