A-A+

Bugly Android 使用文档

2015年08月10日 腾讯云 暂无评论 阅读 219 次浏览 次

一、注册产品获取AppId和AppKey(必选)

AppId:唯一标识一个产品的Id,初始化SDK及配置符号表时需要使用
AppKey:AppId所对应的秘钥,配置符号表时需要使用

产品信息页:AppId和AppKey

二、下载SDK(必选)

下载的文件包括:
SDK JAR:bugly_*_release.jar (必选)
NDK动态库:libBugly.so (可选,Native异常捕获功能所需目前支持armeabi、armeabi-v7a的Native异常捕获)
符号表工具:buglySymbolAndroid_*.jar (可选,可从Debug SO文件中提取出符号表,用于Native异常堆栈还原)

Android SDK下载

代码示例

三、配置AndroidManifest.xml(必选)


 <!-- 必须的权限: -->
    <uses-permission android:name= "android.permission.READ_PHONE_STATE" />  <!-- 获取设备信息 -->
    <uses-permission android:name= "android.permission.INTERNET" /> <!-- 网络通信-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取MAC地址-->
       
    <!-- 可选的权限: -->
    <uses-permission android:name="android.permission.READ_LOGS" /> <!-- 获取logcat日志 -->

代码示例:

四、初始化SDK(必选)

只需调用一个Api方法即可立即完成初始化!
为了有更多机会捕获更多的异常,建议在Application.onCreate()或MainActivity.onCreate()中尽快初始化!

      类:com.tencent.bugly.crashreport.CrashReport:

      初始化方法:
     /**
      * @param appContext
      *            ApplicationContext
      * @param crashReportAppID
      *            平台申请的AppID,不能为null
      * @param isDebug
      *            是否开启调试模式,调试模式下会输出'CrashReport'tag的logcat日志
      */
     public static void initCrashReport (Context appContext, String crashReportAppID, boolean isDebug)
import com.tencent.bugly.crashreport.CrashReport;

public class MainActivity extends Activity
{
      @Override
     protected void onCreate(Bundle savedInstanceState)
     {
          super .onCreate(savedInstanceState);
          
          Context appContext =  this.getApplicationContext();         

          String appId = "XXXXXMYAPPIDXXXX";   //上Bugly(bugly.qq.com)注册产品获取的AppId
          
          boolean isDebug = true ;  //true代表App处于调试阶段,false代表App发布阶段
          
          CrashReport. initCrashReport(appContext , appId ,isDebug);  //初始化SDK     

     }
}

五、ANR(Application Not Responding)监控

使用了Bugly SDK 1.2.*以上版本的产品,默认已经开启了ANR监控,无需额外的代码设置。

六、测试异常功能(可选)

初始化SDK完成后,用户就可以自行触发异常来验证异常是否上报成功。
SDK目前能捕获Java异常及NDK触发的Native异常,并提供了触发异常的接口帮助用户调试。
接口调用后App立即Crash,可以到Bugly(bugly.qq.com)页面上查看上报的异常!

    import com.tencent.bugly.crashreport.CrashReport:

    模拟Java Crash方法:
    CrashReport.testJavaCrash ()

    模拟Native Crash方法:
    CrashReport.testNativeCrash()

issue列表页: testNativeCrash()及testJavaCrash()生成的两种异常:

issue详情页: testNativeCrash()生成的异常堆栈:

七、设置用户名(可选)

初始化SDK后,用户可以设置用户的UserId,Bugly平台提供根据UserId进行异常搜索。

import com.tencent.bugly.crashreport.CrashReport;

CrashReport. setUserId( "spirit4");  //设置用户的唯一标识

issue详情页: 用户名

八、主动上报Catched异常

主动上报Catched异常初始化SDK后,用户可以通过 postCatchedException(Throwable thr)接口主动上报Catched的异常,该异常不会计算的Crash率。

import com.tencent.bugly.crashreport.CrashReport;

CrashReport.postCatchedException( Throwable thr );  //把throwable

通过错误类型筛选Catched的异常

九、自定义App的策略(可选)

初始化SDK前,用户可以自定义一些App的策略:
渠道号:默认是无渠道号,Bugly平台支持根据渠道进行异常搜索。
App的版本:默认是读取AndroidManifest中的android:versionName的值,Bugly平台支持根据App的版本进行搜索。
SDK处理延时:可以延迟SDK初始化后的一些耗时操作,默认无延时。

import com.tencent.bugly.crashreport.CrashReport;
import com.tencent.bugly.crashreport.CrashReport.UserStrategy;

UserStrategy strategy = new UserStrategy(getApplicationContext()); //App的策略Bean
strategy.setAppChannel( "myChannel");     //设置渠道
strategy.setAppVersion( "BuglyDemo_1.0");      //App的版本
strategy.setAppReportDelay(5000);  //设置SDK处理延时,毫秒

CrashReport.initCrashReport(appContext, appId, isDebug, strategy); //自定义策略生效,必须在初始化SDK前调用

issue搜索页:版本搜索及渠道搜索

十、App Progurad混淆(可选)

出于安全考虑,App发布前都会对Java代码进行混淆,混淆时需要注意避免把Bugly中的不允许混淆的类或方法给混淆了!

方案一:不混淆bugly.jar(推荐)

Bugly发布的Jar包都已经做了一层混淆了,建议用户不需要进行混淆了,
用户可以直接通过-libraryjars把bugly.jar引用进去,不对bugly.jar 进行混淆!

方案二:混淆bugly.jar添加SDK的keep信息

用户如果需要混淆bugly.jar,请把下面的keep信息添加到App的混淆配置中:

-keep class * extends android.app.Activity{*;}
-keep class * extends android.app.Service{*;}

#Bugly接口
-keep public class com.tencent.bugly.crashreport.crash.jni.NativeCrashHandler{public *; native <methods>;}
-keep public interface com.tencent.bugly.crashreport.crash.jni.NativeExceptionHandler{*;}

十一、App 还原符号表配置(可选)

生成Java Progurad还原符号表:

通过progurad工具混淆时,可以输出还原符号表文件mapping.txt,Bugly根据mapping.txt文件对Java堆栈进行还原。

eclipse下开启了progurad后,release编译后会在progurad目录下生成符号表文件mapping.txt。

生成Native symbol文件:

通过SymbolTool.jar符号表工具可以提取出SO文件中的debug信息生成symbol文件,Bugly根据symbol文件对Native堆栈进行还原。

NDK build结果中:

libs目录->cpu架构目录->XX.so 是不带debug信息的用于发布的SO,体积小。
obj目录->cpu架构目录->XX.so 是带debug信息(debug_info , debug_line)的用于debug的SO,体积大。

Bugly符号表工具需要在debug的SO中提取出函数的符号信息,进行堆栈还原。

<cmd>
java -jar AndroidSymbolTools.jar -i debugSoPath -a armeabi
</cmd>

将会在debugSo的同目录下,生成一个buglySymbol&cpu架构&SO名.zip的符号表文件。

配置符号表:

进入产品->设置->版本管理,根据版本直接上传符号表就可以了!

符号表配置是根据版本配置的:
一个版本只有一个Java符号表(mapping.txt)
一个版本+Cup架构只有一个Native符号表(bulgySymbol&cpu架构&SO名.zip)
重复配置将会是覆盖操作。

标签:

评论已关闭!

Copyright © 香港虚拟主机_美国虚拟主机_香港服务器_美国服务器租用托管 保留所有权利.   Theme  Ality 蜀ICP备14006632号-1

用户登录