Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Andoird Crash的跟蹤方法,使用騰訊Bugly來捕捉一些疑難雜症,讓我們APP穩定上線

Andoird Crash的跟蹤方法,使用騰訊Bugly來捕捉一些疑難雜症,讓我們APP穩定上線

日期:2017/2/23 11:38:47      編輯:關於Android編程

我們在開發中常常會注意到一些Crash,這正是很頭疼的,而且Crash會帶來很多意想不到的狀態,很惡心,所以今天,我們來著重研究一下Crash,同時,我們也將使用第三方SDK,也就是騰訊的Bugly來撲捉這些Crash,讓他無所遁形。

一.糟糕的Android Crash

作為開發人員,很容易就能碰到Crash,但是作為用戶,我相信也有很大部分人碰到過Crash,這些原因,也正是Android的平台差異化和適配所導致的,而且,你要是你安裝一個軟件就Crash,我想你會立馬把他卸載掉。同時心理嘲笑了一下開發人員,有些用戶還有可能會去商店給你差評之類的,這就不多說了,反正會直接影響到你APP的口碑和市場競爭能力,你要是一些用戶很多的APP的話,你還得考慮用戶留存和收入的問題了

而在以前,我們是怎麼處理Crash的呢?一般有三個補救措施吧,感覺,當然,還有其他,待補充:

1.等待用戶反饋,這樣很被動 2.了解出錯原因,讓用戶提供日志和使用場景,不靠譜,攢人品吧 3.提示用戶反饋,這樣對用戶體驗有點糟糕

而在以前,很多廠商基本都這樣搞過,歸根究底,還是現在的APP質量,仍然不敢恭維

我今天講的是騰訊的Bugly處理Crash的方式,主要還是因為他使用比較簡單吧,初始化也就一行代碼,而且可以監控和獲取日志,挺不錯的

二. Crash分類

一般Crash也是分了兩類

Java Crash

java代碼觸發,Jvm虛擬機退出,系統彈框提醒用戶,這個我們可以看log查看報錯原因,Crash工具都能捕獲到。

這裡寫圖片描述

Native Crash

C/C++代碼觸發,Linux進程退出,無系統提示,這就需要一些第三方工具去捕獲了<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCjxoMiBpZD0="三模擬crash的產生">三.模擬Crash的產生

其實我們可以非常簡單的實現一個java的Crash,比如空指針,很正常就能產生,我們這樣來寫MainActivity

public class MainActivity extends AppCompatActivity {

    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button.setText("Android Crash");
    }
}

我都沒給這個button初始化就賦值,肯定會報空指針異常,效果如上圖,而在我們上圖中是提到的,我們可以使用log去收集錯誤

這裡寫圖片描述

我們可以看到他的錯誤是空指針,而錯誤在MainActivity的16行

這裡寫圖片描述

這樣我們的問題就一下子找到了

而如果集成了騰訊Bugly的話,他輸出的日志就比較詳細了,那具體是怎樣的輸出,我們現在就來集成一下把!

四.集成騰訊Bugly

要集成Bugly,肯定要去Bugly的官網

Bugly官網:http://bugly.qq.com/

這裡寫圖片描述

當然,Bugly的集成還是相對來說比較簡單的,我們只要按照他的官方文檔來

http://bugly.qq.com/androidfast

首先要做的,就是下載SDK了(如果你添加依賴的話,就不需要下載)

這裡寫圖片描述

下載之後,我們可以看到他裡面包含著四個文件

這裡寫圖片描述

我們可以根據他們的接入指南來,因為我們是android studio開發,所以我把流程走一遍

在Module的build.gradle文件中添加依賴和屬性配置:

dependencies {
    compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新版本號,也可以指定明確的版本號,例如2.1.5
}

這裡要注意了,Bugly還提供了ndk動態庫,我們如果要看C的日志可以使用

這裡寫圖片描述

如果你集成了這些的話,你在Module的build.gradle文件中添加依賴和屬性配置:

android {
   defaultConfig {
        ndk {
            // 設置支持的SO庫架構
            abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
        }
    }
}
dependencies {
    compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新版本號,也可以指定明確的版本號,例如2.1.5
    compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新版本號,也可以指定明確的版本號,例如2.2.0
}

可以參考官方提供的這張圖

這裡寫圖片描述

注意:自動集成時會自動包含Bugly SO庫,建議在Module的build.gradle文件中使用NDK的“abiFilter”配置,設置支持的SO庫架構。
如果在添加“abiFilter”之後Android Studio出現以下提示:

NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.

則在項目根目錄的gradle.properties文件中添加:

android.useDeprecatedNdk=true

接著你就可以添加他所需要的一些權限了





好,現在我們需要去注冊一個APP了,進入你的後陽台選擇注冊app

這裡寫圖片描述

注冊成功之後就可以看到全貌了,並且可以看到appid了,我們需要這個id

這裡寫圖片描述

現在我們拿到了APPID:900033301,那我們可以去初始化了,建議是在Application中,所以我新建一個Application,並在清單文件,Application的根節點添加name屬性

package com.lgl.androidcrash;

import android.app.Application;

import com.tencent.bugly.crashreport.CrashReport;

/**
 * Application初始化
 * Created by LGL on 2016/6/10.
 */
public class CrashApplication extends Application {

    //初始化
    @Override
    public void onCreate() {
        super.onCreate();
        //是否調試
        CrashReport.initCrashReport(getApplicationContext(), "900033301", false);

    }
}

到這裡,Bugly的配置基本上是OK的,我們可以引起一個bug,然後日志過濾一下

這裡寫圖片描述

便可以看到

這裡寫圖片描述


這裡寫圖片描述

當然,你也可以去Bugly的後台查看

這裡寫圖片描述

我們可以查看詳情

這裡寫圖片描述

分析的很透徹,我們很容易就找到問題的所在了

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved