React Native 部署
本文档适用于纯React Native项目,若项目为原生+ React Native,请参见Android/iOS原生嵌码文档及 React Native Bundle文档。
React 配置
-
安装依赖。
npm install --save @tingyunapp/react-native-tingyunapp -
配置Transform。
-
若 React Native 版本大于等于 0.59,在根目录的 metro.config.js 的 transformer 中添加 transformer.babelTransformerPath。
-
若 React Native 版本等于 0.57 或 0.58,在根目录的 rn-cli.config.js 的 transformer 中添加 transformer.babelTransformerPath , 示例如下:
module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
babelTransformerPath: require.resolve('@tingyunapp/react-native-tingyunapp/src/NBSTransformer.js'),
},
};说明:若项目使用react-native bundle 打包且配置了--config参数,请在配置的js文件中添加 transformer.babelTransformerPath 。
-
若React Native 版本小于0.57,在项目根目录下创建
rn-cli.config.js(如果没有该文件)添加如下内容:module.exports = {
getTransformModulePath() {
return require.resolve('@tingyunapp/react-native-tingyunapp/src/NBSTransformer.js');
},
getSourceExts() {
return ['js'];
}
}说明:若项目使用react-native bundle 打包且配置了--config参数,请在配置的js文件中添加getTransformModulePath 。
-
Android Platform 配置
Gradle 配置
在 android 目录下的 project 级别的 build.gradle 文件中添加以下内容。
buildscript {
repositories {
maven { url "http://nexus2.tingyun.com/nexus/content/repositories/snapshots/" }
}
dependencies {
classpath "com.networkbench:tingyun-ea-agent-android-gradle-plugin:2.15.1"
}
}
allprojects {
repositories {
maven { url "http://nexus2.tingyun.com/nexus/content/repositories/snapshots/" }
}
}
在 app 级别的 build.gradle 文件中添加以下内容。
apply plugin:'newlens'
dependencies {
compile "com.networkbench:tingyun-ea-agent-android:2.15.1"
compile "com.networkbench.newlens.agent.android2:nbs.newlens.nativecrash:2.0.0"
}
配置权限
在 AndroidMainfest.xml 文件中增加以下的权限
<!--必要权限,用以与服务端交互-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--非必要权限,用以获取当前设备的网络状态和WiFi状态,如:2G、3G、4G、WiFi,建议添加-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--非必要权限,用以获取 targentVersion 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"/>
配置混淆
在 proguard 混淆配置文件中增加以下内容,以免基调听云App SDK 不可用。
# ProGuard configurationsfor NetworkBench Lens
-keep class com.networkbench.** { *; }
-dontwarn com.networkbench.**
-keepattributes Exceptions, Signature, InnerClasses
# End NetworkBench Lens
若需要保留行号信息,请在 proguard.cfg 中添加以下内容。
-keepattributes SourceFile,LineNumberTable
采集react-native-webview数据配置
若项目中使用了 react-native-webview ,采集其 WebView 数据需在 react-native-webview 的 build.gradle 文件中添加以下内容。
dependencies {
provided "com.networkbench:tingyun-ea-agent-android:2.15.1"
}