Android 2分钟实现全埋点 Aspect A

作者: 鹏城十八少 | 来源:发表于2021-03-15 11:16 被阅读0次

笔者是面霸,面试200+场       当过考官:面过别人300+场     去过500强,也呆过初创公司。

关注我就能达到大师级水平,这话我终于敢说了, 年薪60万不是梦!

斩获腾讯、华为、oppo,VIVO,安卓岗offer!我有一套速通大厂技巧分享给你!

AOP介绍

Aspect Oriented Programming , 面向切面编程,优点如下。

(1)针对同一类问题的统一处理

(2)无侵入添加代码

  (3) 运行在,,,,,,,但是注解在编译期间

1)在项目gradle中添加依赖

classpath'com.android.tools.build:gradle:3.6.2'

classpath'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10'

2) 在app gradle中添加配置

applyplugin:'android-aspectjx'

aspectjx{

    //排除所有package路径中包含`android.support`的class文件及库(jar文件)

    exclude'android.support'

}

3).类注解,方法注解,正则表达式。不要写错正则表达式

@Aspect

public class PerformanceAop {

@Around("call(* com.test.WorkManger.**(..))")

public void getTime(ProceedingJoinPoint joinPoint) {

Signature signature = joinPoint.getSignature();

        String name = signature.toShortString();

        long time = System.currentTimeMillis();

        try {

joinPoint.proceed();

        }catch (Throwable throwable) {

throwable.printStackTrace();

        }

Log.i("PerformanceAop", name +" cost " + (System.currentTimeMillis() - time));

    }

}

public class WorkManger {

public void start(){

try {

Thread.sleep(2000);

        }catch (InterruptedException e) {

e.printStackTrace();

        }

}

}

2021-03-14 16:12:27.604 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2000

2021-03-14 16:12:29.618 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2003

2021-03-14 16:12:31.630 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2001

2021-03-14 16:12:33.633 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2002

2021-03-14 16:12:35.637 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2001

2021-03-14 16:12:37.643 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2002

2021-03-14 16:12:39.647 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2001

2021-03-14 16:12:41.651 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2001

2021-03-14 16:12:43.665 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2002

2021-03-14 16:12:45.669 18965-18965/com.test I/PerformanceAop: WorkManger.start() cost 2001

现在实行:某个类里面的方法耗时都可以抓到。如何把app里面的所有都抓到?

通过正则表达式。

列子二:在方法前增加一些

@Aspect

public class AspectjxMine {

@Pointcut("execution(* com.test.MainActivity.clickMe(..))")

public void callMethod() {

}

@Around("callMethod()")//

    public void beforeMethodCall(ProceedingJoinPoint joinPoint) {

try {

Log.i("AspectjxMine", "callMethod before  ");

            joinPoint.proceed();

            Log.i("AspectjxMine", "callMethod after  ");

        }catch (Throwable throwable) {

throwable.printStackTrace();

        }

}

}

demo地址;

demo地址;https://github.com/pengcaihua123456/shennandadao/tree/master/AspectJx

总结:

1.配置可能会有问题

2.加入,打点写错了,编译都编译不过去的。

3.总是要删除.gradle文件缓存

集成的时候总是报各种错误。mmd

我的Android Studio 版本 3.6.2,如果代码不生效很有可能是Android Studio版本和aspectjx版本不兼容的问题

理解:提取公共的方法。

优点:解耦

举例:

实际生活中的例子:

优点:

(1)代码无侵入性,

(2)方便修改;

有demo

https://blog.csdn.net/LosingCarryJie/article/details/106195627

耗时打印:(有问题)

https://zhuanlan.zhihu.com/p/102627869

https://blog.csdn.net/BunnyCoffer/article/details/108102916

无痕埋点:

登入理解:

https://www.cnblogs.com/ganchuanpu/p/8594877.html

https://www.jianshu.com/p/e737c187e0c2

AOP得应用

1.耗时

2.埋点

3.登入

4.权限,方便的Android M动态权限配置框架

相关文章

  • Android 2分钟实现全埋点 Aspect A

    笔者是面霸,面试200+场 当过考官:面过别人300+场 去过500强,也呆过初创公司。 关注我就能达到大师...

  • android接入AspectJ记录

    参考 AspectJ在Android埋点的实践 Aspect Oriented Programming in An...

  • Android全埋点

    什么是全埋点? 也叫做无埋点,预先收集用户的所有行为数据,然后根据实际需求,从中提取行为数据。 采集数据的点: $...

  • Flutter aspectd (四) 全埋点实现

    简述 aspectd的简单原理清楚了,下面尝试实现一下全埋点,参考大佬文章:Flutter之全埋点思考与实现[ht...

  • Android 全埋点概述

    全埋点是指无需写代码或者只写少量的代码,就能预先自动收集用户的所有行为数据,然后再根据实际的业务需求进行筛选和分析...

  • Android全埋点方案调研

    1 行业内全埋点技术方案调研 调研文章链接: 网易云音乐Android 自动埋点实践 网易HubbleData之A...

  • android 埋点实现方案

    第一次听到埋点这名词的时候,是在三年前,刚进某会时。 随后一直接触相关埋点需求的开发,然而,却一直没有好好的研究过...

  • 大厂Android端可视化埋点的实现

    Android端可视化埋点的实现 ***导语 ***客户端埋点是数据收集的最基本手段,对于一款APP来说,代码埋点...

  • Android 全埋点解决方案(一)

    一、埋点方案总结AppEnd 全埋点方案 AppClick全埋点方案1: 代理View.OnclickListen...

  • Android AOP之Aspect-动态权限申请

    PermissionJ 使用Aspect实现的面向切面进行Android动态权限申请Github[https://...

网友评论

    本文标题:Android 2分钟实现全埋点 Aspect A

    本文链接:https://www.haomeiwen.com/subject/xmfkcltx.html