QCon全球软件开发大会8折优惠倒计时,购票立减¥1760!了解详情 >>> 了解详情
写点什么

Facebook Sonar:一款可视化及交互式移动应用调试工具

2018 年 6 月 17 日

Facebook Sonar 是一个开源工具集,旨在帮助开发人员以交互式和可扩展的方式检查和理解 iOS 及 Android 应用程序的结构和行为。

根据 Facebook 工程师 EmilSjölander 的说法,Sonar 基于 Stetho 的经验基础而构建,Stetho 是一个 Android 调试桥,允许开发人员使用 Chrome DevTools 调试他们的应用程序,旨在设计出一个更加可扩展的工具,也可用在 iOS 平台上。但是,并非所有 Stetho 的功能在 Sonar 中都有对应项。因此,开发人员在某些情况下应继续使用 Stetho,比如需要使用命令行工具来转储应用程序状态。

在扩展性方面,Sonar 提供了一个插件 API,开发人员可以使用这组 API 创建自己的插件来可视化和调试应用程序数据。Sonar 初始版本包含许多即用型插件,例如 Logs 用于检查应用程序的系统日志, Layout Inspector 用于检查 iOS 和 Android 应用程序的布局, Network Inspector 用于检查网络流量。这些只是 Sonar 提供的一些基本的功能。根据 Sjölander 的说法,Facebook 工程师还开发了插件来监控 GraphQL 请求、跟踪性能标记等。

要使用 Sonar,移动应用程序需要集成 Sonar SDK,Sonar SDK 负责与基于 Electron 的桌面应用程序通信,以显示调试数据。Sonar 插件包含了桌面和移动组件。桌面组件使用 React 编写,负责与远程插件进行通信并呈现数据。移动组件可以使用 Swift/Objective-C 或 Java/Kotlin 编写,并注册一些处理程序和响应来处理来自桌面组件的请求。

项目中启用Sonar 后,无论是使用Gradle 还是CocoaPods,都可以很容易地在应用程序中初始化它,如下面的例子所示:

复制代码
// Android
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
if (BuildConfig.DEBUG && SonarUtils.shouldEnableSonar(this)) {
final SonarClient client = AndroidSonarClient.getInstance(this);
client.addPlugin(new MySonarPlugin());
client.start();
}
}
}
复制代码
// iOS
#import <SonarKit/SonarClient.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#if DEBUG
SonarClient *client = [SonarClient sharedClient];
[client addPlugin:[MySonarPlugin new]];
[client start];
#endif
...
}
@end

Sonar 在 iOS 平台上的一个已知限制是它无法在Swift 应用程序中运行。

查看英文原文 Facebook Sonar Is a Visual and Interactive Debugging Tool for Mobile Apps

2018 年 6 月 17 日 10:381554
用户头像

发布了 731 篇内容, 共 377.5 次阅读, 收获喜欢 1881 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营第十周作业

子豪sirius

Week10

芯片破壁者(十二.上):“大头儿子”模式下的韩国半导体

脑极体

架构师训练营 Week 10 作业

Wancho

架构师训练营 - 第十周 - 总结

Anrika

极客大学架构师训练营

极客大学架构师训练营 --第10周

李朋

来自面试官的技术面试题

xcbeyond

Java 数据库 自我介绍 面试经验

【架构师训练营 - week10 -1】作业

早睡早起

微服务&DDD

极客大学架构师训练营

【架构师训练营】第十期作业

云064

极客大学架构师训练营 0 期 week 10 作业

chun1123

dubbo DDD

微服务&DDD&中台

dony.zhang

中台 微服务 DDD

Dubbo微服务调用时序图及微服务架构个人见解

潜默闻雨

第十周课程总结

考尔菲德

面试官:您能说说序列化和反序列化吗?是怎么实现的?什么场景下需要它?

xcbeyond

Java 面试题 序列化

微服务架构一点思考和认识

leis

Week10总结

leis

极客大学架构师训练营 0 期 week 10 学习笔记

chun1123

学习 DDD

Eureka常见问题汇总及注意事项

xcbeyond

Java SpringCloud Eureka 服务注册与发现 常见问题

架构师培训 -10 微服务、秒杀

刘敏

架构师训练营第 0 期第 10 周作业

无名氏

微服务 领域驱动设计

第十周作业

考尔菲德

微服务架构的思考

李广富

第10周 微服务&DDD 命题作业

Jaye

week 10 总结

a晖

堆栈神奇应用之CXO让我做一个计算器!!

架构师修行之路

数据结构 堆栈

week 10作业

a晖

Week 10 命题作业

Jeremy

Week 10 学习总结

Jeremy

架构师训练营Week10学习总结

Frank Zeng

架构师训练营 Week 10 总结

Wancho

移动应用开发的下一站

移动应用开发的下一站

Facebook Sonar:一款可视化及交互式移动应用调试工具-InfoQ