根据现实情况,先虚拟个场景
客户:喂,小王,上周发布的新版本,用着用着闪退了呢,是不是有什么问题?
小王:奥?主任,能说一下进行了那些操作吗?
客户:具体的我也不是很清楚,下面具体使用的人反应上来的,情况比较紧急,能帮忙看一下哪里出的问题吗?
小王:奥,这样啊。那我马上看一下吧,解决了,给您回复。
解决方案
收集日志以帮助开发者迅速定位问题。
产品选型
集成第三方服务,最终选择了腾讯家的bugly
集成过程(iOS)
-
添加pod
pod ‘Bugly’
-
安装组件
cd ‘工程目录’
pod install -
修改AppDelete,添加bugly服务
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Bugly startWithAppId:@"此处替换为你的AppId"]; return YES;
}
问题定位测试
-
修改ReactNative代码,人为造成一个闪退
_renderMenu(item, index) { return ( <TouchableOpacity style={styles.touchableOpacityItem} onPress={this._openNewRn.bind(this, item)} key={'image' + index}> <Image style={styles.thumb} source={{uri: item.ImageUrl}}/> <Text style={styles.menuText}>{item.name + this.state.m.x}</Text> </TouchableOpacity> ); }
// 注:this.state.m.x这段代码,根本取不到值,开发模式下会有红色的警告,产品模式下直接回闪退 -
打包APP,安装,正常运行,点击闪退的页面
3. 重新打开APP
印象里,这类闪退服务,都是在“下一次启动时”上传日志
4. 打开bugy后台,查看错误信息(如图)