ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【AGC】质量服务1 —— 崩溃服务示例

2022-04-26 14:35:22  阅读:172  来源: 互联网

标签:服务 getInstance 示例 AGConnectCrash AGC 点击 应用 崩溃


前言:

上一次我们给大家带来了AGC领域的开放式测试的学习。这次我们再继续深化学习AGC的相关知识。在文章开始之前,再给读者讲解一下,所谓AGC就是AppGallery Connect的简称,为用户的应用进行创意、开发、分发、运营、经营各环节提供一站式服务,说的通俗一点,就是给用户在华为应用市场上架运营应用提供全面的服务。

全部的AGC相关的知识分为两大类,一大类即上架相关,这个可以参考链接:https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-help-overview-0000001100246618。里面提供了像是应用测试、应用发布、应用管理、应用维护等应用市场相关的内容。另一大类则是为开发者提供了各种帮助Kit,这个可以参考链接:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-introduction-0000001057492641。里面提供了像是云存储、A/B测试、质量分析、华为云等Kit,为开发者提供额外的帮助,辅助开发者更好的完成应用上架、提高应用质量、增加用户粘性等。

由于AGC全部的内容太多了,所以每一次的学习我们尽量讲其中一点,讲的详细一点,当然也会看情况,如果有些章节的内容较少也会包含在一起讲。这一次我们来学习质量服务的崩溃服务的功能。这个功能是一个功能强大、轻量级的崩溃解决方案。它能帮助您快速发现、定位、解决应用崩溃(又称闪退)问题,其使用非常简便,无需开发任何代码即可实现可视化数据报告的实时查看。

确保应用稳定运行,避免崩溃给用户带来的糟糕体验,最关键的是能检测到应用在每个设备上的运行状态。崩溃服务提供实时数据报告,让您不错过任何一个崩溃问题。同时,崩溃服务能够智能汇聚崩溃问题,提供每个问题发生时的环境信息、堆栈等分析数据,让您轻松识别问题优先级,快速解决问题。

崩溃服务的主要功能有:1、可视化实时报告,无需编写任何代码,即可自动生成包含堆栈及其他相关信息的可视化数据报告,快速解决崩溃问题。2、可自定义报告,除自动生成的报告内容外,还提供了用户标识符、日志和键值对三种机制增强报告,解决崩溃问题更快速、准确。3、智能分类,大量崩溃会按照异常类型、代码位置自动分类,可以根据对用户的影响程度对崩溃进行排序,确定优先级别。4、实时监测和提醒,分钟级实时报告可以实时跟踪应用稳定性。同时,当发生重大崩溃时,系统也会及时提醒。5、支持NDK崩溃,如果应用中包含原生库,只需要增加崩溃SDK中的NDK包,即可监测原生库中发生的崩溃,对游戏类应用非常有帮助。6、支持跨平台,支持Android、iOS平台,并提供Flutter、Cordova、React Native、Ionic在内的常用跨平台框架插件,简化集成。

崩溃服务的工作原理是在应用中集成崩溃服务SDK后,它会在应用启动后自动初始化,当应用发生崩溃时,SDK会将崩溃相关信息上报到华为分析服务,5分钟左右就可以生成可视化报告,帮助快速发现、定位、解决问题。

cke_18669.png

AGC崩溃服务实现的流程是1、集成SDK,崩溃服务依赖崩溃服务SDK,在实现崩溃服务前先集成崩溃服务SDK到应用。2、测试崩溃实现,在测试阶段可以手工制造一个崩溃,测试崩溃服务SDK能否上报崩溃数据。3、分析崩溃问题,应用集成崩溃服务SDK后可以在应用崩溃时自动上报崩溃数据到AppGallery Connect,可以根据具体的崩溃信息分析崩溃问题原因。

接下来就跟着笔者的脚步来完成一个简单应用的崩溃服务。因为此处只是演示用,所以部分内容进行了简化,并且笔者这里只用了Android作为演示,崩溃服务还可以支持IOS和鸿蒙,读者可以自行探索。

1. 集成SDK。

1)在AGC网站的我的项目中选择需要启用崩溃服务的应用,点击质量->崩溃,进入崩溃服务页面,启动分析服务。

cke_34226.png

2)添加Maven库以及插件,在Android Studio项目级build.gradle文件中添加相应规则,包含HUAWEI agcp插件以及Maven代码库。

cke_47359.png

3)在应用级build.gradle文件中,在文件顶部追加一行内容,同步工程,完成AGC应用集成准备工作

cke_59723.png

4)登录AGC网站,点击我的项目,在项目设置的应用栏下,下载配置文件"agconnect-services.json"。将配置文件复制到应用级根目录下。

cke_73752.png

 

cke_86982.png

5)打开Android Studio应用级build.gradle文件,添加如下代码集成Analytics Kit和Crash SDK。其中这里的分析kit也可以不集成,只集成agccore就能包含分析kit。

cke_99437.png

2. 测试崩溃实现。

1)界面设计,创建一个布局页面,新增三个Button。一个按钮点击后可触发崩溃事件,一个按钮点击后可以触发上报异常事件,一个按钮用来触发自定义报告。在应用Activity布局文件中创建三个Button,描述分别为"makeCrash"、 "CustomReport"和"makeException"。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:gravity="center"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">
        
        <TextView
            android:id="@+id/tv_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="一个炫酷的APP!"/>

        <Button
            android:id="@+id/bt_1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAllCaps="false"
            android:text="makeCrash"/>

        <Button
            android:id="@+id/bt_2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAllCaps="false"
            android:text="makeException"/>

        <Button
            android:id="@+id/bt_3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAllCaps="false"
            android:text="CustomReport"/>
    </LinearLayout>
</LinearLayout>

 

页面布局设计效果如下:

cke_113554.png

2)点击"makeCrash"按钮触发调用AGConnectCrash.testIt方法可以制造一次崩溃。

//makeCrash
Button btn_crash = findViewById(R.id.bt_1);
btn_crash.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        AGConnectCrash.getInstance().testIt(MainActivity.this);
    }
});

3)点击"makeException"按钮触发调用AGConnectCrash.recordException方法可以制造一次非严重异常事件。

//makeException
Button btn_exception = findViewById(R.id.bt_2);
btn_exception.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        try {
            throw new Exception();
        }catch (Exception e){
            AGConnectCrash.getInstance().recordException(e);
        }
    }
});

4)点击"CustomReport"按钮触发调用AGConnectCrash.setUserId自定义用户标识,调用AGConnectCrash.log自定义日志,AGConnectCrash.setCustomKey自定义键值对。

 //CustomReport
findViewById(R.id.bt_3).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        AGConnectCrash.getInstance().setUserId("testuser");
        AGConnectCrash.getInstance().log(Log.DEBUG,"set debug log.");
        AGConnectCrash.getInstance().log(Log.INFO,"set info log.");
        AGConnectCrash.getInstance().log(Log.WARN,"set warning log.");
        AGConnectCrash.getInstance().log(Log.ERROR,"set error log.");
        AGConnectCrash.getInstance().setCustomKey("stringKey", "Hello world");
        AGConnectCrash.getInstance().setCustomKey("booleanKey", false);
        AGConnectCrash.getInstance().setCustomKey("doubleKey", 1.1);
        AGConnectCrash.getInstance().setCustomKey("floatKey", 1.1f);
        AGConnectCrash.getInstance().setCustomKey("intKey", 0);
        AGConnectCrash.getInstance().setCustomKey("longKey", 11L);
    }
}); 

5)打包应用,准备好apk。

3. 分析崩溃问题。

1)用手机打开应用点击按钮触发异常和崩溃事件,这里我使用的是华为AGC提供的云手机调试功能,因为之前使用模拟器测试,发现模拟器无法联网导致不能将事件发送出去,使用的测试手机也因为内网的原因无法发送。关于云调试功能后面可能出一期详细讲解,这次就先简单的带过。

打开AGC网站,在我的项目-质量-云调试中,选择一部手机开始测试。

cke_126895.png

2)将打包的apk上传,我这边已经上传好了,云调试手机会自动安装,没有自动安装可以手机点击安装。

cke_140252.png

3)点击运行应用程序,依次点击"CustomReport" 按钮产生自定义崩溃报告,点击"makeException"按钮触发一次非严重异常事件,点击"makeCrash"按钮触发一次崩溃后重新打开应用。

cke_153670.png

4)在质量-崩溃页面中,点击"添加过滤器"在事件类型中勾选"异常",统计信息中点击过去1小时,查看应用的崩溃和异常统计信息,也可以多测试实时查看。异常事件产生后需要在下次应用启动时上报。

cke_167097.png

5)点击"问题"页签和按用户搜索页签,找到应用的崩溃问题,如下"java.lang.NullPointerException"是测试崩溃制造的崩溃问题,"java.lang.Exception"制造的异常事件。点击崩溃问题,可以进入问题详情页面,在"堆栈"信息中,您可以大致了解发生崩溃问题的原因,以帮助您对崩溃问题进行分析。

cke_180542.png

cke_193157.png

6)在日志和状态页签,可以查看自定义的日志信息和自定义的键值对。

cke_207529.png

cke_220217.png

以上,本次的内容分享,谢谢!

参考原文链接:

https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/CrashService

标签:服务,getInstance,示例,AGConnectCrash,AGC,点击,应用,崩溃
来源: https://www.cnblogs.com/developer-huawei/p/16190655.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有