一、本地引入包流程
(一)本地引入包内容
(二)本地引入包操作步骤
将 【probe-android-sdk】目录里面所有的aar包复制到嵌码项目工程(App级别)的 libs 目录下
二、添加插件
(一)在 project 级别的 build.gradle 文件中plugins {}
上下分别插入以下内容:
buildscript {
dependencies {
classpath fileTree(dir: 'rewriter', include: ['*.jar'])//将 sdk 的 rewriter
//文件夹解压到 project 级别的 build.gradle 文件同级目录下,rewriter 文件夹中的 jar 包仅
//在编译时使用,不会打包到 apk 中
}
}
------------这两个引用中间是原配置plugins {}
的位置--------------
allprojects {
repositories {
flatDir {
dirs 'libs'// 集成本地 aar 包需添加此配置
}
}
}
(二)在 app 级别的 build.gradle 文件中添加以下内容
apply plugin:'newlens'// 放在 apply plugin: 'com.android.application' 下面
dependencies {
// 采集natvie crash
implementation(name: 'nbs.newlens.nativecrash', ext: 'aar')
// 日志回捞
implementation(name: 'nbs.newlens.android.log', ext: 'aar')
// 采集 OOM
implementation(name: 'tingyun-javaleak', ext: 'aar')
implementation(name: 'tingyun-basemonitor', ext: 'aar')
implementation(name: 'tingyun-android-base', ext: 'aar')
implementation(name: 'tingyun-dump', ext: 'aar')
// 探针sdk
implementation(name: 'tingyun-ea-agent-android', ext: 'aar')
implementation(name: 'probe-sdk-1.0.5', ext: 'aar')
}
三、初始化 SDK
(一)在 Application 中的 onCreate() 方法初始化 SDK
//"AppKey" 请从基调听云平台获取
//"host" 为基调听云平台「Redirect」服务器地址,无需添加协议头
NBSAppAgent.setLicenseKey("92de9f9063d5474690b68502b71767d6").setRedirectHost("203.0.105.6:10100").start(this.getApplicationContext());
(二)SDK 默认以 Https 上传数据,若服务端只支持 Http,需设置 「setHttpEnabled(true)」
NBSAppAgent.setLicenseKey("92de9f9063d5474690b68502b71767d6").setRedirectHost("203.0.105.6:10100").setHttpEnabled(true).start(this.getApplicationContext());
(三)初始化SDK使用HTTP无法连接服务器
SDK 默认以 HTTPS 上传数据,若服务端只支持 HTTP,需设置 「setHttpEnabled(true)」。Android 9.0 及以上版本会限制 HTTP 请求,可以通过添加 network_security_config.xml 配置解决。
- 在res/xml/目录,然后新建
network_security_config.xml
文件。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
- 在清单文件的 application 中添加
networkSecurityConfig
。
android:networkSecurityConfig="@xml/network_security_config"
四、权限配置说明
SDK 为了与服务端交互「网络权限」为必要权限
<!--必要权限,用以与服务端交互-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--非必要权限,用以获取当前设备的网络状态和WiFi状态,如:3G、4G、5G、WiFi,建议添加-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--非必要权限,用以获取 targetSdkVersion 29 及以上、 Android 10 及以上设备的网络状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--非必要权限,用以使用「可视化操作命名功能」-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>
<!--非必要权限,用以获取当前移动网络连接的基站信息-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
五、开启可视化命名(可选配置)
(一)获取 Scheme-在应用「设置」中的「修改设置」中选择【URL Scheme】
(二)在 AndroidMainfest.xml 文件的「LAUNCHER Actvitiy」中增加 scheme 配置,如下所示:
<!--请添加这里的整个intent-filter区块,并确保其中只有一个data字段-->
<intent-filter>
<data android:scheme="tingyun.7050" />
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
<!--请添加这里的整个intent-filter区块,并确保其中只有一个data字段-->
六、首次启动开启模块功能开关
出于兼容性考虑, 首次启动 SDK 仅在调试模式下开启全部功能模块,非调试模式下仅开启崩溃模块,可通过以下接口开启 SDK 的模块开关
模块功能开关接口
/*
SDK首次初始化由于尚未与基调听云平台交互,默认模块开关仅开启「崩溃模块」,可以通过本接口自定义首次启动开启的模块。
@warning:调用该接口设置启动选项,SDK首次启动不受基调听云平台开关控制
*/
NBSAppAgent.setStartOption(int option);
代码示例
//在SDK初始化时调用, 首次启动全部功能模块
NBSAppAgent.setLicenseKey("92de9f9063d5474690b68502b71767d6").setRedirectHost("203.0.105.6:10100").setStartOption(16383).start(this.getApplicationContext());//首次初始化开启全部功能