首页 帮助中心 听云App Gradle本地部署

SDK部署-Gradle本地方式

1、工程相关依赖构建

注意:
操作员需要确保已经安装了Gradle构建环境和AS开发环境。

1、打开项目根目录下的build.gradle(Project)文件。

2、在buildscript模块中加入代码。

classpath fileTree(dir: 'E:\\ rewriter', include: ['*.jar'])
//请将dir后的路径替换为实际rewriter的路径(支持相对路径)
//此为听云SDK的编译插件,不会打包到apk文件中

3、打开app目录下的build.gradle文件。

4、将nbs.newlens.agent.jar复制到libs目录下,使用:

compile fileTree(include: ['*.jar'], dir: 'libs')

或使用:

compile files('libs/nbs.newlens.agent.jar')

说明:以上两种种方式使用任一一种均可引入SDK,不可同时使用,否则可能会因重复引用而编译失败。

5、添加听云插件。

apply plugin:'newlens'

7、若需要采集Native崩溃,需配置添加听云NDK。

allprojects {
    repositories {
        flatDir {
            dirs 'libs'//本地libs文件夹作为repositories 
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name: 'nbs.newlens.nativecrash-1.2.1', ext: 'aar')
//需将nbs.newlens.nativecrash-1.2.1.aar复制到libs目录下,此处1.2.1为示例版本,实际版本号以官网下载的nbs.newlens.nativecrash.aar版本为准
}

2、插入初始化探针代码

1、在嵌码项目工程的启动页面“Application”中import NBSAppAgent类。

import com.networkbench.agent.impl.NBSAppAgent;

2、在“Application”中的onCreate()方法(如未找到该方法请新增onCreate())中初始化Android SDK。

NBSAppAgent.setLicenseKey("AppKey").withLocationServiceEnabled(true).startInApplication(this.getApplicationContext());
//Appkey请从官网获取

注意:

  • 若无需采集地理位置,请使用以下配置。

NBSAppAgent.setLicenseKey("AppKey").withLocationServiceEnabled(false).start(this.getApplicationContext()); //Appkey请从官网获取

  • SDK默认采集所有进程的数据,若只想采集主进程数据,请使用以下配置。
NBSAppAgent.setLicenseKey("AppKey").withOnlyMainProcEnabled(true).start(this.getApplicationContext());
//Appkey请从官网获取

3、采集 WebView 数据配置

1、采集WebView数据需调用setWebViewClient方法,如嵌码App中未调用该方法,请添加如下内容:

webview.setWebViewClient(new WebViewClient(){});

2、采集WebView数据需在WebChromeClient的onProgressChanged函数中调用接口:
NBSWebChromeClient.initJSMonitor(view, newProgress);

代码示例如下:

webview.setWebChromeClient(new WebChromeClient(){
	@Override
        public void onProgressChanged(WebView view, int newProgress) {
        	NBSWebChromeClient.initJSMonitor(view, newProgress);
            super.onProgressChanged(view, newProgress);
        }
});

4、采集X5 WebView 数据配置

1、采集X5WebView数据需在生成X5WebView实例之后调用addWebViewBridge方法,若App中未调用该方法,请添加如下内容:

X5WebView x5WebView = new X5WebView(this, null);//生成X5WebView实例
NBSWebChromeX5Client.addWebViewBridge(x5WebView);//调用addWebViewBridge方法,将X5实例传入

2、采集 X5 WebView 数据需调用setWebViewClient方法,若App中未调用该方法,请添加如下内容:

webview.setWebViewClient(new WebViewClient(){});

3、采集 X5 WebView 数据需在WebChromeClient的onProgressChanged函数中调用接口:

NBSWebChromeX5Client.initJSMonitorX5(view, newProgress);

代码示例如下:

X5webview.setWebChromeClient(new WebChromeClient(){
	@Override
        public void onProgressChanged(WebView view, int newProgress) {
        	NBSWebChromeX5Client.initJSMonitorX5(view, newProgress);
            super.onProgressChanged(view, newProgress);
        }
});

5、配置应用权限

注意:
由于听云SDK嵌码会解析AndroidMainfest.xml文件,请确保文件中不要存在非UTF-8字符(例如,注释中的中文引号“”),否则可能导致SDK无法对Activity进行自动嵌码。

  请在待监测的App工程的AndroidMainfest.xml文件中增加以下的权限:

<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_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<!--使用可视化操作命名功能需配置悬浮窗权限-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>
<!--获取基站信息需配置ACCESS_COARSE_LOCATION权限-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

6、可视化操作命名功能配置

1、获取 URL Scheme。
当您在听云报表“新建App”时,您可以看到 URL Scheme。

您也可以随时进入“修改配置”页面中找到您的应用对应的URL Scheme。

2、可视化操作命名需要在AndroidMainfest.xml文件的启动Actvitiy增加scheme配置。
示例如下:

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
  <!--请添加这里的整个intent-filter区块,并确保其中只有一个data字段-->
            <intent-filter>
                <data android:scheme="tingyun.xxxx" />
                <!--请将scheme中的“tingyun.xxxx”替换为您应用的URL Scheme-->
                <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字段-->
 </activity>

3、设置控件ID。

  • 听云SDK会采集用户操作的控件ID,建议您在Layout文件中添加控件ID。对于动态生成的控件,可以使用 setViewId() 方法对它设置唯一的ID。示例如下:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout layout = findViewById(R.id.layout); final Button button = new Button(this); button.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); button.setText("Login"); //viewId最多包含32个字符,支持英文、数字、下划线 NBSAppAgent.setViewId(button, "bt_login"); Layout.addView(button); }

  • 对于ListView的item点击事件,听云SDK默认采集ListView的控件ID,若需要区分不同item点击,可以在Adapter的getVIew()方法中使用setViewId()方法对item设置ID。示例如下:

public View getView(int i, View convertView, ViewGroup parent) { MyViewHolder holder = null; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.page_item_gridview, parent, false); //加载布局 holder = new MyViewHolder(); holder.iv = convertView.findViewById(R.id.page_item_grid_iv); holder.tv = convertView.findViewById(R.id.page_item_grid_tv); convertView.setTag(holder); } else { holder = (MyViewHolder) convertView.getTag(); } Glide.with(mContext).load(list.get(i).getUrl()).into(holder.iv); holder.tv.setText("图片" + i); NBSAppAgent.setViewId(convertView,"图片"+i); return convertView; }

7、配置混淆

1、发布前请在proguard混淆配置文件中增加以下内容,以免tingyunSDK不可用。

# ProGuard configurationsfor NetworkBench Lens
-keep class com.networkbench.** { *; }
-dontwarn com.networkbench.**
-keepattributes Exceptions, Signature, InnerClasses
# End NetworkBench Lens

2、若需要保留行号信息,请在proguard.cfg 中添加以下内容。

-keepattributes SourceFile,LineNumberTable

8、使用Gradle命令打包编译

gradle clean build

9、嵌码验证

1、数据收集服务器校验。

2、嵌码完成后可通过“LogCat”查看听云SDK日志输出结果,用以进行数据收集服务器校验TAG为NBSAgent,标准日志输出结果如下所示:

NBSAgent start
NBSAgent enabled
NBSAgent V “TingYun_Version” //TingYun_Version 为当前SDK的版本号
connect success

3、数据功能完整性校验。

嵌码完成后可通过“LogCat”查看听云SDK日志输出结果,用以进行数据功能完整性校验TAG为TingYun,标准日志输出结果如下所示:

D/TingYun: Network Switch is true
D/TingYun: UI Switch is true
D/TingYun: Crash switch is true
D/TingYun: webView switch is true
D/TingYun: ANR monitor switch is true
D/TingYun: UserAction Switch  is true
D/TingYun: cdnSwitch Switch  is true