Bugly Android 使用文档
一、注册产品获取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)
重复配置将会是覆盖操作。
评论已关闭!