跳到主要内容

工作原理

Android SDK工作原理

悟空SDK通过编译时的字节码技术或运行时的hook技术,在应用代码中植入性能监测代码,来实时采集性能数据,该过程并不影响用户代码逻辑。

每当App运行时,悟空SDK会在应用运行过程中,实时采集数据,并按照一定的时间间隔(默认为60秒)来上报数据,交由服务器数据处理端进行数据分析处理,在平台报表中展现。

应用切换到后台(30s)或退出时, 悟空SDK会停止数据采集和上报,以便减少不必要的流量消耗。

iOS SDK工作原理

利用objective-c的runtime特性,通过Method Swizzle技术,可以实现在运行时替换selector对应的方法实现,达到给方法挂钩的目的。即嵌入悟空SDK后,在应用程序启动之初,悟空SDK会对相应的方法执行Swizzle操作,从而在调用一个被Swizzle过后的函数时,将会首先调用SDK相应的自定义函数,在SDK的函数中会执行一些数据采集的操作,然后SDK的函数会再调回原函数的实现,不会影响原应用程序逻辑。

HarmonyOS NEXT SDK工作原理

嵌码方式: HarmonyOS NEXT SDK采用非侵入式嵌码策略,利用HarmonyOS提供的系统特性和开发框架,实现对应用性能的监控。SDK在应用编译和运行时均不修改用户的业务代码,确保监控过程的透明性和用户代码的完整性。

采集方式:

  • 事件订阅机制:SDK启动后,通过HarmonyOS的事件订阅机制,注册监听应用程序生命周期、用户界面渲染、系统资源使用等关键性能指标。

  • 异常监控:利用系统API监控应用崩溃和卡顿事件,一旦检测到异常,SDK将捕获相关的堆栈信息和上下文数据,为后续分析提供依据。

  • 网络请求监控:通过在应用的网络请求库中注册拦截器,SDK能够在不修改应用代码的前提下,捕获网络请求的发起、执行和响应过程,实现对网络性能的监控。

  • API封装:对于关键的系统调用和第三方服务请求,SDK通过封装API的方式,插入监控逻辑,确保数据采集的全面性和准确性。

上传方式:

  • 数据缓存:采集到的性能数据首先在本地进行缓存,以减少对应用运行时性能的影响。
  • 智能上报策略:SDK根据网络状况和应用使用场景,采用智能上报策略,选择最佳的上报时机和频率,确保数据的实时性和完整性。
  • 数据加密:在数据上传过程中,SDK使用行业标准的加密算法(国密),保证数据传输的安全性和用户隐私的保护。
  • 服务器端处理:上传至服务器后,数据将由专业的数据处理系统进行分析和处理,最终在监控平台以图表和报告的形式展现给用户。

HarmonyOS NEXT SDK以其高效、安全、非侵入的特点,为HarmonyOS应用提供了全面的性能监控解决方案。我们致力于为开发人员提供最优质的工具,帮助他们深入理解应用性能,优化用户体验。

上报数据处理

  • 网络数据:通过 Hook网络协议类库(OkHttp、NSURLSession等)实时抓取用户App中进行的网络访问请求(Http与Https标准协议),监控网络访问中发生的Http错误(40X或50X)和网络错误(请求超时、未知主机等),并且以一分钟一次的频率进行数据上传,在尽量减小资源消耗的情况下保证了数据的实时性和准确性。

  • 崩溃数据采集:通过设置 handler来采集崩溃数据,当应用发生Crash以后,SDK会立马采集崩溃堆栈信息、用户交互轨迹、用户上下文信息和用户自定义附加信息,等待应用下次启动时上报服务器,通过报表可以查看到崩溃信息。如遇到数据上传失败(网络中断),崩溃数据则会做缓存处理,直到下次初始化后再上传服务器。

  • 卡顿数据采集:通过监控系统消息事件来采集卡顿数据,当主线程不能正常的接受消息并处理时,则可以认为主线程此时处于卡顿状态。这时采集卡顿过程中的堆栈信息、用户交互轨迹、卡顿过程中的请求数据、用户上下文信息和用户自定义附加信息后立即上报服务器,两到三分钟后即可在报表查看到卡顿信息。如遇到数据上传失败(网络中断),卡顿数据则会做缓存处理,直到下次初始化后再上传服务器。

  • 用户体验数据采集:通过监控原生应用系统接口来采集应用启动、页面加载及用户操作的数据,当用户在使用过程中发生「缓慢事件」(慢启动、慢可交互及慢操作)时,无需人工插码即可提供详细的代码调用瀑布图及用户上下文信息,快速协助研发人员定位性能问题,优化用户体验。