自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(537)
  • 资源 (4)
  • 收藏
  • 关注

原创 flutter 版本自动更新调研

工具包以及语言依赖:WinSparkle的UI使用本地Windows控制器的且它是在单独的线程中运行的,因此不用担心和自己所选择的GUI工具(wxWidgets,QT,WinForms,WPF等)产生兼容性问题。Sparkle的原理是根据提前配置好的xml文件地址,每次启动后解析xml,看看有没有比当前版本新的数据,有的话提示更新。只需要包含该文件即可,并且它的API都是C语言形式的,可以用任何语言来使用它。),请备份你的私钥并确保其安全,并将公钥作为 Windows 资源添加到项目中。

2024-07-17 14:39:22 1159

原创 flutter app 技术需求规划 设计

典型的平台特异性,webview等问题。

2024-07-17 14:34:26 1035

原创 Flutter热更新技术探索

原生 APP(例如:Android & IOS)的热更新需求已经比较成熟,但 Flutter 技术栈目前还缺少类似的技术方案,因此 Flutter 研发团队,也需要类似的热更新技术。根据以上的分析,我们知道了 Flutter 业务代码的数据结构,也知道了在运行时如何加载,因此我们只需要在编译时做更改,产生自己需要的代码段,和数据段文件。4, APP 启动时访问后端接口,根据参数(app 的版本号,补丁包版本号,md5,flutter SDK 版本号,Engine 版本号)拉取补丁包;2)页面动态组件框架;

2024-07-17 14:28:57 985

原创 抠图需求技术方案调研

图片裁剪: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 568

原创 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 1016

原创 Flutter 状态管理调研总结

钩子是一种用来管理 Widget 生命周期的新对象,以减少重复代码、增加组件间复用性,允许将视图逻辑提取到通用的用例中并重用,这使得编写小部件更快、更容易。适用于需要在多个组件中共享状态逻辑的场景,例如管理动画控制器、处理用户输入、管理生命周期等。可以帮助开发者更好地组织和管理Widget状态和生命周期。它可以提高代码的可读性和可维护性,并且减少了使用传统的 StatefulWidget 时的样板代码量。Flutter Hooks 相对于传统的减少样板代码。

2024-07-17 11:16:03 936

转载 Hummer 引擎优化系列 - PlatformView的演进历史与优化探索

官方宣称,Flutter 3.0 是一个重大的版本更新,它带来了许多新功能和改进,其中最值得关注的是对 Flutter 的桌面稳定支持。但,这对 PlatformView 功能来说似乎是个例外:截止Flutter 3.7.9,PlatformView仍然仅支持移动端,桌面端尚不可用;Android端新引入的TLHC模式,使得PlatformView的模式选择变得异常混乱和复杂;iOS的可变刷新率暴露了Hybrid Composition模式的缺陷;

2024-05-29 16:51:23 66

转载 搞了个图像描边的需求

这套方案做 demo 的时候,感觉效果还行,一点点毛疵,以为是条件判断不严谨,以为后续调整下可以解决,还有个严重的问题,就是这个方案计算量太大,图片分辨率 1080 左右,表现就有点卡,尤其是拖动滑竿调整,描边粗细 、间距 ,实时渲染有明显的卡顿,但是我们又不能降低图片质量,所以这个方案最终也就是停留在 demo 阶段了。接下来就需求其他的方案,大名鼎鼎的 OpenCV 出场了,参考官方文档,编译产物,接入 app 调试下来就能获取正确的结果了,这里就不多说了,直接看下代码,对应的节点有注释说明。

2024-02-18 15:17:08 77

转载 Android dependency 监控实现

有时候第三方库改到了或者升级了,我们并不能及时发现,往往需要等到出问题的时候,去排查的时候,才发现是某个依赖版本改动导致的。当前本地分支落后远程分支, 且 local 分支有 commit 的时候,pull 或者 push 的时候,会产生一个 merge 节点,这时候 parent 会产生两个点,我们去 parent[1] 即可。然而这些情况就是我们往往所忽略的,即使有代码 review,有时候也会漏了。Gialab push 或者 merge 的时候,我们需要感知到,接着执行特定的 task,进行计算。

2023-12-18 20:32:36 171

转载 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 287

转载 Flutter之 FVM 版本管理

使用 Flutter 构建应用程序,我们一般会选用 stable 版本的 flutter,因为它是个稳定版本。如果你要用 Flutter 尝试写个 web 应用,就必须得使用 beta 版本,因为现在只有 beta 版本支持 web 开发。这就意味着,在 web 开发和应用程序开发的时候,你需要卸载当前的版本,然后去安装另外一个版本。这是个很耗时的操作。可能你的网速快,机器性能好,不在乎这么点时间。但如果需要经常性切换 Flutter 版本,这样的操作就很痛苦了。

2023-09-18 16:17:29 1220

转载 Flutter 3.13 全新生命周期 AppLifecycleListener

最后,AppLifecycleState 还提供了 onExitRequested 方法,但是它并不支持类似 Android 的 back 返回拦截场景,而是需要通过 ServicesBinding.instance.exitApplication(AppExitType exitType) 触发的退出请求,才可以被 onExitRequested 拦截,前提是调用时传入了 AppExitType.cancelable。和老的相比又有什么不同?(分屏、被遮挡、画中画)

2023-09-13 17:47:18 222

转载 Flutter 队列任务的实现

在电商的应用中,最常见的就是在首页或完成某事件之后,弹出一堆的活动/广告。假如重叠弹出,很丑,给用户的体验也不好,所以一般都会依次依条件的弹出。下面讲讲我是怎么实现一个方便的队列任务管理。实例化TaskQueue复制代码添加任务并开始任务});复制代码注意设置条件要返回bool。还可以加入类似延时等操作,跟条件一样配置即可。太久的操作不要像上面一样写在condition中,可能执行完之后又不满足了,根据具体情况考虑。一般来说类似弹窗的return或就可以等待弹窗页面结束,再进行下一个。

2023-09-13 14:38:05 442

转载 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 614

转载 Flutter文件操作

压缩前使用ZipFileEncoder先声明处理压缩的对象,调用该对象的zipDirectory方法压缩文件,该方法接受两个参数,第一个是要压缩文件/文件夹的路径,第二个是压缩包的保存路径;我们通过File和Directory来创建文件和文件夹时首先要获取到应用的相关路径,不然会报错;Directory对象提供listSync()方法获取文件夹里的内容,该方法返回一个数组;文件和文件夹都通过delete删除,

2023-09-11 12:07:49 668

转载 WebRTC 系列之音频会话管理

WebRTC 提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:Windows,Mac,iOS,Android。下文主要介绍音频会话类别 Category 在不同场景的应用,针对不同的 Category 的区别,可以对应上文表一详细查看。熟练掌握 AVAudioSession 的 Category、CategoryOption、Mode 的各个含义和了解 iPhone、iPad的硬件构造,对于理解 iOS 音频至关重要,上文如有不正确之处,欢迎指出,也欢迎交流。

2023-09-11 11:37:34 139

转载 基于flutter sound插件实现录音与播放功能

这个插件可以实现iOS和Android平台的录音和播放功能。即可以播放本地音频文件,也可以播放远程URL文件。在这里我讲介绍这个插件的用法以及碰到的一些常见问题如何解决。flutter_sound支持多种录音格式flutter_sound支持多种播放格式flutter_sound支持音频振幅大小上面介绍了如何录音,如何播放本地和远程音频文件,以及如何实现动画,在录制完音频文件后如何上传,这些都是我们平常使用这个功能会遇到的问题。在使用的过程中遇到的问题也有列出,希望对您有所帮助。

2023-07-26 10:56:19 3821 3

转载 不懂编程也能开发跨境app,傻瓜式app开发工具

如果你是一个天天忙碌的老板,而且对编程和代码都不了解,但是还需要一款跨境app,AppInstitute的很多功能都可以帮您完成app的开发和制作。对任何喜欢开发跨境app的人士来说,基本都要提前了解制作运行一个app的成本,可能还需要了解开发制作一款app的细节工作。一般来说,专业的app开发团队开发的app都是动态的,而且交互性比较强。AppInstitute在制作app时是不收费的,不过如果开发人员要发布新开发的跨境app,就必须缴纳一定的费用了。而且在发布新app以后,赚钱的机会也很多。

2023-07-21 14:34:18 940

转载 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 195

转载 Android网络监控方案

此外,通过自定义gradle plugin的方式,为各个网络库实现Injector和开关,控制在应用构建阶段将Interceptor中各个采集的方法注入到对应网络库字节码的埋点位置,从而实现在运行时网络请求各个阶段采集需要的数据。• 上报:由于APM产生的日志较多,为了控制并发数和内存,我们使用了一个业务共享的线程池和调度队列。事件序列数据主要是收集网络请求各阶段的监控事件的信息,另外对于特定网络库的一些特殊的事件的监控,比如okhttp的连接复用、自动重定向和失败重试等对网络耗时有影响的机制。

2023-07-21 13:44:26 355

转载 【第三方开源库】-->那些酷炫的工具类、热修复、插件化开源库整理 原创

简介: 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 299

原创 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 221

转载 不一样的 Android 堆栈抓取方案

随着需求的不断迭代,APP 遇到的问题越来越多,卡顿,ANR,异常等等问题接踵而来,那么简简单单某个时刻的堆栈信息已经不能满足我们的需求了,我们的目光逐渐转移到了每个时刻的堆栈上,如果能获取一个时间段内,每个时刻的堆栈信息,那么卡顿,以及 ANR 的问题也将被解决。例如,它可以用来找出当前线程堆栈上哪些函数调用了特定函数,或者收集特定函数的参数。我们是否可以简化这个流程,提高抓栈效率呢,理论上是可以的,我们只需要自己将这个流程复写一份,然后抛弃部分的数据,优化数据获取时间,同样可以做到更高效的抓栈体验。

2023-07-20 15:40:28 1206

转载 各大厂与卡顿和ANR的战斗记录篇

纵观各厂在卡顿和ANR 方面做的探索和方案,我们可以看出,思路上都有重合,在细节方面做了很多针对自身业务和实际情况做的针对性的优化和个性化的开发。总的来说逃不出以下几个步骤ANR的感知上:业界主流的方案就是监听SIGQUIT 信号+误报过滤。腾讯技术团队,提到的OV 厂商对ANR的处理并不是常规的处理,而是做闪退处理,所以要以check主线程正在处理的 Message,延误时间作为辅助防止漏报。

2023-07-20 10:48:41 654

原创 移动端网络监控SDK

海神平台上网络监控除了提供请求耗时、数据传输量、错误数/率等指标的统计功能外,还提供一些现场数据等的日志查询类功能。

2023-07-20 10:22:29 192

转载 KOOM(高性能线上内存监控方案

fork进程采用的是“Copy On Write”技术,只有在进行写入操作时,才会为子进程拷贝分配独立的内存空间,默认情况下,子进程可以和父进程共享同个内存空间,所以,当我们要执行dumpHprofData方法时,可以先fork一个子进程,它拥有父进程的内存副本,然后在子进程中执行dumpHprofData方法,而父进程则可以正常继续运行。如此往复,当mOverThresholdCount超出我们设置的阈值(例如3次),我们就认定系统发生了内存泄漏,这个时候就需要告警,并dump内存快照分析问题。

2023-07-19 16:49:16 311

转载 现代化 Android 开发:基础架构

Android开发经过 10 多年的发展,技术在不断更迭,软件复杂度也在不断提升。到目前为止,虽然核心需求越来越少,但是对开发速度的要求越来越高。高可用、流畅的 UI、完善的监控体系等都是现在的必备要求了。国内卷的方向又还包括了跨平台、动态化、模块化。目前的整体感觉就是,移动开发基本是奄奄一息了。不过也不用过于悲观:一是依旧有很多存量的 App 堪称屎山,是需要有维护人员的,就跟现在很多人去卷framework层一样,千万行代码中找bug。二是AI。

2023-07-19 11:31:57 58

转载 WKCrashSDK - crash拦截工具

由于线上始终出现部分未知原因崩溃问题,遂遵循网易出的crash拦截机制,自实现了一个crash拦截工具,现已上线运行数月,累计拦截闪退···总之很多啦···

2023-07-19 11:21:20 87

转载 Android动态加载so!

比如还在下载当中,其实很简单,这个时候我们字节码插桩就派上用场了,只要我们把System.load替换为我们自定义的加载so逻辑,进行一定的逻辑处理就可以了,嘿嘿,因为笔者之前就有写一个字节码插桩的库的介绍,所以在本次就不重复了,可以看Sipder,同时也可以用其他的字节码插桩框架实现,相信这不是一个问题。那么我们so中,如果依赖于其他的so,那么这个信息存在哪里呢!动态加载,其实就是把我们的so库在打包成apk的时候剔除,在合适的时候通过网络包下载的方式,通过一些手段,在运行的时候进行分离加载的过程。

2023-07-19 10:35:26 906

原创 Java 的异常体系

作者:路遥链接:https://www.zhihu.com/question/54630917/answer/1527794845来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一个思维导图回顾一下 Java 的异常体系。​上面的图片没有罗列出所有的异常类型,但也基本概括了 Java 异常的继承体系。所有的异常类都继承自ThrowableThrowable有两个直接子类Error和Exception。Exception一般指可以/应该捕获和处理的异常。

2023-07-19 10:13:42 263

转载 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 2048

转载 Crash 之防测漏篇

通过对异常场景的收集总结完善测试分析,规避异常路径未覆盖导致的crash。

2023-07-13 13:43:36 86

转载 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 2286

转载 mPaaS Android Native crash处理

对于mPaas的用户,从MAS上闪退分析平台导出的一般是原始的闪退信息,闪退信息比较多,如果直接阅读会比较困难,使用者可以通过下载Chrome的插件,LogAnalyzer会将Crash SDK生成的日志文本内容转化成可视效果较强的 HTML 页面展现,功能还是很强大的,主要包含:1. 高亮显示日志中重点信息,并使用不同颜色区分;2. 支持日志内容整体结构预览,快速定位重点内容;3. 常见崩溃原因提醒;安装好chrome插件后,还需要做以下配置。

2023-07-12 16:51:40 113

转载 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 990

转载 搭建Android日志系统 美团 Logan

Logan 是美团点评集团推出的大前端日志系统。名称是 Log 和 An 的组合,代表个体日志服务,同时也是金刚狼大叔的大名。

2023-07-11 20:04:54 980 1

原创 治理Crash的相关开源框架介绍

需要人工一一分析,无法对问题聚类量化……3、我们做了个检查app是否需要升级的功能,若需要升级,则使用context开启一个dialog风格的Activity提示是否需要升级,测试阶段没有任何问题,但一上线就崩溃了,提示没有设置FLAG_ACTIVITY_NEW_TASK,由于启动Activity的context是Application,但在高版本android中,可以使用Application启动Activity并且不设置这个FLAG,但在低版本中必须要设置这个FLAG,对于这种问题也可以直接忽略。

2023-07-11 10:58:36 500

转载 安卓APP崩溃捕获方案:xCrash

如果这部分程序做了 Linux kernel 认为不可接受的事情(比如:除数为零、让 CPU 执行它无法识别的指令等),kernel 就会向 APP 中对应的线程发送相应的信号(signal),这些信号的默认处理方式是杀死整个进程。BreakPad 是一种“以后期调试为目的的崩溃捕获方案”,BreakPad 的崩溃捕获结果是一个二进制的 minidump 文件,需要后期拿到崩溃相关的所有 ELF 原始文件(包括系统动态库文件),然后开始进行类似 gdb 的调试过程,才能定位问题。负责 ELF 信息的解析。

2023-07-11 10:55:45 514

转载 美团app容器化架构的演进

移动端的跨平台技术不是一个新话题,早在几年前,WebView容器、React Native、Weex、Flutter、小程序等移动端跨平台框架就风起云涌。为什么跨平台这么有吸引力呢?我们设想一下如果可以做到一次开发,多端复用,那么对于公司来说,就可以降低用人成本。对于开发来说,只需要学习一个框架,就可以在Android和iOS双平台上开发。节约下来的成本,可以投入到产品快速验证、快速上线。这对所有人来说都有着极大的吸引力。本节先针对部分移动端跨平台技术进行一些简要的介绍,以便读者能够更好地理解后面的内容。

2023-07-09 16:31:50 1120

转载 SpiderMan 可快速查看Android闪退崩溃日志

在Android手机上自动显示闪退崩溃信息,直接分享给相关开发人员!再也不用担心测试妹妹给你重现怎样操作才能触发闪退崩溃的尴尬!再也不用担心产品给你说哪儿哪儿会闪退崩溃,但是又不能场景还原的无奈!再也不用担心某些国产Rom禁止异常log输出!再也不用担心开发工具异常log信息输出时灵时不灵!

2023-07-07 18:29:49 180

PhoneGap架构基础及工作原理调研报告

全面而详细的介绍了移动互联网时代用于开发跨平台移动应用程序的成熟框架,该项目由apache维护,只需写一次代码,就能在7个平台上同时运行所写应用程序。

2012-08-26

android https双向通信验证调研报告

全面详细介绍了https 双向 通信 安全验证原理以及在android系统上的实现。

2012-08-26

Oracle合作大学官方培训教材

想学好Oracle的,有这份资料足够啦。听我老师说只有Oracle合作大学才有这些材料。好好珍惜吧

2009-10-09

钱能 C++第二版 第六章性能 课后答案

钱能第二版C++程序设计教程 课后答案答案 今年8月与读者见面

2009-07-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除