腾讯云移动应用安全Android-SDK接口配置说明

使用须知:
 
Android SDK优先支持Android 2.*以上8.*以下的Android系统,此次版本为Gradle(2.*)构建方式。
 
即项目根目录下的build.gradle中使用的classpath 'com.android.tools.build:gradle:2.*.*'
 
IDE:Android Studio
 
PartA:性能数据监测
 
一、预置SDK环境
 
解压bonree_sdk_android_gradle.zip得到bonree_sdk_android_gradle文件夹,暂存本地(如E:\);
 
1.1拷贝license.dat或者BonreeSDKLicense.dat文件到App项目的app\src\main\assets目录下(如果项目中没有assets目录,请创建assets目录);
 
1.2拷贝jniLib覆盖App项目主模块的jniLibs目录(如果项目中没有jniLibs目录,请创建jniLibs目录);
 
1.3 拷贝repo文件夹到App项目根目录;
 
1.4 拷贝com.bonree.agent.jar到App项目主模块的libs目录;
 
注意:Mac下,bonree_sdk_android_gradle文件夹的路径最好放在/Users/xxxx/目录下,放在系统目录下,由于权限可能导致一些难以预计的问题
 
二、配置Gradle
 
1.打开工程根目录下的build.gradle文件
 
2.在build.gradle文件中加入代码
 
在repositories模块中加入脚本
 
    maven {
        url uri('./repo')
    }
在dependencies模块中加入脚本(2.1.6.6为bonree插件版本号,请每次使用最新版本号,本次插件最新2.2.1.8)
 
    classpath 'com.bonree.agent.android:bonree:2.2.1.8'
    如下图1-1:
其中./repo请替换为您本地repo所在路径
 
三、引入SDK
 
1.打开主模块目录下的build.gradle文件
 
2.在dependencies模块中加入代码
 
    compile fileTree(dir: 'libs', include: ['*.jar'])
注意:E:\\bonree_sdk_android_gradle请替换为您本地bonree_sdk_android_gradle所在路径
 
3.在文件头部引入Bonree插件
 
    apply plugin: 'bonree'
 
 
四、Rebuid & Clean项目
 
Rebuild & Clean项目,确保SDK配置生效。

五、配置授权信息
 
检查应用程序AndroidManifest.xml配置文件,确保已引入如下授权:
 
    <uses-permission android:name="android.permission.INTERNET"/>
   
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
   
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
   
    <uses-permission android:name="android.permission.GET_TASKS"/>
   
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_LOGS"/>
若您的应用使用proguard混淆,请配置如下:
 
# ProGuard configurations for Bonree-Agent
 
     -keep public class com.bonree.**{*;}
 
     -keep public class bonree.**{*;}
 
     -dontwarn com.bonree.**
 
     -dontwarn bonree.**
 
# End Bonree-Agent
 
六、启动Agent
 
在待监测App的主Activity(MainActivity)源文件中导入博睿App的Android探针类:
 
  import com.bonree.agent.android.Bonree;
 
初始化Agent:
 
情况1:请在入口Activity的onCreate()方法的第一行增加如下代码:        Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").start(this);
 
情况2:若不需要采集崩溃信息,请在入口Activity的onCreate()方法的第一行增加如下代码:
 
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").withCrashReportingEnabled(false).start(this);
 
情况3:设置启动概率:withRateOfLaunch(float rate),参数:0-1.0,默认1.0;如设置启动概率为50%,则传入0.5F,示例:
 
//设置启动概率50%,不采集地理位置,采集崩溃信息
 
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").withRateOfLaunch(0.5F).start(this);
 
情况4:设置JS行为数据监测:withJsBridgeEnable(boolean enabled),默认false;如设置开启js行为数据监测,参数设为true,示例:
 
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").withJsBridgeEnable(true).start(this);
 
 
 
注意:b26b0566-cdda-4bb6-8e09-45fa33ffeac1为临时字符串,请用应用名称生成的授权编号替换(本次不用替换)
 
七、启动应用程序
 
Clean Project,并重新在模拟器或设备中启动应用程序,开始应用性能管理
 
八、嵌码验证
 
启动已嵌码的apk,查看logcat日志,搜索BRAgent关键字(或者过滤BRSDK-Agent标签),出现如下log则表示嵌码成功
 
  BRAgent enable (注:BRAgent 启动成功)
 
  BRAgent running(注:BRAgent 集成成功)
 
  BRAgent connect server success (注:BRAgent 数据设置成功)
 
 
 
PartB:JAVA接口配置
 
1.会员id设置
 
字段说明:
 
id:用户app会员用户的id,主要用于区分不同会员用户的行为。
 
例如:在需要设置会员用户id时,例如id为1,添加如下代码即可:
 
Statistics.onMemberId("1");
 
2.自定义视图的统计
 
字段说明:
 
pageId:自定义视图的ID(只包含英文、数字、下划线和.)。
 
pageName:自定义视图的名称(只包含英文、数字、下划线和.)。
 
在待监测视图类(Activity、Fragment)的
 
onResume方法中调用Statistics.onPageStart(String pageId, String pageName);
 
onPause方法中调用Statistics.onPageEnd(String pageId, String pageName);
 
注:onPageStart和onPageEnd须成对调用。
 
例如:某apk将监测“关于”界面,其对应视图类About.java
 
3.用户自定义信息的统计
 
字段说明:
 
Kv:自定义信息的Map<String,Object>集合
 
在需要添加自定义信息的模块调用
 
Statistics.setUserInfo(Map<String,Object> kv);
 
例如:某apk在进入某一个页面时设置自定义信息

PartC:JS接口配置
 
1.会员id设置
 
字段说明:
 
id:用户app会员用户的id,主要用于区分不同会员用户的行为。
 
例如:在需要设置会员用户id时,例如id为1,添加如下代码即可:
 
 <script>          
 
         function myclick() {              
 
                 document.getElementById("demo").innerHTML=Date();              
 
                 bonreeJsBridge.onMemberId('1');          
 
         }      
 
 </script>
 
2.自定义视图的统计
 
字段说明:
 
pageId:自定义视图的ID(只包含英文、数字、下划线和.)。
 
pageName:自定义视图的名称(只包含英文、数字、下划线和.)。
 
在待监测html页面中的调用
 
bonreeJsBridge.onPageStart(String pageId, String pageName);
 
bonreeJsBridge.onPageEnd(String pageId, String pageName); 方法
 
注:onPageStart和onPageEnd须成对调用。
 
例如:某apk将监测“关于”html界面,其对应html名称为About.html
 
代码片段示例如下:
 
 <script>          
 
         function myclick() {              
 
                document.getElementById("demo").innerHTML=Date();              
 
                bonreeJsBridge.onPageStart("1","About");
 
bonreeJsBridge.onPageEnd("1","About");        
 
         }      
 
 </script>
 
3.js代码中用户自定义信息的统计
 
字段说明:
 
Kv:自定义信息的Map<String,Object>集合
 
在需要添加自定义信息的模块调用
 
bonreeJsBridge.setUserInfo(String kv);
 
例如:某html页面在进入某一个页面时设置自定义信息
 
代码片段示例如下:
 
<script>          
 
         function myclick() {               
 
                 document.getElementById("demo").innerHTML=Date();         
 
                 var json = '{ "js1": "jsvalue1", "js2": "jsvalue1", "js3":"jsvalue3" }';
 
                 bonreeJsBridge.setUserInfo(json);          
 
         }      
 
 </script>
 
4.用户自定义JS崩溃轨迹的统计
 
字段说明:
 
arrTrace:自定义信息的String[] ,字符串数组,长度为2,第⼀个元素为视图名称(或者标题),第二个元素为事件名(或者详情)
 
在需要添加自定义信息的js代码模块中调用
 
bonreeJsBridge.addCrashTrace(String[] arrTrace)
 
例如:html页面点击按钮时设置自定义信息
 
代码片段示例如下:
 
 <script>          
 
         function myclick() {              
 
                 document.getElementById("demo").innerHTML=Date();              
 
                 bonreeJsBridge.addCrashTrace(['homePage','just run a test']);          
 
         }      
 
 </script>
 
5.AngularJS崩溃统计(适用于AngularJs框架)
 
字段说明:
 
arrAngularError:崩溃信息的String[] ,字符串数组(按调⽤用示例传入参数即可)
 
js代码模块中调用
 
bonreeJsBridge.angularError(String[] arrAngularError);
 
例如:配置AngularJs崩溃收集功能
 
代码片段示例如下:
 
<script>
 
        var app = angular.module('myApp', []);
 
        app.controller('myCtrl', function($scope) {
 
                $scope.count = 0;
 
                $scope.myFun=function(){
 
                        console.log(aaa);
 
                        $scope.count+=1;
 
                }
 
        });
 
        app.config(function($provide) {
 
                $provide.decorator("$exceptionHandler", function($delegate) {
 
                        return function(exception, cause) {             
 
                                bonreeJsBridge.angularError([exception.name,exception.message,window.location.href,na vigator.userAgent,exception.stack]);
 
                                $delegate(exception, cause);             
 
                        };
 
                });
 
        });
 
</script>

PartD:Native数据监测
 
1.用户自定义Native崩溃轨迹的统计
 
字段说明:
 
traceName:String 字符串类型,视图名称(或者标题)
 
traceValue: String字符串类型,事件名(或者详情)
 
需要添加自定义信息的Native代码模块中调用
 
代码片段示例如下:
 
 jclass clazz = env->FindClass("com/bonree/net/format/NativeCrashJniUtil");
 
    if (clazz != NULL) {
 
        jmethodID methods = env->GetMethodID(clazz, "addCrashTrace", "(Ljava/lang/String;Ljava/lang/String;)V");
 
        jobject jobj = env -> AllocObject(clazz);
 
        env->CallVoidMethod(jobj,methods,env->NewStringUTF("traceName"),env->NewStringUTF("traceValue"));
 
    }