睿动APP SDK监测的数据采集时间粒度是:1分钟,即如果终端用户持续使用APP,系统每间隔1分钟获取一次网络性能数据并上报给数据中心。
网络性能数据:请求响应时间、DNS时间、TCP时间、SSL握手时间、请求时间、服务响应时间、数据接收时间、信号量、请求地址、目标IP、客户端IP、地区、网络制式、APP版本、请求头、响应头、请求错误发生时间;
崩溃数据:崩溃堆栈信息、崩溃时间;
设备信息:设备名称、设备型号、操作系统名称、操作系统版本;
除非越狱iOS设备获取不到蓝牙等设备状态外,其他数据项完全一致。
免费版用户数据保留15天;
标准版用户数据保留30天;
企业版可根据业务需求定制;
APP性能支持:视图、主机、域名、地域、运营商、接入方式、APP版本等维度分析。
APP请求错误支持:请求地址、错误类型、视图、主机、域名、地域、运营商、接入方式、APP版本等维度分析。
APP崩溃支持:崩溃函数、视图、OS版本、设备型号、APP版本等维度分析。
iOS客户端和Android客户端均支持混合式APP,即可以获取到APP中WebView组件发起的请求的网络性能数据。
睿动APP SDK监测支持崩溃分析。首先,睿动APP SDK监测可以从崩溃函数、视图、OS版本、设备型号、APP版本、崩溃原因等维度对崩溃进行统计并查看崩溃的分布。其次,对于相同的崩溃原因,睿动APP SDK监测提供完整的堆栈信息、事件列表、崩溃路径供开发者分析。
免费版月活数量为10万;
标准版月活数量为20万;
企业版月活数量根据业务需求定制;
是根据设备出口IP定位的。
在APP应用程序中,会有一些关键的业务接口,它们通常存在于关键的业务过程中(例如:登录或者购买),这类元素远远要比其它元素更为重要,其性能的好坏对业务有着直接的影响。因此,用户常常需要密切监测这些关键元素,当它们的性能表现不佳时,及时获得告警。
数据经过加密和压缩,消耗流量很小,影响可以忽略不计。
我们已经过严格的测试,不会对APPStore审核有影响。
iOS版本支持iOS 6.0以上系统,并且支持CocoaPods。Android版本支持2.3以上5.0以下(含5.0)的系统。
不需要。客户端在获取数据时,会同时获取APP版本信息,在前台报告页面展示时,可以基于APP版本进行数据区分。
iOS客户端zip包大小是1.6M,编译后会使APP增加366KB。
Android客户端Ant版zip包大小是576KB,编译后APP增加332KB。
Android客户端Gradle版zip包大小是579KB,编译后APP增加332KB。
Android客户端Eclipse版zip包大小是1.39M,编译后APP增加332KB。
支持HTTP/HTTPS,及部分基于TCP的私有协议。
不升级SDK,不会影响原有数据的采集和报表。但如果系统增加的新功能需要采集此前没有采集的数据项,则用户无法使用这部分功能。
用户无需卸载客户端程序,只需要在“APP设置”页面中将APP删除,客户端即会停止工作,不再进行数据采集。用户也可以通过移除睿动APP SDK监测客户端代码的方式,实现完全卸载。
打开AndroidManifest.xml文件,查找带有配置如下intent-filter的activity即为Main Activity:
<activity android:name="**Activity" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
情况1:APP继承了APPlication,在APPlication 的onCreate()方法的第一行增加 Bonree.withAPPlicationToken("**************").start(this);
情况2:APP未继承APPlication,在入口Activity的onCreate()方法的第一行增加 Bonree.withAPPlicationToken("**************").start(this);
方法1:查看logcat日志,搜索关键字BRAgent,出现如下日志则嵌码成功:
BRAgent enable (注:BRAgent 启动成功)
BRAgent start succcess (注:BRAgent 嵌码成功)
BRAgent connect server success (注:BRAgent 数据回传成功)
方法2:运行已经嵌码的APP,进行有网络数据交互的操作;登录睿动APP SDK监测报表平台,选择已经嵌码的APP查看是否报告已经有网络数据。如果有,则代表嵌码成功。注:数据返回会有一定延时,一般在15分钟以内。
登录睿动APP SDK监测系统看不到数据主要有如下几种可能。
(1) 客户端嵌码失败;
(2) 所监测的APP没有被启动或是在无网络情况下启动;
(3) 网络延迟或其他网络故障;
(4) 嵌码时将APPKey写错;
目前睿动APP SDK监测嵌码支持 Ant、Gradle和Eclipse 三种编译方式,请选择适合您的编译方式,部署详情请参阅部署文档。
注:嵌码apk只适用于一种编译方式,不能同时使用两种编译方式进行打包,例如:使用ant编译完成后再用eclipse(没有安装我们的插件)编译的话,会覆盖ant编译出的已嵌码的apk。
首先确认当前是处于工程根目录,若根目录依然没有build.xml,则输入android update -p .自动创建build.xml。
首先确认com.bonree.agent.jar已放到工程libs目录下; 其次在报错源文件头部引入com.bonree.agent.android.Bonree;
首先确认com.bonree.classrewriter.jar已正常引入,然后set ANT_OPTS=”-javaagent:X:\xxx\com.bonree.classrewriter.jar”,按照嵌码流程重新打包。
首先请确认不引入睿动sdk的时候有无上述问题,若该问题确认是引入睿动sdk后导致,请将打包日志和相应生成的apk反馈到睿动技术人员。
直接按《嵌码说明》中的内容编译即可。
首先请确认不引入睿动sdk的时候有无上述问题,若该问题确认是引入睿动sdk后导致,请将打包日志和相应生成的apk反馈到睿动技术人员。
对已生成的apk无法进行SDK嵌码。
睿动APP SDK监测支持两种数据过滤机制。
(1)可通过“请求地址过滤”对请求地址进行过滤,操作方式如下:
登录睿动APP SDK监测;
选择“基础设置”-“APP设置”-“添加或修改APP”;
选择“请求地址过滤”tab页签;
勾选“白名单”或“黑名单”选项,填写要过滤的URL地址,多个URL地址之间用逗号分隔;
注:白名单为只采集符合输入规则的URL地址对应的网络数据;黑名单为将符合输入规则的URL地址过滤掉,不采集这些URL地址对应的网络数据。
(2)可通过“采样规则设置”对采集的样本进行过滤,操作方式如下:
登录睿动APP SDK监测;
选择“基础设置”-“APP设置”-“添加或修改APP”;
选择“采样规则”tab页签;
在采样规则中,用户可设置采集样本数量,可基于地域、运营商、接入方式、APP版本等条件设置样本采集规则;
睿动APP SDK监测目前无法控制崩溃日志的采集,只要发生崩溃,客户端就会采集崩溃日志。
如果崩溃数为0,但实际有崩溃发生,可能是APP自身有异常捕获处理。
在使用睿动APP SDK监测进行监测时,如果采样规则设置的是“全部样本”,那么系统显示的活跃设备数就是真实的活跃设备数,也就是真实的活跃用户数。但睿动始终关注用户的数据安全,我们从法律和技术上保证不会将包括活跃用户数、性能数据等在内的所有用户数据泄露给任何第三方。
此外,用户也可以通过平台的“采样规则设置”功能,只采集部分样本,这样系统将无法获取到真实的活跃用户数。如果APP的用户数量足够大,进行部分样本采集基本不会影响数据的准确性;但如果APP用户数量不够大,再进行部分样本的采集,有可能会影响数据的准确性。
针对eclipse版本不同区分为“Eclipse-3.7_4.3”和“Eclipse-4.4_4.5”两个版本,按对应版本安装即可。
首先睿动APP SDK监测采集的指标仅限于设备信息、网络性能数据、崩溃数据,不会采集其他业务数据;其次,睿动APP SDK监测的客户端在传输数据前先对数据进行加密,然后进行传输。另外,睿动APP SDK监测的监测引擎不是一个独立进程,它不是通过在底层拦截应用数据包来分析。
首先可以签订数据安全协议,其次睿动允许客户对客户端代码进行付费审计。
睿动APP SDK监测采集的数据是临时保存在内存中,不会有任何本地存储。iOS和Android的运行机制保证了应用自身的内存空间不会被其他应用访问到。
如果待监测的APP使用ProGuard工具来优化发布的apk包,为了保证APP监测SDK可以正常使用,请在所属项目的proguard.cfg文件中加入以下的内容:
# ProGuard configurations for Bonree-Agent
-keep public class com.bonree.**{*;}
-keep public class bonree.**{*;}
-dontwarn com.bonree.**
-dontwarn bonree.**
# End Bonree-Agent
如果网络质量不好,睿动APP SDK监测会重新尝试上传数据包,但不会“不断尝试”,对耗电影响很小。
首先,睿动APP SDK监测发布前都经过严格的测试,凭借睿动自身的优势,在Real APP发布前,我们会将SDK嵌入到自己的APP中,并且通过自有的自动化Android机型适配平台,使用上百种安卓手机进行真机适配测试,完全保证Real APP适用于绝大多数安卓设备。其次,睿动SDK自身有异常捕获处理,即使SDK内部发生异常,也不会影响客户业务流程和APP的正常使用。
几乎没有影响。
睿动APP SDK监测提供完整的崩溃堆栈信息,可以通过分析代码定位引起崩溃的原因。
睿动APP SDK监测提供两个级别的报警:普通和严重。用户可以自定义设置两个级别的报警阈值。当性能超过普通级别报警阈值时,说明APP的性能已经出现问题,但不是很严重,用户应当给予关注;当性能超过严重级别的报警阈值时,说明APP的性能已经很差,需要立即处理。当APP性能达到报警阈值时,睿动APP SDK监测会产生报警日志。为了便于用户第一时间了解APP的性能变化,平台会发送报警通知到预设的邮箱或手机。
触发报警需要满足以下条件:
(1)性能达到报警阈值;
(2)在持续报警做小周期内均达到报警阈值;
(3)每个报警周期内被监测的设备数量达到设置的数量;
三个条件用户均可自定义设置,主要目的是排除偶发性或少量样本的导致的性能下降。
博睿Android SDK优先支持Android 2.*以上7.*以下的Android系统,此次版本为Ant构建方式。
SDK下载:下载
① 首先确保已经安装了Ant构建环境和ADT开发环境;
② 命令行 cd 到待监测的App工程根目录下执行:
android update project -p .
生成build.xml文件。
注意:android命令在android sdk目录的tools子目录下,需要您设置好PATH环境变量,才可直接使用android命令行;
③ 在ADT中使用Android Tools -> Export Signed Application Package
生成签名文件并命名(如:android.keystore)
④ 制作ant.properties文件,内容如下:
#keystore文件的目录,一般放根目录下所以直接写名字
key.store=android.keystore
#这个名字就是在生成keystore时那个alias字段的值
key.alias=android
#两个密码分别写建立keystore时的两个密码
key.store.password=(your pwd)
key.alias.password=(your pwd)
注意:android.keystore为上一步骤生成的签名文件名(如:android.keystore)
⑤ 命令行 cd 到待监测的App工程根目录下执行:
ant clean release install
保证嵌sdk前待监测的App工程可正常ant打包并安装运行。
① 解压bonree_sdk_android_ant.rar得到bonree_sdk_android_ant文件夹;
1.1拷贝com.bonree.agent.jar文件到待监测App项目的libs目录下,如果项目中没有libs目录,请创建libs目录。
1.2拷贝libs/*/llib317844B0CDB0A832.so和lib317844B0CDB0A833.so文件到待监测App项目的libs/*/目录下。
1.3license.dat或者BonreeSDKLicense.dat文件到App工程的assets目录下,如果项目中没有assets目录,请创建assets目录。
1.4拷贝com.bonree.classrewriter.jar文件到某个目录(Windows下,如 E:\bonree_sdk_android_ant\com.bonree.classrewriter.jar;
Mac下,如 /Users/mizone/android/bonree_sdk/com.bonree.classrewriter.jar),暂存备用
注意:Mac或Linux下,com.bonree.classrewriter.jar的路径最好放在/Users/xxxx/目录下,放在系统目录下,由于权限可能导致一些难以预估的问题。
② 设置应用程序权限
构建完成后,请在待监测的App工程的AndroidMainfest.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"/>
③ 插入启动博睿SDK的代码
在待监测App的主Activity(MainActivity)源文件中导入博睿App的Android探针类:
import com.bonree.agent.android.Bonree;
初始化Agent:
情况1:一般情况下(推荐使用),请在入口Activity或application的onCreate()方法的第一行增加如下代码:
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").start(this);
私有云客户:Bonree.withApplicationToken("2b30fc8b-e549-407d-b688-6f62af39ed1b").withConfigUrl("https://sdkconfig.reedoun.com/config/").start(this);
情况2:若不需要采集崩溃信息,请在入口Activity或application的onCreate()方法的第一行增加如下代码:
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").withCrashReportingEnabled(false).start(this);
情况3:异步启动网络hook接口:withAsynchronismEnabled(boolean enabled),参数:是否异步启动;默认为false;如设置异步启动,则传入true,示例:
//异步启动网络hook,Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").withAsynchronismEnabled(true).start(this);
情况4:设置启动概率:
withRateOfLaunch(float rate),参数:0-1.0,默认1.0;如设置启动概率为50%,则传入0.5F,示例:
//设置启动概率50%,不采集地理位置,采集崩溃信息
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").withRateOfLaunch(0.5F).start(this);
注意:b26b0566-cdda-4bb6-8e09-45fa33ffeac1为临时字符串,请用应用名称生成的授权编号替换(本次不用替换)
④ 设置临时环境变量ANT_OPTS
Windows环境下,命令行 cd 到待监测的App工程根目录下执行:
set ANT_OPTS="-javaagent:E:\path\to\bonree_sdk_android_ant\com.bonree.classrewriter.jar"
Mac或Linux环境下,shell cd到待监测App工程根目录下执行:
export ANT_OPTS="-javaagent:/Users/xxx/com.bonree.classrewriter.jar"
其中“/path/to/bonree_sdk_android_ant/”和“/Users/xxx/”请用你实际存放SDK的路径替换(Windows下,如 E:\bonree_sdk_android_ant\com.bonree.classrewriter.jar;
Mac或Linux下,如:/Users/mizone/android/bonree_sdk/com.bonree.classrewriter.jar)。
jenkins(ant)自动构建环境下:
注意1:请勿将该环境变量(ANT_OPTS)永久设置到用户或系统环境变量里,否则会影响其他不需要进行嵌码的Android项目。建议在单次编译的命令行状态下临时设置该环境变量,或单独在需要嵌码项目的批处理编译脚本中设置该环境变量。
注意2:由于可能会受Android开发工具中一个已知bug的影响,com.bonree.classrewriter.jar文件路径中请勿包含空格。
⑤ 使用Ant重新编译并安装待监测App
命令行 cd 到待监测的App工程根目录下执行:
ant clean release install
⑥ 设置混淆器
如果待监测的App使用ProGuard工具来优化发布的apk包,为了保证App监测SDK可以正常使用,请在所属项目的proguard.cfg文件中加入以下的内容:
# ProGuard configurations for Bonree-Agent
-keep public class com.bonree.**{*;}
-keep public class bonree.**{*;}
dontwarn com.bonree.**
-dontwarn bonree.**
# End Bonree-Agent
⑦ 检测嵌码是否成功
启动已嵌码的apk,查看logcat日志,搜索BRAgent关键字(或者过滤BRSDK-Agent标签),出现如下log则表示嵌码成功
BRAgent enable (注:BRAgent 启动成功)
BRAgent start succcess (注:BRAgent 嵌码成功)
BRAgent connect server success (注:BRAgent 数据设置成功)
须知:博睿Android SDK优先支持Android 2.*以上8.*以下的Android系统,此次版本为Gradle(2.*)构建方式。
即项目根目录下的build.gradle中使用的classpath 'com.android.tools.build:gradle:2.*.*'
IDE:Android Studio
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/目录下,放在系统目录下,由于权限可能导致一些难以预计的问题
① 打开工程根目录下的build.gradle文件
② 在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所在路径
① 打开主模块目录下的build.gradle文件
② 在dependencies模块中加入代码
compile fileTree(dir: 'libs', include: ['*.jar'])
注意:E:\\bonree_sdk_android_gradle请替换为您本地bonree_sdk_android_gradle所在路径
③ 在文件头部引入Bonree插件
apply plugin: 'bonree'
Rebuild & Clean项目,确保Bonree配置生效。
检查应用程序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
在待监测App的主Activity(MainActivity)源文件中导入博睿App的Android探针类:
import com.bonree.agent.android.Bonree;
初始化Agent:
情况1:请在入口Activity的onCreate()方法的第一行增加如下代码:
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").start(this);
私有云客户:Bonree.withApplicationToken("2b30fc8b-e549-407d-b688-6f62af39ed1b").withConfigUrl("https://sdkconfig.reedoun.com/config/").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);
Clean Project,并重新在模拟器或设备中启动应用程序,开始应用性能管理
启动已嵌码的apk,查看logcat日志,搜索BRAgent关键字(或者过滤BRSDK-Agent标签),出现如下log则表示嵌码成功
BRAgent enable (注:BRAgent 启动成功)
BRAgent running(注:BRAgent 集成成功)
BRAgent connect server success (注:BRAgent 数据设置成功)
① 用户自定义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"));
}
须知:博睿Android SDK优先支持Android 2.*以上8.*以下的Android系统,此次版本为Eclipse插件构建方式。
IDE:Eclipse3.7(Indigo)、Eclipse3.8/4.2(Juno)、Eclipse4.3(Kepler)、Eclipse4.4(Luna)、Eclipse4.5(Mars)
SDK下载:下载
① 点击Help-->Install New Software
② 点击add-->弹出对话框选Archive
③ 选择插件Bonree-Android-Eclipse-Plugin***.zip
④ 点击OK后进入插件安装,勾选如图所示的勾选框。
注意:最后一项 contact all update sites during to find requied software 不要勾。
⑤ 5.一直点击Next后出现授权信息,同意后点finish安装完成,完成后重启eclipse。
打开bonree_sdk_android_eclipse文件夹,按下列步骤操作,请参考下图。
① 拷贝com.bonree.agent.jar文件到待监测App项目的libs目录下,如果项目中没有libs目录,请创建libs目录。
② 拷贝libs/*/llib317844B0CDB0A832.so和lib317844B0CDB0A833.so文件到待监测App项目的libs/*/目录下。
③ 3.拷贝license.dat或者BonreeSDKLicense.dat文件到App工程的assets目录下,如果项目中没有assets目录,请创建assets目录。
④ 开启Bonree插件功能:工程目录右键菜单中点击【BonreeSDK安装】——【安装检测】,出现图3的提示即为成功。
⑤ Clean Project然后编译
注意:成功后必须Clean一次Project,正常运行编译app。
构建完成后,请在待监测的App工程的AndroidMainfest.xml文件中增加以下的权限:/p>
<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"/>
在待监测App的主Activity(MainActivity)源文件中导入博睿App的Android探针类:
import com.bonree.agent.android.Bonree;
初始化Agent:
情况1:一般情况下(推荐使用),请在入口Activity或application的onCreate()方法的第一行增加如下代码:
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").start(this);
私有云客户:Bonree.withApplicationToken("2b30fc8b-e549-407d-b688-6f62af39ed1b").withConfigUrl("https://sdkconfig.reedoun.com/config/").start(this);
情况2:若不需要采集崩溃信息,请在入口Activity或application的onCreate()方法的第一行增加如下代码:
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").withCrashReportingEnabled(false).start(this);
情况3:异步启动网络hook接口:withAsynchronismEnabled(boolean enabled),参数:是否异步启动;默认为false;如设置异步启动,则传入true,示例:
//异步启动网络hook
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").withAsynchronismEnabled(true).start(this);
情况4:设置启动概率:withRateOfLaunch(float rate),参数:0-1.0,默认1.0;如设置启动概率为50%,则传入0.5F,示例:
//设置启动概率50%,不采集地理位置,采集崩溃信息
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").withRateOfLaunch(0.5F).start(this);
注意:b26b0566-cdda-4bb6-8e09-45fa33ffeac1为临时字符串,请用应用名称生成的授权编号替换
如果待监测的App使用ProGuard工具来优化发布的apk包,为了保证App监测SDK可以正常使用,请在所属项目的proguard.cfg文件中加入以下的内容:
# ProGuard configurations for Bonree-Agent
-keep public class com.bonree.**{*;}
-keep public class bonree.**{*;}
-dontwarn com.bonree.**
-dontwarn bonree.**
# End Bonree-Agent
Clean Project,开始打包编译,然后在模拟器或Android设备上运行待监测的App,并进行适当的网络访问。
启动已嵌码的apk,查看logcat日志,搜索BRAgent关键字(或者过滤BRSDK-Agent标签),出现如下log则表示集成成功
BRAgent enable (注:BRAgent 启动成功)
BRAgent running(注:BRAgent 集成成功)
BRAgent connect server success (注:BRAgent 数据设置成功)
① 找到dependencies标签
② 在此标签下添加如下内容:
<dependency>
<groupId>com.bonree.agent.android</groupId>
<artifactId>com.bonree.classrewriter</artifactId>
<version>1.0.4</version>
</dependency>
添加后的结果:
③ 接着找到<build>标签:
添加如下内容:
<plugin>
<groupId>com.bonree.agent.android</groupId>
<artifactId>agent-maven-plugin</artifactId>
<version>1.0.4</version>
<executions>
<execution>
<goals>
<goal>instrument</goal>
</goals>
</execution>
</executions>
</plugin>
添加后的效果:
在此已经添加完成
④ 接着将com.bonree.agent.jar 和armeabi 文件夹包含的SO文件加到Android项目中libs下(注意:如果项目中存在armeabi-v7a,需要把so单独拷贝一份放到该文件夹下),如图:
⑤ 将license.dat放到Android工程项目的assets目录中,如图:
⑥ 启动Agent
在入口activity中引入Bonree类
import com.bonree.agent.android.Bonree;
初始化Agent:
Bonree.withApplicationToken("b26b0566-cdda-4bb6-8e09-45fa33ffeac1").start(this);
⑦ 确认Android项目工程下Manifest.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.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.BLUETOOTH" />
⑧ 如果待监测的App使用ProGuard工具来优化发布的apk包,为了保证App监测SDK可以正常使用,请在所属项目的proguard.cfg文件中加入以下的内容:
# ProGuard configurations for Bonree-Agent
-keep public class com.bonree.**{*;}
-keep public class bonree.**{*;}
-dontwarn com.bonree.**
-dontwarn bonree.**
# End Bonree-Agent
⑨ Maven clean一次项目后执行 Maven install 执行编译。
⑩ 在log输出阶段如果看到如下信息,说明嵌码成功。
BRAgent enable
BRAgent start succcess
BRAgent connect server success
SDK下载:下载
在BuildPhass->Link Binary With Libraries中能看到
CoreLocation.framework
CoreTelephony.framework
Security.framework
SystemConfiguration.framework
libz.1.2.5.tbd
libresolv.9.tbd
选择Build Setting,搜索Other Linker Flags,增加编译标志-ObjC
① 引入头文件
#import "bonreeAgent/bonreeAgent.h"
如果是 Swift 项⽬目,请在对应的 bridging-header.h 桥接文件导入
② 在AppDelegate文件
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions方法中加入
[BRSAgent startWithAppID:@“40766f87-13a8-48d3-9c96-1ce7c3cde50f"];
(参数字符串是在网站上得到的appid,现在临时用40766f87-13a8-48d3-9c96-1ce7c3cde50f)
运行后有日志 bonreeAgent config succeeded ,即表示嵌码成功,如下图:
//设置app版本(请在bonreeAgent启动之前设置)
+ (void)setAppVersion:(NSString *)appVersion;
//即时upload接口,客户调用该接口,将sdk目前保存的数据及当前视图的信息直接上传,返回值为 YES表示上传成功,NO表示上传失败。(同步上传,建议客户启用新的线程调用)
+ (BOOL)upload;
其它:
cocoapods的配置:(cocoapods的版本只支持公有云)
在工程Podfile文件中添加pod ‘bonreeAgent’或者 pod ‘bonreeAgent’, ‘版本号’即可。
增加config地址接口(须在sdk初始化接口startWithAppID之前调用,否则私有云地址设置将无法生效);
私有云需要调用setConfigAddress,设置config地址,具体地址由技术提供,例如:
[BRSAgent setConfigAddress:@"https://sdkconfig.reedoun.com/config/"];
当客户的https请求需要忽略证书时,需要调用以下接口(若客户不需要忽略证书,如:证书为ca证书,请无 视以下接口)
例子1:
//当发送https请求并且要求忽略证书时,需要客户调用此接口
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//...
//在生成request后,发送请求之前,调用
[BRSAgent ignoreSSLVerify:request];//指定请求忽略证书
//...
_connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
例子2:
//所有请求均忽略证书,直接调用
[BRSAgent ignoreAllSSLVerify];
//若调用了所有请求请求无忽略证书,而个别请求不用忽略证书时,可以调用[BRSAgentsslVerify:request];
+ (void)ignoreAllSSLVerify;//所有请求均忽略证书
+ (void)ignoreSSLVerify:(NSMutableURLRequest *)request;//指定请求忽略证书
+ (void)sslVerify:(NSMutableURLRequest *)request;//指定请求不忽略证书
接口说明:
具体见bonreeAgent.h
①bugly的崩溃收集对bonree的崩溃收集有影响 :bugly的sdk的初始化调用先于bonree的sdk的初始化调用,则导致iOS10及以上系统在发生崩溃时处于假死状态,无法正常退出。
②友盟的崩溃收集的初始化需要在bonree的初始化之前完成,否则会造成bonree无法捕捉崩溃数据。
③私有云config地址设置接口(setConfigAddress)须在sdk初始化接口(startWithAppID)之前调用,否则config私有云地址设置将无法生效。
视图即Android APP中的Activity和iOS APP中View的概念,是一个应用程序中负责与用户交互的组件,用户可以用来交互为了完成某项任务。在一个应用中,一个视图通常就是一个单独的屏幕,它上面可以显示一些控件,也可以监听并处理用户的事件并做出响应。
判断用户发起请求时的网络质量状况,可选择全部、强、弱来筛选查看不同网络质量下的数据。
用于区分请求作用的维度,资源类指负责前端展示的资源文件,通常包括各类图片、视频、CSS等,业务类指动态处理的程序片段的请求。可在APP管理中按照域名、目标主机、请求地址扩展名和请求的MIME类型设置归入资源类的请求规则,其余的则归入业务类请求。
定义请求的健康性,由多种指标进行评估,可在APP设置中的健康度进行更改,当请求的指标超过设置的阈值时,该请求会被标记为慢请求,未超过阈值的为健康请求。
APP有一些元素是核心业务相关的,如果您希望对这类元素的性能和错误情况单独统计查看以及报警,可在设置中将这类元素添加为关键元素。
指标 | 解释 |
---|---|
响应时间 | 请求从发起到结束的完整时间 |
DNS耗时 | 域名解析时间 |
TCP耗时 | 建立TCP连接的时间 |
SSL耗时 | SSL握手时间 |
请求耗时 | 客户端发送请求过程的耗时。该过程实际为实际为本地操作,是系统将数据写入发送缓存中,因此通常都在毫秒级 |
服务响应耗时 | 请求结束后客户端成功接收到服务器第一个响应包的时间 |
接收耗时 | 下载数据所消耗的时间 |
首包时间 | 从请求发起到成功接收到服务器第一个响应包的时间 |
指标 | 解释 |
---|---|
下载速度 | 请求下载的数据大小/接收时间,单位为KB/S |
吞吐量 | 单个请求发生数量在全部请求中的占比 |
吞吐率 | 平均每分钟请求数量,单位为rpm (request per minute) |
慢请求 | 超过健康标准的请求 |
慢速比 | 慢请求所占的比例 |
请求错误次数 | 请求发生网络错误的总次数 |
请求错误率 | 错误请求在所有请求中的占比 |
访问数 | 客户端访问APP的总次数 |
崩溃次数 | 客户端访问APP时发生崩溃的总次数 |
崩溃率 | 崩溃次数在总访问次数中所占的比例 |
崩溃上下文 | 崩溃发生时客户端的状态信息 |
崩溃路径 | 崩溃发生前用户的操作路径 |
活跃设备数 | 在选定时间段内,访问过APP的独立设备数量 |
APP适配服务是产品发布更新前的必经之路,利用全新适配技术通过对APP功能性(全控件/元素遍历测试)、稳定性(Monkey稳定性测试)测试,遍历程度达 80%以上,反馈APP适配结论,并提供执行、错误的截图及log定位分析,解决APP各类兼容性问题。
根据测试类型选择导航中的全面测试或稳定性测试,依据系统提示填写任务名称,上传APK文件,如果涉及到脚本流程测试,则需要下载睿动脚本录制器录制并保存脚本,之后在添加任务界面上传APK和脚本文件。
点击导航栏上的测试结果,可以看到所有添加的任务以及测试进度,点击即可查看相应测试任务的报告。
全面测试包含安装、运行(在运行期间进行全遍历控件测试)、卸载测试、遍历测试、流量测试。
脚本测试在规定时间内,一直执行脚本测试,直至到设定时间停止。
稳定性测试包括安装、运行(运行中Monkey测试)、卸载测试。Monkey遍历以随机点击坐标点的模式对APP应用进行进行各种乱按、乱晃、乱触摸等测试操作,查看APP在此情况下的运行情况。
整体测试时长与适配测试类型、遍历深度、选择机型多少有关,当有手机适配完毕后进度会进行变更,当测试任务进度大于0%时即可随时查看已经适配完毕的数据。
在睿动APP适配系统中,鼠标指向系统导航栏上的账号名,在弹出浮层中显示当前账户剩余测试时长。
在睿动网站个人中心的产品页面中同样显示了当前登录账号的APP适配剩余测试时长。
终端机向平台请求适配任务→获取任务ID→解锁→SD卡内容清除→获取任务APK信息→卸载任务APK(无论有无安装均进行此操作)→安装APK→启动→运行(全面测试)
判断是否为被测页面→是,遍历→获取截图、性能数据收集→到测试时间进行卸载→上传数据;
判断是否为被测页面→否,重新拉起APP→进入被测页面判断循环;
流程图如下:
全面测试主要为用户所上传应用程序提供了全面的适配测试,即功能测试。
测试类型包括:全遍历控件、脚本流程+全遍历控件、脚本流程
全遍历控件:将该APP应用中控件全遍历测试(可进行逐层点击每个控件操作)。遍历覆盖率达90%以上(其他厂商约50%左右),且在结果截图里,测试过程中点击的各个控件不止列出坐标,控件名称也一并给出。
脚本流程:主要包含安装、运行(在运行中只执行脚本,不做遍历)、卸载测试
稳定性测试是将程序在设定的时间范围内进行随机性点击,记录此段时间内崩溃次数,根据数据分析程序的稳定性。
测试类型包括:Monkey遍历、脚本流程+Monkey遍历
Monkey遍历:以随机点击坐标点的模式对APP应用进行进行各种乱按、乱晃、乱触摸等测试操作,查看APP在此情况下的运行情况。
APP程序运行过程中遇到异常,程序强制退出。
ANR(APPlication Not Responding)表示操作未得到响应。
为垃圾内存回收机制。dalvik虚机内存使用量下降,即虚机进行了一次GC(内存回收);dalvik虚拟机内存每一次下降都是一次GC,GC点后为下降趋势。此项指标通过垃圾内存释放情况,反映APP代码质量问题,从而判断内存是否有泄漏信息。
APP测试中高级选项配置”需二次启动“。
页面没有可点击控件,点击BACK回到上一级页面进行测试。
遍历完设定的层级时,点击BACK返回。
出现输入框时,点击BACK返回。
出现随机广告或弹窗时,点击BACK返回。