Parfait SDK是APMPlus PC监控平台的官方SDK,提供跨平台C++ API,是动态库,可监控应用线上稳定性问题。
PC 端 SDK 目前仅限中国大陆应用使用。
- 支持平台:Windows(32/64)、macOS(x86_64/arm64)
说明
- 所有的业务都能接入MT,MD只有VS2019的业务方能接入。
- MD支持监控更多的崩溃类型,如果可以建议优先选择接入MD。
- 支持功能:PV/UV统计、埋点、Alog日志、Crash监控、自定义文件上报
- 产物形式:mac为Framework动态库,Windows为/MT和 /MD(VS2019)动态库
Native App 指的是使用C/C++开发的应用,Native App 可跳过此步骤,直接开始接入 SDK。
Non-Native App 指的是使用非C/C++语言开发的应用,使用 Electron 框架开发的应用皆属于此类。Parfait 提供了 C++ Public API,用户需要通过桥接的方式接入 Parfait 的能力。即:
APP JS/C#/GO/... -> C Wrapper -> Parfait C++ API
为了更好支持用户接入SDK,Parfait提供了C Wrapper Demo,封装了主要功能,如初始化、崩溃监控、自定义事件、自定义日志、Alog日志和自定义文件上传功能,供业务接入参考。但因为用户诉求不尽相同,后续需要业务自行维护Wrapper。以下是如何编译Wrapper的步骤:
- 下载并解压parfait_c_wrapper.zip。parfait_wrapper.cpp中封装了对Parfait C++ API的调用。
- 阅读下文的接入SDK和接入能力,按需要修改parfait_wrapper.cpp代码,并确保暴露了C API到parfait_wrapper.h中。
说明
mac产物为output目录下的libparfait_wrapper.dylib,win产物为output/Release目录下的parfait_wrapper.dll。
- App同时链接wrapper库和Parfait SDK。
- App通过调用wrapper库封装的C API去接入Parfait SDK的能力。
注意
- 如果需要新增功能或者可更改的参数,直接修改parfait_wrapper.h和parfait_wrapper.cpp,再执行一次编译命令。
- 如果仅需要升级SDK版本,不需要更改接口,可以将SDK二进制直接替换为最新版本,不需要重新编译,Parfait SDK ABI兼容。
Native app链接parfait sdk即可。Non-Native app需要同时链接parfait_wrapper sdk和parfait sdk。
Windows下建议sdk存放在和app的同级目录中,以免app找不到对应sdk。
Windows和Mac共用同一套头文件,添加头文件依赖。
- 接入初期可以先打开调试模式,Parfait debug log会输出在控制台。上线后请务必关闭调试模式。
- Wrapper代表一个Parfait实例,初始化之后才能接入功能。一般情况下,持有一个单例wrapper指针即可。
- 创建Global Env builder,填写参数;初始化Global Env;销毁Global Env builder。
- 单进程内同aid下的所有wrapper共享Global Env中的参数。
- 设置Wrapper所需Instance Env。
- 创建Instance Env builder,填写参数;初始化Instance Env;销毁Instance Env builder。
- Instance Env是每个Wrapper独有的参数。
- 对应APMPlus上的PV/UV统计大盘展示,同时用于计算崩溃的影响用户率、影响用户数。注意,PV指的是Process View,进程的启动次数;UV指的是Unique Vistor,访问用户数。
- 初始化Parfait后,即可进行PV和UV的统计与上报。
- 调用后Parfait会依据全局环境变量的report_interval值开始间隔循环上报自定义日志/自定义事件/网络监控/性能监控数据。
注意
- 本接口仅需要在初始化后调用一次。之后除非退出SDK,不然间隔上报不会停止。
- 如使用了性能监控功能,或写入了大量的自定义日志/自定义事件,那一定要调用这个接口,防止数据堆积在本地。
您可以根据业务需求,按照以下操作接入使用这些功能。
绝大部分情况下,一个wrapper以满足单进程所有需求。如多进程需要接入,可选择任选一个方案:
- 主进程再初始化一个用于代表子进程的wrapper。主进程和子进程通过IPC通信,传递数据。主进程往wrapper里面写数据。
调用此接口后,所有Parfait实例都会销毁。调用后默认中断所有上传任务。
如果需要停止Parfait所有功能并回收内存,可以直接调用:
注意
- 此操作可能会发生短暂阻塞,因为回收操作涉及到多线程任务执行等待的操作。假设回收时Parfait里面还有任务在异步执行,delete操作会等待所有异步任务执行完才会回收完所有的内存。
- 不建议SDK接入方调用该函数,因为同一进程内的其他业务也可能接入Parfait。