开发一个 iOS 应用你所需要做些什么呢?

  1. Git-flow 的工作流程,这篇文章详细的说明的 git-flow 的使用方法。在多人团队开发的时候非常受益!创建自己的 masterdevelopfeaturerelease 等代码分支,以便可以在各个分支之间切换自如。

  2. 在 Git 提交时可以使用 [添加][修改][删除][修复][更新]等前缀词语来表明当前的 Commit 信息,规范化的 commit 信息能够一瞬间的告诉别人你干了些什么,防止自己忘记,避免团队成员看不懂。具体参见这里

  3. 代码 Review。可以使用 github 或 gitlab 自带的Merge Request 来进行代码 Review。同时还可以使用 Phacility,这里就不做过多的阐述。

Jenkins 持续集成

持续集成完美的解决了开发者的一个痛点,那就是避免 QA 同学频繁的找你打包。那么 Jenkins 将会是一个很好的选择,它可以同时支持 iOS 和 Android 平台。持续集成的复杂性也足够用几篇文章来描述了,Google 一下会有很多教程。这里介绍一篇博文供参考:手把手教你利用 Jenkins 持续集成 iOS 项目

Crash 收集平台

  1. iOS 日常的 Crash 问题收集我们可以采用一条龙服务的: Fabric腾讯 Bugly , 友盟,或者是开源系列的:KSCrash。可以自己搭建一套收集 Crash 的平台来满足日常的 Crash 收集问题。

  2. 苹果 Crash 收集服务。通过 iTunes Connect 获取用户的 Crash 日志。在 XCode 中 Window->Organizer->Crashes也可以看到同样的 crash 日志。收集 Crash 功能需要用户设置->隐私->诊断与用量->诊断与用量数据选择自动发送,并与开发者共享即可。这个成本太高,不推荐使用。

中场实战


好了,至此前期准备内容做完后,可以创建自己的项目工程了,我们的工程中 Podfile 里应该有一定的内容了,什么??Pod 各种出问题?那么我们可以使用这篇教程来搭建 Pod。好了,接下来我介绍一些日常开发所需要的内容。

工程结构

现阶段的 iOS 工程基本可以分为 All-In-One(指的是业务代码) 和 模块化 这两种工程结构。小项目笔者认为暂时没有必要使用模块化,因为每次的 pod install 和 pod update 成本其实也不低。对于 All-In-One 的项目工程,笔者更不建议把所有工具类,通用类等都放入到 .pch 文件里,因为这会使编译速度变慢,另外如果你的工程以后有可能 模块化,那这以后将是一个巨大的灾难。

脱离业务逻辑的工具类(Category)

工具类能够帮助我们快速的实现我们想要的内容,并且保证程序的健壮性和代码的全局性,比如我们常见的 NSArray的安全访问或安全添加所有数据的方法,这个方法可以有效的抑制我们所出现的数组越界或者添加了一个 nil 对象所引起的闪退问题。

 
 

诸如上面对 iOS 中 Foundation 和 UIKit 的扩展和工具类有很多,可以选用 YYCategories 或者 JKCategories 来作为我们的工具类,并且最好以 CocoaPods 的形式引入。并且在代码 Review 的时候注意开发者的使用是否合理和规范,避免重复造轮子。

第三方库的使用

第三方库能够帮你大大的提升开发效率,比如 Objective-C 中著名的 AFNetworkingSDWebimage,Swift 中著名的 AlamofireKingfisher 等开源库。那么我的建议是这些脱离业务逻辑的库最好不要拿来直接用,我们可以对它进行自己的封装。比如 YTKNetwork 就是对 AFNetworking 的一个很好的封装。当然了如果你的 App 没有那么的复杂,其实也可以自己简单的封装一下。

 
 

UI 实现

团队开发,笔者建议尽量使用代码的方式来进行 UI 布局。如果对滚动帧率和性能有极高的要求,可以选用 AutoresizingMask,具体可以看这篇文章的描述。但是如果需要适配 iPad,或者有转屏的需求,那么还是建议使用 AutoLayout 来处理,可以使用 Masonry 这个框架来实现。总之无论是 AutoresizingMask 还是 AutoLayout,只要团队统一就好,这也利于日后的维护和更新。

设计规范

对于 App 中每个字体的大小,颜色等内容我们可以定义一套 UIFontUIColor 的扩展来实现,并且我们可以和设计师沟通来使用字体编号,颜色编号进行标注。下图就是展示这种代码式的标注:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

另外对于切图的内容,最好 2x 和 3x 的图分开切,每个图片我们还可以使用 TinyPNG 来进行一次压缩,这样也可以省一部分的 App 体积。

统计埋点

移动互联网的时代,大数据的舞台,埋点也是相当重要的,良好的的埋点 API 设计对代码的解耦也是非常有利的。

  1. 我们可以选用 腾讯 MTA 数据统计 这种第三方统计服务。

  2. 由于隐私性,我们也可以自己来实现一套埋点方案和设计。如果没有选用 MTA 服务,那么笔者建议下载 iOS 的 MTA 框架 并参考头文件中的内容进行自己 API 的设计。切记要高度解耦易扩展,即便是上下文的内容,也可以使用参数的形式来传递。

  3. 无痕埋点,iOS 有 Aspects 这种 AOP 的框架可以实现无痕埋点,比如日常的 ViewController 的生命周期,用户流转路径等等。当然了,如果是点对点的数据统计,还是建议我们使用上述的内容来完成这样的需求。

配置中心

国内 App 的动态化需求还是非常旺盛的,比如我们经常要根据服务器返回的数据进行 App 的动态调整。那么和服务器下发配置的时候,我们最好按照优先级且在不影响启动的情况下进行分布请求。比如电商系 App :

  1. 基础配置:一些基础的内容比如必须是第一阶梯的请求。例如:服务器时间AccessToken等等。

  2. 大促:双 11 大促来了,首页要有个弹窗之类的逻辑控制,也会是服务器下发的配置。那么诸如此类的可以放到第二阶梯的请求中。如果服务端同学强烈要求放在第一阶梯的话,我们需要跟他们讲清楚启动时间对用户体验的重要性。

  3. 安全性:无论是什么配置,我们都需要进行安全性和准确性的校验,所以在这类的请求中。我们需要一套完善的机制来防止出现各种异常,对于这些配置的下发,App 要有顽强的容错能力。

  4. 皮肤,主题文件:很多 App 都会有夜间模式,换肤等功能。比如手机 QQ,手机淘宝等。那么类似这种换肤的功能,笔者建议可以使用 .zip 包的形式来进行资源整合。因为一套皮肤的图片可能会比较多,另外加上各种 2G, 3G 等异常网络情况的出现,客户端批量下载图片进行完整性和准确性的校验成本会大大增加。但是一个 .zip 包文件既可以解决资源是否下载完毕的问题,又可以一瞬间切换主题,用户几乎是 0 感知,体验也会非常赞。

Mock 数据

假数据的制造方法有很多种,笔者认为最妙的莫过于是使用 Json-server 来搭建的服务。我们可以把它部署到服务器,并且只要上传一段 json 文件,就可以返回你想要的数据,这也不影响你的开发进度,而且让这个过程变的很容易。

单元测试

一般小项目几乎很少会写单元测试的,因为在当前这个追求快速迭代和堆积业务的环境中,单元测试各种被无视。笔者认为非常重要的业务逻辑可以对数据等内容做单元测试,我们可以使用 Xcode 自带的测试框架 XCTest 来进行。但是当我们实现时候,不可避免的要去尽可能少的实例化一些具体的组件来保持测试既短又快,但现在的开发中,测试的组件很可能会有几个依赖的对象,我们需要用创造一些假的 Object 来替代实例化具体的依赖 Class,这时候你可能会使用到 OCMock 这个框架了。这样也可以快速帮你验证自己的业务逻辑。

通用的 WebViewController

移动开发的领域难免需要使用 WebView 搞一些事情。那么 JavaScript 和 native 的交互就显得十分有必要了。你可以使用 WebViewJavascriptBridge 来实现和 native 的交互。

持久化缓存

说到缓存,日常开发中我们基本都是在操作内存。像诸如图片这种,SDWebimage 已经帮我们实现了。那么刚才提到服务器下发的配置,还有首页的内容,笔者认为还是有必要缓存一份在本地,为什么呢?因为 App 启动无网络化是强烈依赖缓存的。无网络化可以大大提升启动效率,并且首页是有内容可以见的,这并不影响用户体验。iOS 的本地持久化方案有很多种,有直接写文件,NSKeyedArchiver 归档,还可以用 NSUserDefault,FMDBLevelDBRealm 等等。选择适合自己的就可以,记住 database 一定要跟业务解除绑定,它仅仅是为上层 UI 提供数据而已。

服务端异常 Log 上报

很多时候我们会遇见一些因为服务端数据所产生的业务逻辑的问题。这时候运营或者测试同学可能第一个找的就是客户端研发,因为表现层是在客户端的(T.T)。针对这个问题,笔者认为客户端和服务端返回的各种数据异常都应该有一个异常上报的过程。比如我们可以通过如下格式来进行上报:

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值