首页 » 软件开发 » 【Flutter技术】如何识别一个应用是原生框架开发或Flutter开发?(开发框架技术如何识别边界)

【Flutter技术】如何识别一个应用是原生框架开发或Flutter开发?(开发框架技术如何识别边界)

萌界大人物 2024-07-25 05:11:09 0

扫一扫用手机浏览

文章目录 [+]

当前,我们手机上以及各大应用市场有大量的应用采用了Flutter跨平台技术框架,例如,微信、微博、闲鱼等等。
由于Flutter框架出色的性能表现,可能不被大家所感知,接下来,跟大家分享几个鉴别一个APP是否使用了Flutter开发的方法。

1 - 双指滚动

一个比较方便、且非常快速的方法就是打开一个可滚动的页面(可以用闲鱼的商品详情页面测试),用双指或者三指滑动,如果滚动的速度加快,是用单指滚动的两倍或者三倍,那么这个页面基本可以确定是用Flutter开发的。
大家可以打开手机上应用尝试一下,例如闲鱼商品的详情页面。

这方法的原理是源于Flutter的一个祖传BUG ---> [#11884] Scrolling with two fingers scrolls twice as fast,在Android和iOS平台都是如此的变现,因此可以用来检查应用是否使用了Flutter开发。

【Flutter技术】如何识别一个应用是原生框架开发或Flutter开发?(开发框架技术如何识别边界) 软件开发
(图片来自网络侵删)

当笔者看到这个BUG之后,惊掉了下巴(2017年的ISSUE,2023年才被修复!
),于是尝试修复了这个BUG ---> [#136708] Introduce multi-touch drag strategies for DragGestureRecognizer,该Patch引入了一个新的属性MultitouchDragStrategy,可以自定义多指滚动的行为,同时将系统默认行为修改为Android的表现,并计划很快补充iOS的行为。

该Patch当前已经合入master分支,在release到stable分支之前,通过双指滚动来鉴定是否使用Flutter开发依然是最便捷的方法 :)

2 - 显示布局边界 + dumpsys activity

该方法适用于Android手机,打开手机的“开发者模式”,在设置页面搜索“边界”,找到“显示布局边界”并打开:

对于原生开发的Android应用,可以查看到所有元素的边界,例如闲鱼首页采用原生开发:

当进入分类页面之后,除了手机SystemUI可以看见元素的边界,页面内容的元素系统是识别不到边界的:

此时,我们通过adb shell命令dumpsys activity activities,可以看到TOP的Activity是MainActivity:

以上识别的原理为:Flutter projects的默认入口为MainActivity,它又继承于FlutterActivity,而它的内部实现为SurfaceView,Flutter通过canvas自绘所有控件,正因为如此,Android是无法识别FlutterView里的元素边界的。

3 - 日志

一般来说,集成了Flutter框架的应用,在log里会有相关Flutter日志的输出,例如,我们在操作 微信 的时候,logcat里会有flutter日志的输出:

4 - 安装包文件

我们也可以通过安装包里是否集成了Flutter相关lib来推断是否使用了Flutter框架

以Android手机为例:

shell复制代码1,提取apk,方法如下:# 首先确保已经将ADB工具添加到系统路径中$ adb devices # 查看设备列表,确认设备正常连接 # 然后使用以下命令获取APK的位置信息$ adb shell pm path com.example.appnamepackage:/data/app/com.example.appname-1234567890abcdefg/base.apk # 最后使用以下命令复制APK到计算机上指定目录$ adb pull /data/app/com.example.appname-1234567890abcdefg/base.apk ~/Desktop/my_app.apk

提取了apk文件之后,可以通过7-zip提取解压,然后搜索‘flutter’相关文件,如果使用了Flutter框架,会有flutter相关lib文件(闲鱼APK):

5 - FlutterShark

可以在Android手机上安装FlutterShark应用,在赋予它QUERY_ALL_PACKAGES权限后,他可以展示手机中所有使用了Flutter框架的应用:

同时,FlutterShark还支持显示某个应用所依赖的三方package:

总结

以上跟大家分享了几种识别Flutter应用的方法,如果你还知道有其它的方法,请在评论区留言吧 : )

作者长期活跃在Flutter开源社区,欢迎大家一起参与开源社区的共建,如果您也有意愿参与Flutter社区的贡献,可以与作者联系。
-->GITHUB

您也许还对这些Flutter技术分享感兴趣:

社区说|从Flutter Key 深入剖析UI架构设计原理社区说|Flutter 长列表 Lazy Loading 机制解析【Flutter技术】Scrollbar实现原理解析【Flutter技术】ScrollMetricsNotification的诞生记【Flutter技术】ListView即将迎来重要更新,这些场景的性能将大大提升

作者:xubaolin 链接:https://juejin.cn/post/7309065017191088143 来源:稀土掘金 著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。

标签:

相关文章

C语言表白代码,编程之美,爱意绵绵

在这个科技飞速发展的时代,编程已经成为了我们生活中不可或缺的一部分。而C语言作为一门经典的编程语言,更是备受青睐。今天,就让我们用...

软件开发 2024-12-04 阅读9 评论0

16倍速生活方式,高效工作与生活的完美融合

随着科技的飞速发展,我们的生活节奏也在不断加快。在这个快节奏的时代,如何高效地平衡工作与生活,成为了许多人关注的焦点。本文将探讨1...

软件开发 2024-12-04 阅读8 评论0

C语言编程猜数游戏,编程与娱乐的完美融合

在科技日新月异的今天,编程已经成为一项重要的技能。作为计算机科学的基础,编程不仅可以锻炼我们的逻辑思维,还能提高我们的动手能力。而...

软件开发 2024-12-04 阅读8 评论0

C语言病毒代码介绍,技术与道德的双重挑战

随着信息技术的飞速发展,网络安全问题日益凸显。病毒作为一种恶意软件,严重威胁着计算机系统的稳定运行。C语言作为一种功能强大的编程语...

软件开发 2024-12-04 阅读6 评论0