其他分享
首页 > 其他分享> > 【AGC】质量服务1 —— 崩溃服务示例

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

作者:互联网

前言:

上一次我们给大家带来了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