首页 帮助中心 听云App Cordova部署

SDK部署-Cordova方式

1、Cordova工程相关依赖构建

1、打开项目android目录下的build.gradle文件。

2、添加代码。

apply plugin:’newlens’

3、在buildscript的dependencies中添加以下代码。

maven { url "http://nexus2.tingyun.com/nexus/content/repositories/snapshots/" }

4、在buildscript的dependencies中添加以下代码:

classpath 'com.networkbench.newlens.agent.android:agent-gradle-plugin:TingYun_Version'//TingYun_Version为当前听云APP版本号

5、在allprojects的repositories中添加以下代码。

maven { url "http://nexus2.tingyun.com/nexus/content/repositories/snapshots/" }

6、在dependencies中添加以下代码。

compile 'com.networkbench.newlens.agent.android:nbs.newlens.agent:TingYun_Version'//TingYun_Version为当前听云APP版本号

7、采集Native Crash需在dependencies中添加以下代码。

compile 'com.networkbench.newlens.agent.android:nbs.newlens.nativecrash:"TingYun_NDK_Version" 
// TingYun_NDK_Version为当前听云APP NDK版本号

8、打开CordovaLib的build.gradle文件。

9、添加以下代码。

dependencies {
    provided 'com.networkbench.newlens.agent.android:nbs.newlens.agent:TingYun_Version'
//此处为provided依赖,TingYun_Version为当前听云APP版本号
}

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);
        }
});

注意:

  • Cordova框架内部已经设置了WebViewClient和WebChromeClient,需在Cordova框架WebChromeClient的onProgressChanged方法中调用NBSWebChromeClient.initJSMonitor(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、若需要保留行号信息,请在混淆配置文件中添加以下内容。

-keepattributes SourceFile,LineNumberTable

8、使用Cordova命令打包编译

cordova 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