如果你们leader,还不让你用Swift,不让你使用xib、storybard,你可以把这篇文章给他看下。本文分析了百度网盘、钉钉、抖音、京东、快手、b612、喜马拉雅……等众多app,从是否拥抱新技术如swift、flutter以及用到的开源库等维度进行分析,希望能对各位大佬工作或是面试有所帮助
说明
- 本文通过爱思助手,直接拿到的ipa
- 分析不够全面,大家见谅,前后一共2个小时时间,有些仓促
- app并未挑选,随机分析的
- 就我个人而言,是喜欢swift、storyboard、xib的,所以app拥抱了这些,会心生欢喜。
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_channelTypes
实例: common_debugModel common_channelTypes
- 有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相关的东西,祝各位好运。如果有不同见解,欢迎入群solo。
如果你做的事一款相机类软件,你就去找竞品,然后分析,一定能帮助你走过很多弯路,技术永无止境,作为一名程序猿,我们需要规划自己的未来,这可能是更重要的。
入群solo
今天的文章🐻各大厂商对Swift、Flutter等『新技术』的真实填坑情况分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/18430.html