- 博客(541)
- 资源 (4)
- 收藏
- 关注
转载 组件化除了使用melos还有其他方案吗?像Android一样自行实现组件化
组件化之前我们都是把所有的逻辑,封装,工具类,相关页面、控制器都在 app 模块中,我们是以不同的文件夹来区分的,现在我们要拆分组件我们只需要把对应的文件夹转移到单独的组件中。同时,我们还需要创建对应的独立运行模块的 flutter 项目,大致的结构如图:上面的 lib 是我们组件的真正页面与逻辑,而下面的 lib 则是 独立运行模块的入口与单独运行的入口页面,它只是在独立运行的时候才会生效,当我们运行宿主 app 整体运行的时候是不参与编译的。
2025-01-10 17:22:24
32
转载 Flutter性能优化:图片占位符、预缓存和禁用导航过渡动画
希望你在本文中找到一些有用的技巧来提高 Flutter web app 的感知性能。在中,我们禁用了 web 端的导航过渡动画和使用了图片占位符来避免加载页面时布局的跳动,其中的实现和本文所描述的是类似,如果你想看代码,可以在GitHub上找到。这篇文章是我们在提高性能中学习到的系列内容之一。希望对你有所帮助,能让你学到可以在你的 Flutter app 中用上的内容。Flutter 性能优化系列之 tree shaking 和延迟加载。
2024-12-15 21:47:26
49
转载 「React Native」与「Android」的交互方式总结
创建自定义 Module 其实就是将 RN 希望调用的原生功能封装成中间件的形式,这个中间件需要继承 ReactContextBaseJavaModule 类,并重写它的 getName() 方法。getName() 方法返回了 JS 可以访问的自定义 Module 名称,使得我们在 JS 端可以通过NativeModules.自定义 Module 名称的形式访问这个中间件。
2024-11-26 22:54:34
250
转载 【语音助手】语音识别框架
这些TTS框架和服务可以满足不同的需求,有的适合在云端部署,有的提供丰富的音色选择,有的适合定制和在本地部署。PyTorch / PyTorch Text: PyTorch 是另一个领先的开源机器学习库, PyTorch Text 提供了各种NLP工具和模型的支持,也是研究和开发NLP模型的流行选择。Flite (Festival-Lite): Flite 是一个轻量级的TTS系统,是 Festival 语音合成系统的精简版本,它专注于提供在资源受限环境下高效的语音合成。
2024-10-11 20:51:46
291
1
原创 flutter 版本自动更新调研
工具包以及语言依赖:WinSparkle的UI使用本地Windows控制器的且它是在单独的线程中运行的,因此不用担心和自己所选择的GUI工具(wxWidgets,QT,WinForms,WPF等)产生兼容性问题。Sparkle的原理是根据提前配置好的xml文件地址,每次启动后解析xml,看看有没有比当前版本新的数据,有的话提示更新。只需要包含该文件即可,并且它的API都是C语言形式的,可以用任何语言来使用它。),请备份你的私钥并确保其安全,并将公钥作为 Windows 资源添加到项目中。
2024-07-17 14:39:22
1447
原创 Flutter热更新技术探索
原生 APP(例如:Android & IOS)的热更新需求已经比较成熟,但 Flutter 技术栈目前还缺少类似的技术方案,因此 Flutter 研发团队,也需要类似的热更新技术。根据以上的分析,我们知道了 Flutter 业务代码的数据结构,也知道了在运行时如何加载,因此我们只需要在编译时做更改,产生自己需要的代码段,和数据段文件。4, APP 启动时访问后端接口,根据参数(app 的版本号,补丁包版本号,md5,flutter SDK 版本号,Engine 版本号)拉取补丁包;2)页面动态组件框架;
2024-07-17 14:28:57
1618
原创 抠图需求技术方案调研
图片裁剪:Flutter ClipPath,image_editor: ^1.3.0,flutter_customizable_image_croppper: ^0.1.7,custom_clippers: ^2.0.0 ,flutter_custom_clippers: ^2.1.0。客户端在用户圈定范围执行动画,同时大模型回传 客户端最终效果图 ,动画结束展示抠图完成结果。截屏用户圈定范围给 大模型 ,大模型识别出准确 区域并绘制出边界回传给客户端 展示。根据用户选择范围,展示AI识别范围。
2024-07-17 12:08:31
650
原创 Flutter 开源库学习
idaretobe/MTBBarcodeScanner Objective-Cidaretobe/qr.widget Dartidaretobe/qr.dart Dartidaretobe/wechat_scan Dartidaretobe/hms-flutter-plugin Javaidaretobe/mobile_scanner Dartidaretobe/flutter_staggered_grid_view DartCreated 4 repositoriesidaretobe/ApkEditor
2024-07-17 12:02:34
1165
原创 Flutter 状态管理调研总结
钩子是一种用来管理 Widget 生命周期的新对象,以减少重复代码、增加组件间复用性,允许将视图逻辑提取到通用的用例中并重用,这使得编写小部件更快、更容易。适用于需要在多个组件中共享状态逻辑的场景,例如管理动画控制器、处理用户输入、管理生命周期等。可以帮助开发者更好地组织和管理Widget状态和生命周期。它可以提高代码的可读性和可维护性,并且减少了使用传统的 StatefulWidget 时的样板代码量。Flutter Hooks 相对于传统的减少样板代码。
2024-07-17 11:16:03
1016
转载 Hummer 引擎优化系列 - PlatformView的演进历史与优化探索
官方宣称,Flutter 3.0 是一个重大的版本更新,它带来了许多新功能和改进,其中最值得关注的是对 Flutter 的桌面稳定支持。但,这对 PlatformView 功能来说似乎是个例外:截止Flutter 3.7.9,PlatformView仍然仅支持移动端,桌面端尚不可用;Android端新引入的TLHC模式,使得PlatformView的模式选择变得异常混乱和复杂;iOS的可变刷新率暴露了Hybrid Composition模式的缺陷;
2024-05-29 16:51:23
231
转载 搞了个图像描边的需求
这套方案做 demo 的时候,感觉效果还行,一点点毛疵,以为是条件判断不严谨,以为后续调整下可以解决,还有个严重的问题,就是这个方案计算量太大,图片分辨率 1080 左右,表现就有点卡,尤其是拖动滑竿调整,描边粗细 、间距 ,实时渲染有明显的卡顿,但是我们又不能降低图片质量,所以这个方案最终也就是停留在 demo 阶段了。接下来就需求其他的方案,大名鼎鼎的 OpenCV 出场了,参考官方文档,编译产物,接入 app 调试下来就能获取正确的结果了,这里就不多说了,直接看下代码,对应的节点有注释说明。
2024-02-18 15:17:08
246
转载 Android dependency 监控实现
有时候第三方库改到了或者升级了,我们并不能及时发现,往往需要等到出问题的时候,去排查的时候,才发现是某个依赖版本改动导致的。当前本地分支落后远程分支, 且 local 分支有 commit 的时候,pull 或者 push 的时候,会产生一个 merge 节点,这时候 parent 会产生两个点,我们去 parent[1] 即可。然而这些情况就是我们往往所忽略的,即使有代码 review,有时候也会漏了。Gialab push 或者 merge 的时候,我们需要感知到,接着执行特定的 task,进行计算。
2023-12-18 20:32:36
269
转载 Flutter XUpdate 是否支持苹果iOS版本更新
通过按照上述步骤配置Flutter和iOS工程,并使用`flutter_x。在上述代码中,将http://your_update_url替换为你的版本更新接口的URL地址。除了检查更新外,flutter_xupdate库还提供了其他API,如强制更新、静默下载、手动下载等功能。首先,确保你已经安装了Flutter SDK,并创建了一个Flutter工程。在Flutter的代码中,你可以使用flutter_xupdate库提供的API来进行版本更新操作。导入flutter_xupdate库。
2023-09-26 16:57:09
361
转载 Flutter之 FVM 版本管理
使用 Flutter 构建应用程序,我们一般会选用 stable 版本的 flutter,因为它是个稳定版本。如果你要用 Flutter 尝试写个 web 应用,就必须得使用 beta 版本,因为现在只有 beta 版本支持 web 开发。这就意味着,在 web 开发和应用程序开发的时候,你需要卸载当前的版本,然后去安装另外一个版本。这是个很耗时的操作。可能你的网速快,机器性能好,不在乎这么点时间。但如果需要经常性切换 Flutter 版本,这样的操作就很痛苦了。
2023-09-18 16:17:29
1504
转载 Flutter 3.13 全新生命周期 AppLifecycleListener
最后,AppLifecycleState 还提供了 onExitRequested 方法,但是它并不支持类似 Android 的 back 返回拦截场景,而是需要通过 ServicesBinding.instance.exitApplication(AppExitType exitType) 触发的退出请求,才可以被 onExitRequested 拦截,前提是调用时传入了 AppExitType.cancelable。和老的相比又有什么不同?(分屏、被遮挡、画中画)
2023-09-13 17:47:18
336
转载 Flutter 队列任务的实现
在电商的应用中,最常见的就是在首页或完成某事件之后,弹出一堆的活动/广告。假如重叠弹出,很丑,给用户的体验也不好,所以一般都会依次依条件的弹出。下面讲讲我是怎么实现一个方便的队列任务管理。实例化TaskQueue复制代码添加任务并开始任务});复制代码注意设置条件要返回bool。还可以加入类似延时等操作,跟条件一样配置即可。太久的操作不要像上面一样写在condition中,可能执行完之后又不满足了,根据具体情况考虑。一般来说类似弹窗的return或就可以等待弹窗页面结束,再进行下一个。
2023-09-13 14:38:05
578
转载 Flutter原理篇-聊一聊future,await,事件队列,微任务
好了,现在对于flutter的Future await事件队列, 微任务目前已经讲解完毕了,我们先从异步运行的基础(Event Loop)开始,首先介绍了异步运行机制,到Future;去掉了fun的async关键字,并且改了fun函数里面的return的代码,让他返回一个future,执行顺序为什么变了呢,很简单啊,因为return的Future是通过构造函数实现的,这种Future就是一个EventQueue事件,他的优先级在微队列下面,所以最后执行。Dart的事件循和JavaScript的基本一样。
2023-09-13 12:03:29
954
转载 Flutter文件操作
压缩前使用ZipFileEncoder先声明处理压缩的对象,调用该对象的zipDirectory方法压缩文件,该方法接受两个参数,第一个是要压缩文件/文件夹的路径,第二个是压缩包的保存路径;我们通过File和Directory来创建文件和文件夹时首先要获取到应用的相关路径,不然会报错;Directory对象提供listSync()方法获取文件夹里的内容,该方法返回一个数组;文件和文件夹都通过delete删除,
2023-09-11 12:07:49
880
转载 WebRTC 系列之音频会话管理
WebRTC 提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:Windows,Mac,iOS,Android。下文主要介绍音频会话类别 Category 在不同场景的应用,针对不同的 Category 的区别,可以对应上文表一详细查看。熟练掌握 AVAudioSession 的 Category、CategoryOption、Mode 的各个含义和了解 iPhone、iPad的硬件构造,对于理解 iOS 音频至关重要,上文如有不正确之处,欢迎指出,也欢迎交流。
2023-09-11 11:37:34
255
转载 基于flutter sound插件实现录音与播放功能
这个插件可以实现iOS和Android平台的录音和播放功能。即可以播放本地音频文件,也可以播放远程URL文件。在这里我讲介绍这个插件的用法以及碰到的一些常见问题如何解决。flutter_sound支持多种录音格式flutter_sound支持多种播放格式flutter_sound支持音频振幅大小上面介绍了如何录音,如何播放本地和远程音频文件,以及如何实现动画,在录制完音频文件后如何上传,这些都是我们平常使用这个功能会遇到的问题。在使用的过程中遇到的问题也有列出,希望对您有所帮助。
2023-07-26 10:56:19
5682
4
转载 不懂编程也能开发跨境app,傻瓜式app开发工具
如果你是一个天天忙碌的老板,而且对编程和代码都不了解,但是还需要一款跨境app,AppInstitute的很多功能都可以帮您完成app的开发和制作。对任何喜欢开发跨境app的人士来说,基本都要提前了解制作运行一个app的成本,可能还需要了解开发制作一款app的细节工作。一般来说,专业的app开发团队开发的app都是动态的,而且交互性比较强。AppInstitute在制作app时是不收费的,不过如果开发人员要发布新开发的跨境app,就必须缴纳一定的费用了。而且在发布新app以后,赚钱的机会也很多。
2023-07-21 14:34:18
1409
转载 Android C/C++ 内存泄漏分析 unreachable
libmemunreachable 通过 C/C++内存模型结合可达性算法,将栈 stack、全局/静态存储区 (.bss 段和.data 段)作为 GC Root 节点,判断堆 heap 中的内存是否被 GC Root 所持有,如果不被直接或间接持有,则被判定为泄漏(别较真,不一定要 100%的判断 C/C++的内存泄漏,而是可以分析可能存在的潜在泄漏)。随着对客户端稳定性质量的不断深入,部分的重点、难点问题逐步治理,内存质量逐步成为了影响客户端质量的最突出的问题之一。核心函数 DetectLeaks。
2023-07-21 14:16:48
344
转载 Android网络监控方案
此外,通过自定义gradle plugin的方式,为各个网络库实现Injector和开关,控制在应用构建阶段将Interceptor中各个采集的方法注入到对应网络库字节码的埋点位置,从而实现在运行时网络请求各个阶段采集需要的数据。• 上报:由于APM产生的日志较多,为了控制并发数和内存,我们使用了一个业务共享的线程池和调度队列。事件序列数据主要是收集网络请求各阶段的监控事件的信息,另外对于特定网络库的一些特殊的事件的监控,比如okhttp的连接复用、自动重定向和失败重试等对网络耗时有影响的机制。
2023-07-21 13:44:26
487
转载 【第三方开源库】-->那些酷炫的工具类、热修复、插件化开源库整理 原创
简介: packer-ng-plugin 是下一代Android渠道打包工具Gradle插件,支持极速打包,100个渠道包只需要10秒钟,速度是 gradle-packer-plugin 的300倍以上,可方便的用于CI系统集成,同时提供命令行打包脚本,渠道读取提供Python和C语言的实现。ArgusAPM是360移动端产品使用的可视化性能监控平台,为移动端APP提供性能监控与管理,可以迅速发现和定位各类APP性能和使用问题,帮助APP不断的提升用户体验。它主要提供了解耦化、组件化、动态性的支持。
2023-07-21 13:41:51
341
原创 Android 技术书签栏
GitHub - bytedance/memory-leak-detectorProbe:Android线上OOM问题定位组件 - 简书(379条消息) Probe:Android线上OOM问题定位组件_美团技术团队的博客-CSDN博客(380条消息) Robust 2.0:支持Android R8的升级版热修复框架_robust热更新_美团技术团队的博客-CSDN博客货拉拉Android稳定性治理实践!货拉拉Android稳定性治理 - 掘金(378条消息) KOOM原理讲解(上)-JAVA内存分析_失落
2023-07-21 10:48:10
257
转载 不一样的 Android 堆栈抓取方案
随着需求的不断迭代,APP 遇到的问题越来越多,卡顿,ANR,异常等等问题接踵而来,那么简简单单某个时刻的堆栈信息已经不能满足我们的需求了,我们的目光逐渐转移到了每个时刻的堆栈上,如果能获取一个时间段内,每个时刻的堆栈信息,那么卡顿,以及 ANR 的问题也将被解决。例如,它可以用来找出当前线程堆栈上哪些函数调用了特定函数,或者收集特定函数的参数。我们是否可以简化这个流程,提高抓栈效率呢,理论上是可以的,我们只需要自己将这个流程复写一份,然后抛弃部分的数据,优化数据获取时间,同样可以做到更高效的抓栈体验。
2023-07-20 15:40:28
2163
转载 各大厂与卡顿和ANR的战斗记录篇
纵观各厂在卡顿和ANR 方面做的探索和方案,我们可以看出,思路上都有重合,在细节方面做了很多针对自身业务和实际情况做的针对性的优化和个性化的开发。总的来说逃不出以下几个步骤ANR的感知上:业界主流的方案就是监听SIGQUIT 信号+误报过滤。腾讯技术团队,提到的OV 厂商对ANR的处理并不是常规的处理,而是做闪退处理,所以要以check主线程正在处理的 Message,延误时间作为辅助防止漏报。
2023-07-20 10:48:41
699
转载 KOOM(高性能线上内存监控方案
fork进程采用的是“Copy On Write”技术,只有在进行写入操作时,才会为子进程拷贝分配独立的内存空间,默认情况下,子进程可以和父进程共享同个内存空间,所以,当我们要执行dumpHprofData方法时,可以先fork一个子进程,它拥有父进程的内存副本,然后在子进程中执行dumpHprofData方法,而父进程则可以正常继续运行。如此往复,当mOverThresholdCount超出我们设置的阈值(例如3次),我们就认定系统发生了内存泄漏,这个时候就需要告警,并dump内存快照分析问题。
2023-07-19 16:49:16
484
转载 现代化 Android 开发:基础架构
Android开发经过 10 多年的发展,技术在不断更迭,软件复杂度也在不断提升。到目前为止,虽然核心需求越来越少,但是对开发速度的要求越来越高。高可用、流畅的 UI、完善的监控体系等都是现在的必备要求了。国内卷的方向又还包括了跨平台、动态化、模块化。目前的整体感觉就是,移动开发基本是奄奄一息了。不过也不用过于悲观:一是依旧有很多存量的 App 堪称屎山,是需要有维护人员的,就跟现在很多人去卷framework层一样,千万行代码中找bug。二是AI。
2023-07-19 11:31:57
77
转载 WKCrashSDK - crash拦截工具
由于线上始终出现部分未知原因崩溃问题,遂遵循网易出的crash拦截机制,自实现了一个crash拦截工具,现已上线运行数月,累计拦截闪退···总之很多啦···
2023-07-19 11:21:20
115
转载 Android动态加载so!
比如还在下载当中,其实很简单,这个时候我们字节码插桩就派上用场了,只要我们把System.load替换为我们自定义的加载so逻辑,进行一定的逻辑处理就可以了,嘿嘿,因为笔者之前就有写一个字节码插桩的库的介绍,所以在本次就不重复了,可以看Sipder,同时也可以用其他的字节码插桩框架实现,相信这不是一个问题。那么我们so中,如果依赖于其他的so,那么这个信息存在哪里呢!动态加载,其实就是把我们的so库在打包成apk的时候剔除,在合适的时候通过网络包下载的方式,通过一些手段,在运行的时候进行分离加载的过程。
2023-07-19 10:35:26
1047
原创 Java 的异常体系
作者:路遥链接:https://www.zhihu.com/question/54630917/answer/1527794845来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一个思维导图回顾一下 Java 的异常体系。上面的图片没有罗列出所有的异常类型,但也基本概括了 Java 异常的继承体系。所有的异常类都继承自ThrowableThrowable有两个直接子类Error和Exception。Exception一般指可以/应该捕获和处理的异常。
2023-07-19 10:13:42
282
转载 Android 平台 Native 代码的崩溃捕获机制及实现
在前一步,我们获取了奔溃时的pc值和各个寄存器的内容,通过SP和FP所限定的stack frame,就可以得到母函数的SP和FP,从而得到母函数的stack frame(PC,LR,SP,FP会在函数调用的第一时间压栈),以此追溯,即可得到所有函数的调用顺序。在我的实验中,在子进程或者信号处理函数中,经常无法回调给java层。下面是Google Breakpad的流程图,在新的进程中DoDump,使用ptrace解析crash进程的堆栈,同时信号处理程序等待子进程完成任务后,再调用旧的信号处理函数。
2023-07-13 18:05:28
2388
转载 Android常见Crash介绍
Crash问题分析定位:通过Log文件夹下全局搜am_crash,此时会把log文件下下所有的包含am_crash的行显示出来一.导致Android Crash 问题的主要类型4)Other由上图可见,在APP层面我们出现并能解决的BUG 集中在App Crash 和System crash 层;
2023-07-13 13:38:24
2633
转载 mPaaS Android Native crash处理
对于mPaas的用户,从MAS上闪退分析平台导出的一般是原始的闪退信息,闪退信息比较多,如果直接阅读会比较困难,使用者可以通过下载Chrome的插件,LogAnalyzer会将Crash SDK生成的日志文本内容转化成可视效果较强的 HTML 页面展现,功能还是很强大的,主要包含:1. 高亮显示日志中重点信息,并使用不同颜色区分;2. 支持日志内容整体结构预览,快速定位重点内容;3. 常见崩溃原因提醒;安装好chrome插件后,还需要做以下配置。
2023-07-12 16:51:40
170
转载 xCrash 详解与源码分析
这里重点关注checkProcessAnrState,它是AMS对外暴露的api,从AMS的mLruProcesses中过滤出crash和anr异常的进程,返回对应的错误信息。高版本系统已经没有读取/data/anr/的权限了,因此FileObserver监听/data/anr/的方案只能支持21的版本无法获取anr日志。xc_trace_init部分不分析了,与xc_jni_init分析方法一致。Java层的崩溃可以直接交给JVM的崩溃捕获机制去处理。
2023-07-11 20:57:11
1377
转载 搭建Android日志系统 美团 Logan
Logan 是美团点评集团推出的大前端日志系统。名称是 Log 和 An 的组合,代表个体日志服务,同时也是金刚狼大叔的大名。
2023-07-11 20:04:54
1138
1
PhoneGap架构基础及工作原理调研报告
2012-08-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人