Android Studio 集成

注意:

  • 请勿与其他带有崩溃分析的 SDK 同时使用,否则将有可能影响崩溃捕捉功能的正常使用,具体参考这里
  • 关于小米手机悬浮小球等问题,请查看:Android 常见问题
  • React-Native 集成,请参考:Bugtags-React-Native
  • 由于 Android 8.0 系统限制,在后台创建的 Service 运行时间不超过 5 秒。

    解决方案:
    测试环境调整 targetsdkversion < 26

  • SDK 初始化会获取设备 MAC 地址的 Hash 值做为设备唯一标识,如应用对隐私敏感,请在用户同意隐私政策后初始化 SDK。

第一步:配置依赖

  • 在项目的 build.gradle(项目根目录的 build.gradle 文件)设置 buildscript dependencies

    buildscript {
        ...
    
        repositories {
                mavenCentral()//如果 jcenter 很慢,尝试添加 mavenCentral 并调整到首行
                jcenter()
        }
    
        dependencies {
            ...
            //**重要**
            classpath 'com.bugtags.library:bugtags-gradle:latest.integration'
        }
    }
    
    allprojects {
        repositories {
            mavenCentral()//如果 jcenter 很慢,尝试添加 mavenCentral 并调整到首行
            jcenter()
        }
    }
    
  • 在你的 Android app(com.android.application) 模块的 build.gradle 应用插件和添加依赖:

    android {
    
        useLibrary 'org.apache.http.legacy'
        compileSdkVersion ...
    
        defaultConfig {
            ndk {
                // 设置支持的 SO 库构架
                abiFilters 'armeabi'// 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64'
            }
        }
    }
    
    //应用 Bugtags 插件
    apply plugin: 'com.bugtags.library.plugin'
    
    //Bugtags 插件配置
    bugtags {
        //自动上传符号表功能配置,如果需要根据 build varint 配置,请参考帮助中心->符号表->Android 符号表->配置自动上传符号表
        appKey "APP_KEY"  //这里是你的 appKey
        appSecret "APP_SECRET"    //这里是你的 appSecret,管理员在设置页可以查看
        mappingUploadEnabled true
    
        //网络跟踪功能配置(企业版)
        //trackingNetworkEnabled true
    }
    
    dependencies {
        ...
        compile 'com.bugtags.library:bugtags-lib:latest.integration'
        //线上使用,如果不需要使用手动提交 issue,可以选择 metrics 包
        //compile 'com.bugtags.metrics:bugtags-lib:latest.integration'
    }
    

    关于 Metrics 版本,请参考文档

    如下图:

    Bugtags-Android-Studio

第二步:添加回调

  • 在你的 Activity 基类(或所有的 Activity)中添加 3 个回调:

    package your.package.name;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import com.bugtags.library.Bugtags;
    
    public class BaseActivity extends Activity{
        @Override
        protected void onResume() {
            super.onResume();
            //注:回调 1
            Bugtags.onResume(this);
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            //注:回调 2
            Bugtags.onPause(this);
        }
    
        @Override
        public boolean dispatchTouchEvent(MotionEvent event) {
            //注:回调 3
            Bugtags.onDispatchTouchEvent(this, event);
            return super.dispatchTouchEvent(event);
        }
    }
    

第三步:启动 SDK

  • 继承 Application,在 onCreate() 方法中初始化 Bugtags:

    public class MyApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            //在这里初始化
            Bugtags.start("APP_KEY", this, Bugtags.BTGInvocationEventBubble);
        }
    }
    

    关于启动参数和启动模式,请参考文档

  • 修改 AndroidManifest.xml,使用 MyApplication 类,例如:

    <application
        android:name=".MyApplication"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        ....
    </application>
    

    关于如何使用 Android Studio 以及 gradle,请参考 bugtags 博客系列文章

第四步:ProGuard 混淆规则

  • 添加混淆规则

    # ProGuard configurations for Bugtags
    -keepattributes LineNumberTable,SourceFile
    
    -keep class com.bugtags.library.** {*;}
    -dontwarn com.bugtags.library.**
    -keep class io.bugtags.** {*;}
    -dontwarn io.bugtags.**
    -dontwarn org.apache.http.**
    -dontwarn android.net.http.AndroidHttpClient
    
    # End Bugtags
    

编译运行 App,将会在 App 内部看到一个小球,成功了! 看不到悬浮球? 想隐藏悬浮球?

v1.2.7 引入 NDK SO 文件

  • 详细原理,请访问这里

v2.0.0 升级可能出现的问题

  • 解决方案,请访问这里

v3.0.0 起,新增 Metrics 版本

  • 关于 Metrics 版本,请参考文档

更多

  • 默认情况下,App 在联机调试(即 true == Debug.isDebuggerConnected()) 状态下,自动上报闪退;可通过设置启动参数 BugtagsOptions -> trackingCrashLog 来实现自定义;
  • 使用启动参数

    BugtagsOptions options = new BugtagsOptions.Builder().
                    trackingLocation(true).//是否获取位置,默认 true
                    trackingCrashLog(true).//是否收集crash,默认 true
                    trackingConsoleLog(true).//是否收集console log,默认 true
                    trackingUserSteps(true).//是否收集用户操作步骤,默认 true
                    trackingNetworkURLFilter("(.*)").//自定义网络请求跟踪的 url 规则,默认 null
                    build();
    
    Bugtags.start("APP_KEY", this, Bugtags.BTGInvocationEventBubble, options);
    
  • SDK 最低兼容 Android 2.3(API 9) 及以上版本;集成有问题请进入 QQ 群:126207501;

  • 以上的配置方式对于 Android Studio 和 Intellij IDEA 是通用的,Bugtags 推荐使用 Android Studio。Let's embrace change!

参考资源