各大厂商对Swift、Flutter等『新技术』的真实填坑情况
如果你们leader,还不让你用Swift,不让你使用xib、storybard,你可以把这篇文章给他看下。本文分析了百度网盘、钉钉、抖音、京东、快手、b612、喜马拉雅……等众多app,从是否拥抱新技术如swift、flutter以及用到的开源库等维度进行分析,希望能对各位大佬工作或是面试有所帮助。
app列表
百度网盘
总体情况如下:
-
使用swift -
使用flutter -
有四个 app extension -
有自定义字体 -
大量 xib -
有storyboard -
用到了Metal
用到的开源库(熟悉的味道)
-
ZFPlayer -
MJRefrsh -
lottie -
weibosdk、alipay
想去百度网盘的兄dei,可以看看Swift、xib、Storyboard、flutter方面的知识。没想到百度网盘对新技术还是很跟进的,有点意外。
哔哩哔哩
被前浪后浪刷屏,我们来看看B站的app。
总体情况如下:
-
使用swift -
无flutter -
有自定义字体 -
大量 xib -
无 storyboard -
使用OpenGL ES
用到的开源库:
-
lottie -
FFmpeg -
ijkplayer -
AFNetworking -
AFDownloadRequestOperation -
AMTagListView -
Base64 -
CocoaAsyncSocket -
DAPagesContainer -
DMCircularScrollView -
FileMD5Hash -
FMDB -
google-toolbox-for-mac -
JSONKit -
Mantle -
Masonry -
NSObject-ObjectMap -
NullSafe -
OTPScannerOverlayView -
PSCollectionView -
Reachability -
weibosdk、alipay -
ReactiveCocoa -
SVProgressHUD -
VVImageTint -
ZipArchive
额。。。这么多,开眼界,B站拥抱了swift、xib,没有拥抱flutter、storyboard。此外这些库,感觉都是oc的,框架都是经典框架。
钉钉
统治阶级控制韭菜们的大杀器
总体情况如下:
-
支持iwatch -
无Swift代码 -
少量 xib -
有storyboard
用到的开源库:
-
MWPhotoBrowser
钉钉能看出来的不多
看下 icon的命名方式如下:
下划线命名,也比较混乱,有的是功能开头,也有btn、dt、oa这样的存在。
钉钉还是纯Objective-C了,很多库都是自己的,我只看到了MWPhotoBrowser,在深度挖掘下,应该可以看到更多,你需要准备一步越狱机,以及以下软件。
这些我不够专业,以免误导大家,所以暂不在本文讨论范围内。大佬们可以尝试,记得在本文下方丢链接。
抖音
包名是:Aweme
总体情况如下:
-
无swift -
无xib -
无storyboard -
有coreml -
有lottie -
有MJRefresh
里边非常多的bundle,纯OC工程,能分析出来的较少,期待其他大神分享。
剪映
抖音中没有swift,我们看看另一团队剪映的情况。包名:videoFusion
-
用了swift,而且还有swiftUI,coreImage,metal等引用 -
有MJRefresh -
无xib -
无storyboard
我看到少部分bundle是和抖音通用的,绝大都是自己的东西。字节跳动内部看起来不欢迎xib、storyboard。flutter也没有影子,据说懂车帝有。。。
京东
我发现了这个,贴出来。
# configuration.plist 文件中key命名规范
### 一、按“小驼峰”规则命名
### 二、最前面拼接归属模块(具体业务模块名或common)
### 三、整个key中只能有一个下划线
#### 1、业务模块
规则:业务_标识
实例:
JDAppManagerModule_appDownloadUrl
#### 2、公共模块
规则:common_标识
实例:
common_debugModel
common_channelType
-
有swift -
大量nib(熟悉的味道) -
有storyboard -
react -
有MJRefresh -
lottie
京东,拥抱了swift、xib、storyboard,点赞。
铁路12306
看看官方的app怎么样 少量xib,无swift,微博,阿里sdk,没什么可说的
喜马拉雅
每晚都听,看看这货。
-
无swift -
lottie -
AFNetwork -
POP -
iWatch -
很少的xib -
YBImageBrowser -
MJRefresh
纯OC的代码,比较原始,没有拥抱新技术。
天天P图
-
无 swift -
包大小应该是可以优化的,图片管理有点。。 -
大量xib -
MJRefresh -
直接干中文名字 -
SVProgressHUD
B612
-
有swift,用到了ARkit、Coreimage、GLkit、Metal等很多switft的框架 -
无xib -
无storyboard -
用了lottie -
NSRare/NSGIF -
UIColor-HexValues -
FXBlurView -
SDWebImage -
SFBluetoothLowEnergyDevice -
AVCustomEdit [https://developer.apple.com/library/content/samplecode/AVCustomEdit/Introduction/] -
iOSInstalledApps -
GrowingTextView -
GenericKeychain [https://developer.apple.com/library/ios/samplecode/GenericKeychain/Introduction/Intro.html ] -
MSWeakTimer
还有很多,就不一一列举了。b612很好,把很多疑难杂症bug都放到文档里了,我觉得这些都是宝贵财富,应该保密才对。不过能有这样开放的心态,点赞。本文仅仅是技术分析,如果不妥,请联系,我会及时删除。
快手
太多了,用快手结尾。
-
无swift -
flutter -
居然用中文直接命名,真接地气 -
用的是 webp格式的图片 -
亲娘啊,这么多图片直接放,起码上千了 -
有部分xib -
无storyboard -
lottie -
MJRefresh
快手应该也是还没有拥抱swift,但拥抱了flutter。
总结
太多了,就不一一分析了,这些也够用了,以后慢慢补充吧。
-
发现基本上都用lottie,应该自己加工过 -
swift 使用各半,但这应该是趋势 -
大厂有很多重度xib、storyboard使用,老程序猿,请拥抱它。 -
flutter 宣传的热闹,真正上车的较少 -
MJRefresh为啥用的这么多,n b 哦 -
网络库AFNetwork是用的较多的 -
YBImageBrowser和MWPhotoBrowser被使用,功能虽小但做好不容易,为作者点赞 -
Masonry应该OC中公认的布局之王了 -
ijkplayer、zfplayer作为开源播放器的佼佼者,供你选择
本文只是提供了一个途径,帮助你更好的了解竞品。是我在生病时,无聊搞的,肯定不完善,分析的不够透彻,希望能有帮助,也希望有心的面试者能够看到这篇文章,你去他家面试时,很有可能面试题就藏在这里,比如我就去过B612,当时就问了MSWeakTimer相关的东西,祝各位好运。
如果你做的事一款相机类软件,你就去找竞品,然后分析,一定能帮助你走过很多弯路,技术永无止境,作为一名程序猿,我们需要规划自己的未来,这可能是更重要的。