Android APM性能监控 无埋点实现

本文深入探讨了APM(应用程序性能管理)在监控应用性能、业务可靠性和用户行为方面的作用,涵盖系统指标、应用性能、Crash监测、自定义日志、用户属性分析等内容。通过Java层功能实现,如业务数据链路化、内存/CPU/FPS指标监测、ANR日志捕捉、电量监控等,以及技术手段如AOP、ASM字节码操作和动态执行能力,提升应用质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据的价值

APM

  目标

  对应用的性能、业务可靠性进行线上的监控和预警

  采集内容

  系统指标,应用性能指标,Crash,自定义日志等

用户行为 

   目标

   精细化运营

   采集内容

    从用户属性——性别、地域、收入、家庭状况 

    从用户生命周期——注册、活跃、流失

    从用户行为——功能、内容、产品的喜好等

技术手段

Java层实现功能

1.自定义业务数据链路化

2.内存指标

3.CPU指标

4.FPS 指标

5.ANR日志

6.卡顿检测

7.GC日志

8.Crash日志

9.Http指标数据(暂时只支持OkHttp)

10.电量指标

11.MAOP,使用注解和配置文件AOP指定方法执行前,执行后,异常插入指定代码的功能(项目也实现动态日志功能,但是好像没有很好的使用场景)

12.Remote下发命令,执行shell和动态执行代码功能

13.交互分析:分析Activity生命周期耗时

概述

因为涉及的知识点太多,受篇幅限制,此篇就只列出关键的知识点和步骤,具体知识点会列出参考的链接或者书籍,相信这些作者都讲的很详细和通透。

Android AOP

在Android编译过程中,使用自定义的gradle插件,注册新的tranform任务,在java compile之后,修改编译后class文件的内容,在切入点增加相应的代码来实现AOP,实现无埋点功能。

Android的编译流程

 

Gradle

Transform API

Android Gradle 工具在 1.5.0 版本后提供了 Transfrom API, 允许第三方 Plugin 在打包 dex 文件之前的编译过程中操作 .class 文件。目前 jarMerge、proguard、multi-dex、Instant-Run 都已经换成 Transform 实现,我们注册自己的transform实现对class文件的修改

Transform具体的详解

需要注意的是App Module依赖的library Module都是以jar的形式存在的,处理jar包时需要通过jarInput.getName()来判断是否是":xx"形式开头的jar,这部分jar包需要当成目录代码来访问。

自定义Gradle插件

自定义Gradle Plugin使用的是Groovy语言,需要对groovy有一定的了解,着重了解它的闭包概念,和各种省略写法规则。

深入理解Android之Gradle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值