FlutterBoost设计与实现分析
前言
FlutterBoost是闲鱼技术团队开发并维护的,面向iOS/Android端的Flutter混编解决方案。FlutterBoost不仅仅是一个Flutter Plugin,那只是它的工程形态。我倾向于认为FlutterBoost定义了Native/Flutter混合栈开发模式下,一套标准的Flutter使用方式,包括页面栈管理与路由、应用/页面生命周期管理、Flutter/Native页面传参方式等核心问题的解决方案。FlutterBoost致力于通过框架建设,标准化Flutter的使用方式,从而降低Flutter的使用门槛,让开发者能够像使用WebView一样使用Flutter。
本文依据官方文档、代码,结合个人理解,Native侧以iOS平台为例,详述FlutterB...
Cocoa Frameworks
引言
在Cocoa/Cocoa Touch框架中,我们经常使用Framework作为代码和资源的共享方式。那么Framework到底是什么呢?其实并不神奇,Framework其实就是一个Bundle。而所谓Bundle,是指一个内部结构按照标准规则组织的特殊目录。
值得说明的是Framework和静态库以及动态库的区别。.a和.dylib分别为静态库和动态库,它们本身就是编译好的二进制代码。而Framework,以.framework作为扩展名,它其实是对静态库/动态库的一层包装,目的是为了方便使用。
除包含二进制代码以外,Framework还可以包含头文件、nib文件、图片、字符串子资源文件。
Framework分类
常见的Framework有三类,分别为:
Sta...
macOS 10.15 Vim crash修复之路
macOS 10.15 Catalina更新以后,我第一时间更新了系统。但这次系统升级遇到的问题,比我预期的要多。对我而言,其中影响比较大的是MacVim不能用了。
Crash 1
每次启动是都会报如下错误:
dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/libruby.2.3.0.dylib
Referenced from: /usr/local/Cellar/macvim/8.1-157/MacVim.app/Contents/MacOS/Vim
Reason: image not found
fish: 'vim' terminated...
基于Github、Typora、jekyll建立博客写作平台
如今markdown基本成了轻量写作的标准方案,而且互联网比较流行的平台,诸如Github、简书、CSDN等都对markdown提供了支持。这些第三方写作平台提供写作便利的同时,也有一些不足,比如格式上不允许做定制,语法支持不完善等。
除此之外,markdown写作还有以下痛点:
图片托管。采用免费的图床的话不够稳定,经常被限制,导致博客中的配图无法显示,如果付费购买对象存储空间的话,又需要付费,同时上传也比较麻烦。
markdown只支持有限的标记,如果想扩展标记,许多第三方写作平台是不支持的。比如以下常用的扩展标记,单纯依靠markdown就无法完成:
Success Text.
Info Text.
Warning Text.
Error Text.
本...
NSCollectionView vs UICollectionView
NSCollectionView是AppKit框架提供的集合视图控件,用于构建macOS App。如今的NSCollectionView和UICollectionView在设计思想上有非常多的类似,但是又有诸多不同。本文将对二者的差异进行简单的对比,并给出使用纯代码创建NSCollectionView的方法。
我们先来看下,二者提供的API,如下表所示:
NSCollectionView
UICollectionView
Super Class
NSView
UIScrollView
Cell
NSCollecti...
纯代码创建macOS App
无论是开发iOS还是macOS App,我都喜欢使用纯代码来创建整个App。对我而言,纯代码的好处是,我能清楚地『看到』App做了什么,而不是要忍受Xcode给我的魔盒。采用纯代码开发,能让我更好地理解这门技术的实现原理,从而在以后开发中遇到问题时,能够更快地定位到问题的原因。
纯代码创建macOS App
废话不多说,来看下如何用Xcode创建一个Cocoa App。
新建一个Cocoa App项目,语言选Swift,不使用Storyboards。
删除MainMenu.xib和Info.plist文件中对应的属性。
新建ViewController,继承自NSViewController。
import Cocoa
class Vi...
usbmux协议分析
usbmux协议介绍
初闻usbmux协议时,可能会让人感觉比较陌生,但其实如果你是MAC用户的话,你可能每天都在和它打交道,只是不知道而已。当通过USB将iPhone连接到MAC时,usbmux协议已经在背后为你默默工作了。
usbmux是苹果的私有协议,苹果设计该协议的原因是为了自家的macOS APP能够和iDevice进行通信,从而实现诸如iTunes备份iPhone、Xcode真机调试等功能。只是后来该协议被开发者破解了,于是为众人所知。
usbmuxd是对usbmux协议在macOS平台的上实现,也是macOS系统上的一个守护进程(Daemon),它随着系统的启动而启动。在macOS上,与usbmuxd相关的文件主要有3个:
/System/Library/P...
9 post articles, 2 pages.