Bugly 第三方质量跟踪平台 - litonghui/TechBlog GitHub Wiki
###(一) Android Crash 分类:
####为了让开发者迅速获取奔溃信息,腾讯开发第三方SDK(Bugly)(Bugly iOS,Bugly Android ),迅速跟踪查找奔溃信息。 ###(二) 对于Bugly Android 可发可以参考Bugly Android 使用文档,总结一下自己在实现第三方SDK中遇到的问题
private void crashReport(){
Context appContext = this.getApplicationContext();
String appId = "xxxxxxxx";
boolean isDebug = true;// true 代表调试阶段
UserStrategy strategy = new UserStrategy(getApplicationContext()); //App的策略Bean
strategy.setAppChannel( "myChannel"); //设置渠道
strategy.setAppVersion(getVersionName()); //App的版本
strategy.setAppReportDelay(5000); //设置SDK处理延时,满足重要的功能先使用,毫秒
CrashReport.initCrashReport(appContext, appId, isDebug,strategy);
}
/**
* 获取版本号
* @return
*/
public static String getVersionName(Context context){
// 显示当下的版本信息
String versionName=null;
try {
PackageManager pm = context.getPackageManager();
String pkgName = context.getPackageName();
versionName=String.valueOf(pm.getPackageInfo(
pkgName, PackageManager.GET_UNINSTALLED_PACKAGES).versionName);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return versionName;
}
待定。。。
###(三) 查看Crash
1,通过在Apps 信息【需要注册登录】,查看
###(四)Bugly Android Java 符号表配置 ####在代码混淆之后,上报Crash可能是某些字符,比如a,j 他们是用来代替被混淆的类,如果不添加符号表,上报的信息不是很方便阅读
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt前面的#
-keep class * extends android.app.Activity{;} -keep class * extends android.app.Service{;} -keep public class com.tencent.bugly.crashreport.crash.jni.NativeCrashHandler{public ; native ;} -keep public interface com.tencent.bugly.crashreport.crash.jni.NativeExceptionHandler{;}
4,上次至设置-符号表【需要注册登录】,在重写上报的crash 中的字符会被替换
####3,添加Bugly上报用户时,调用方法:CrashReport.setUserId("sg");调用位置如下: strategy.setAppReportDelay(5000); //设置SDK处理延时,毫秒 CrashReport.initCrashReport(appContext, appId, isDebug,strategy); CrashReport.setUserId("sg"); ###(五) Bugly Android SO集成
1,下载.SO【需要注册登录】到本地
在Android工程中,在根目录下有一个libs 文件夹,此文件下包括了armeabi、armeabi-v7a两个夹,c代码编译成的本地库(.os)就会放在两个文件夹中,其中根据cpu的类型不同,会选择不同文件夹中的c库,armeable 是针对普通的或者旧的arm v5 cpu,armeable-v7a是针对有浮点运算或者高级扩展功能的arm v7 cpu。
###(六)Bugly Android SO 符号表配置 ####对用Native 上报信息查看,无法准确定位到c/c++代码具体哪一行,需要依赖Bugly Android SO 符号表具体定位。当然熟悉linux的同学可以通过address2line查找到具体出错的代码行号
在Android工程中,libs 和 obj 文件夹下都会有.SO文件,对于同名的.SO文件,大小相差很大,obj下的.SO大约是libs下的3到4倍,主要是应为它包含了debug信息,一般将libs下的.SO成为release SO(对外发布使用),将obj文件下成为debug SO(开发调试使用)
1,下载.SO符号表【需要注册登录】到本地
####### java -jar buglySymbolAndroid_1.1.jar -i .\libBuglyNative.so -a armeabi #######解释:debugSoPath 为obj问价下debugSo路径, -a 为cpu类型
4,获取生成.zip符号表压缩包,上次至设置-符号表【需要注册登录】,在Crash上报之后查看Native上报错误信息
####### 解释:目前bugly系统一个版本号对应一个mapping文件和一个符号表文件