在Android、iOS、Web多平台使用AppGallery Connect性能管理服务
性能管理(App Performance Management,简称APM)是华为应用市场AppGallery Connect(简称AGC)质量系列服务中的其中一项,可以提供分钟级应用性能监控能力,支持Android、iOS、Web多个平台,可查看和分析APM收集到的应用性能数据,实时全面掌握应用在线的性能表现,帮助您快速闭环性能问题,持续提升应用的用户体验。
性能管理服务优势
下面我们从总体上看一下,性能管理服务具备哪些优点:
1.跨平台:APM支持Android、iOS、Web多个平台,也支持基于Unity和Cocos引擎开发的游戏应用,使其可以方便用于各种开发场景;
2.易集成:零代码开发,平均集成耗时在5分钟以内;
3.场景化:APM当前支持应用启动、页面加载、页面渲染等多个性能监控场景,而且在场景化基础上,支持应用ANR监控,提供丰富的ANR信息,在线快速解决ANR问题;
4.全流程:与传统工作在开发态、测试态性能分析工具相比,APM贯穿了应用开发、测试、发布的全流程;
APM还具备实时性和可视化的特点,强大的数据分析和可视化系统提供了分钟级的实时监控能力。为了帮助您快速感知用户体验问题,我们细化了应用启动、页面加载、页面渲染、网络请求等场景下的监控指标,比如网络请求监控包含了请求耗时、包大小、状态码等。这些标准的监控场景之外,为了满足您定制化的监控诉求,我们进一步提供了自定义跟踪监控,支持您上报自定义属性和指标,监控应用在自定义场景下的性能。
性能管理服务使用场景
接下来,我们看下APM的使用场景:
1.应用启动耗时场景中提供了按分位值分布,按时间分布,按应用版本分布的启动耗时分析图表,并支持按照版本号、国家地区、手机型号、系统版本等维度的筛选及下钻分析。在应用新版本发布后,我们可以查看应用启动耗时是否有增加或减少的现象。
2.在应用页面渲染也就是我们通常说的页面卡顿场景中,您可以查看各页面的缓慢帧、冻结帧的占比,对于占比比较高的页面,可以按照应用版本、手机型号、系统版本等维度进行下钻分析,识别出卡顿问题的根本原因。
3.在应用网络请求场景下,您可以查看网络请求响应时间、成功率等指标,并按照设备所处的国家地区、网络及运营商信息等维度进行下钻分析,以便快速定位网络请求异常问题。
零代码集成AGC性能管理服务
了解过上述场景后,我们来看看如何在Android平台集成该服务。APM集成步骤非常简单,只需要在开通服务后在代码中集成插件和SDK即可,实现零代码快速集成。
1.创建应用并开通性能管理服务
首先,我们在AGC控制台创建应用并开通APM,创建应用的时候,注意应用的包名要和APK里的包名保持一致。如果是在已有的应用里集成APM,注意包名需要和AGC控制台创建应用时配置的包名保持一致 。创建好项目应用后,或者使用已有的应用,在界面上找到“我的项目-质量-性能管理”,点击立即开通即可。

2.下载和集成json文件
在Android Studio中新建一个Android工程,包名需要和AGC界面上的包名保持一致,然后回到AGC首页,在“我的项目-项目设置-应用”界面下,找到并且将agconnect-services.json文件下载到本地,放到Android工程的app层级目录下。

3.集成APM插件与APM SDK
配置SDK地址,打开Android工程,在项目级build.gradle文件中,配置下面的内容:

打开应用级的build.gradle文件,将APM的SDK添加到您的应用,配置内容如下:

4.配置混淆文件
我们找到应用级的proguard-rules.pro文件(混淆配置文件),添加以下排除项:

集成结束后,点击Android Studio工程右上角的Sync,打包应用放到Android设备上运行,然后就可以在AGC界面上查看APM所采集到的数据与报告。整个集成过程未涉及业务代码的编写,仅通过简单的4项步骤就顺利完成,便捷高效。
APM分析报告提供了性能问题出现瞬间的详细的设备与日志信息、性能数据,实时的监测报告为产品和运营提供了优化方向,同时也解决了性能问题开发难定位、测试难复现的问题,大幅减少了开发、测试工作量。
以上关于性能管理的分享到这里就结束了,了解更多信息,请前往AGC官网参阅性能管理服务,或查看GitHub Demo(APM)、Codelab(Android)、Codelab (iOS)。
还有更多AppGallery Connect服务支持Android、iOS、Web、快应用多个平台,具备跨平台特性,能够集成到Flutter、Cordova和React Native跨平台框架上,基于Unity和Cocos游戏引擎开发的游戏应用也可以集成AGC相关服务。如您有任何疑问,可以通过agconnect@huawei.com与我们联系。
在Android、iOS、Web多平台使用AppGallery Connect性能管理服务的更多相关文章
- DES跨(C# Android IOS)三个平台通用的加解密方法
#region 跨平台加解密(c# 安卓 IOS) // public static string sKey = "12345678"; ...
- 用HTML5/CSS3/JS开发Android/IOS应用框架大全
现在人人都想成为安卓/IOS应用开发工程师.其实,安卓/IOS应用可以用很多种语言来实现.由于我们前端开发工程师,对HTML5/CSS/JavaScript的网络编程已经相当熟悉了.所以,今天大家将会 ...
- HUAWEI AppGallery Connect 正式发布移动端App,随时随地掌握应用动态
华为应用市场AppGallery Connect应用一站式服务平台正式发布移动端App,帮助您随时随地查看应用信息,获取运营分析数据,接收重要消息通知,快速回复用户评论等,提升应用的运营管理效率,更便 ...
- [翻译]Nativescript 中 Web 视图与 Android/IOS 的双向通信
English document From http://shripalsoni.com/blog/nativescript-webview-native-bi-directional-communi ...
- EasyRTMP实现的一套简单、高效、易用的全平台(Windows/Linux/ARM/Android/iOS)RTMP直播推送库
本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/52938980 EasyRTMP介绍 Easy ...
- 移动端跨平台应用开发(ios、Android、web)- Flutter 技术
关键词:Google 出品:Dart语言:Flutter Engine引擎:响应式设计模式:原生渲染:免费并且开源 一.简介 Flutter 是谷歌2018年发布的跨平台移动UI框架.作为谷歌的开源移 ...
- [修复] Firemonkey 画线问题(Android & iOS 平台)
问题:官方 QC 的一个 Firemonkey 移动平台画线问题: RSP-14309: [iOS & Android] Delphi 10.1 Berlin - drawing proble ...
- 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】
背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...
- IOS, Android, Java Web Rest : RSA 加密和解密问题
IOS, Android, Java Web Rest : RSA 加密和解密问题 一对公钥私钥可以使用 OpenSSL创建, 通常 1024位长度够了. 注意: 1. 公钥私钥是BASE64编码的 ...
随机推荐
- C#如何防止程序多次运行的技巧(精典)
一.引言最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,所以这里就记录下来,希望给遇到同样问题的朋友有所参考的,同时也是对自己的一个积累.在介绍具体实现代码之前,我们必须明确解决这个问题的思 ...
- c#(winform)获取本地打印机
引用 using System.Drawing.Printing; //代码 PrintDocument prtdoc = new PrintDocument(); string strDefault ...
- 181. 超过经理收入的员工 + join + MySql
181. 超过经理收入的员工 LeetCode_MySql_181 题目描述 方法一:笛卡尔积 # Write your MySQL query statement below select e1.N ...
- 树莓派4b通过外接ssd硬盘启动系统失败的排查和解决
树莓派4b通过外接ssd硬盘启动系统失败,症状: 屏幕卡在黑屏或提示 mmc1:Controller never released inhibit bit(s).... 先说如何设置硬盘启动,后面是解 ...
- java校招笔试题
基础: Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)? 谈谈对 Java 注解的理解,解决了什么问题? 内部类了解吗?匿名内部类了解吗? BIO和NIO区别,4核cpu,1 ...
- 辨析js遍历对象与数组的方法
1 遍历对象的方法? (1) for-in(也可遍历数组,但效率较低,一般用来遍历对象) 示例: // 生成一个原型上有属性并且有可枚举属性与不可枚举属性的对象 const data = Ob ...
- springboot源码解析-管中窥豹系列之BeanFactoryPostProcessor(十一)
一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...
- Why系列:谨慎使用delete
题外话 这里大家可能要笑了,这不就一个操作符吗,还用单独来讲. 有这时间,还不如去看看react源码,vue源码. 我说:react源码会去看的,但是这个也很重要. delete你了解多少 这里提几个 ...
- 自己挖的坑自己填--Mybatis mapper文件if标签中number类型及String类型的坑
1.现象描述 (1)使用 Mybatis 在进行数据更新时,大部分时候update语句都需要通过动态SQL进行拼接.在其中,if标签中经常会有 xxx !='' 这种判断,若 number 类型的字段 ...
- python爬虫加定时任务,制作微信提醒备忘录
一.任务的记录与提取 1.1 制作每日任务 为了便于爬取,推荐使用网页版的在线记事本,现在这种工具很多,我选择"石墨文档"进行操作演示.记录内容的 格式可以根据自己的需求和爬虫自行 ...