项目中tencent.bugly 的配置

本文档详细介绍如何在Android应用中集成Bugly SDK,包括环境配置、权限设置、初始化过程及异常处理等内容。

bugly地址
或者直接百度 bugly;
进入首页:
这里写图片描述

点击登陆,用qq号登录,但是当你新建项目时,必须用手机号登陆(这是后话了)

登录成功后跳转到这个界面,然后我们点击———— 新建产品

这里写图片描述

图中的demo测试是我刚刚新建的;
果然实名认证还是跑不掉的
这里写图片描述

乖乖的把手机号输入吧!小马哥,你真坏,嘻嘻!

看下我的测试的demo的基本信息吧!
这里写图片描述

产品创建成功后,你可以设置,你们的成员,管理权限,日志配置等信息,这些不配置也是可以使用的!

最重要的,还是我们的 appID和App key 千万不要让别有用心的人看,你懂的

文档配置

接下来我们就需要 点击右上角的文档中心,然后找到 AndroidSDK使用指南,点击进去,按照上面的步骤一步步进行就OK了!
下面上图:
第一步:推荐自动集成(方便,快捷,减少代码量)如果当前的app有ndk,你也可以按照需求加上ndk 集成,这里只介绍SDK集成,

这里写图片描述

当前项目的build.gradle 加入: compile ‘com.tencent.bugly:crashreport:latest.release’ 这句话

第二步:

清单文件 Manifest 中加上:(项目中以添加,忽略即可)

<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" />
<uses-permission android:name="android.permission.READ_LOGS" />

如果你的项目中没有添加 版本号和版本名称:(加上忽略)

versionCode “自定义”
versionName "自定义"

混淆配置:

-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}

App初始化:
如果App使用了多进程且各个进程都会初始化Bugly(例如在Application类onCreate()中初始化Bugly),那么每个进程下的Bugly都会进行数据上报,造成不必要的资源浪费。

因此,为了节省流量、内存等资源,建议初始化的时候对上报进程进行控制,只在主进程下上报数据:判断是否是主进程(通过进程名是否为包名来判断),并在初始化Bugly时增加一个上报进程的策略配置。

Context context = getApplicationContext();
// 获取当前包名
String packageName = context.getPackageName();
// 获取当前进程名
String processName = getProcessName(android.os.Process.myPid());
// 设置是否为上报进程
UserStrategy strategy = new UserStrategy(context);
strategy.setUploadProcess(processName == null || processName.equals(packageName));
// 初始化Bugly
CrashReport.initCrashReport(context, "注册时申请的APPID", isDebug, strategy);
// 如果通过“AndroidManifest.xml”来配置APP信息,初始化方法如下
// CrashReport.initCrashReport(context, strategy);

其中获取进程名的方法“getProcessName”有多种实现方法,推荐方法如下:

/**
 * 获取进程号对应的进程名
 * 
 * @param pid 进程号
 * @return 进程名
 */
private static String getProcessName(int pid) {
    BufferedReader reader = null;
    try {
        reader = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline"));
        String processName = reader.readLine();
        if (!TextUtils.isEmpty(processName)) {
            processName = processName.trim();
        }
        return processName;
    } catch (Throwable throwable) {
        throwable.printStackTrace();
    } finally {
        try {
            if (reader != null) {
                reader.close();
            }
        } catch (IOException exception) {
            exception.printStackTrace();
        }
    }
    return null;
}

不懂得小伙伴请看本人的application代码:

public class App extends Application {
    public final static String TAG = "App";


    @Override
    public void onCreate() {
        super.onCreate();
        initCrashReport();
    }

    private void initCrashReport(){
        Context context = getApplicationContext();
        // 获取当前包名
        String packageName = context.getPackageName();
        // 获取当前进程名
        String processName = getProcessName(android.os.Process.myPid());
        // 设置是否为上报进程
        UserStrategy strategy = new UserStrategy(context);
        strategy.setUploadProcess(processName == null || processName.equals(packageName));
         // 初始化Bugly
        CrashReport.initCrashReport(context, "b56727ce24", false, strategy);
        // 如果通过“AndroidManifest.xml”来配置APP信息,初始化方法如下
        // CrashReport.initCrashReport(context, strategy);
    }
    /**
     * 获取进程号对应的进程名
     *
     * @param pid 进程号
     * @return 进程名
     */
    private static String getProcessName(int pid) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline"));
            String processName = reader.readLine();
            if (!TextUtils.isEmpty(processName)) {
                processName = processName.trim();
            }
            return processName;
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException exception) {
                exception.printStackTrace();
            }
        }
        return null;
    }
}

然后你发现报错,那是因为gradle改变了,你没有刷新而已,点击右上角的sync即可(会自动提示的)

最后我们就需要测试我们集成的是否成功了,你可以按照官方文档中的方法抛出一个异常,然后查看,也可以自己抛出一个异常进行测试,比如

这里写图片描述

这两个异常都是我抛出的,我们点击异常可以看到详细信息,以及建议的修改方法,当我们修改好后,也可以对异常信息进行状态变更,变更完成后,入图中第二个所示!

官方介绍文档地址:传送门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值