项目搭建流程

前言

我们有时候需要重新启动一个项目,但由于距离上一次项目的创建时间跨度较长,有些细节就会遗忘,所以将项目从零到一的流程记录下来,给自己和需要搭建新项目的同学做一个参考

项目搭建流程:

1.创建project并关联Cocoapods
2.多个Target创建developer、gray、release环境
3.创建和完善目录结构
1.创建project并关联Cocoapods

通过Xcode新建一个项目,这里以Swift项目为例,建好后需要修改Bundle Identifier、支持的版本,如果项目是用纯代码,可以将Main.storyBoard进行删除,需要注意的是,iOS13以后项目会自动创建SceneDelegate,这个是系统来支持iPad多进程的,APP可以直接删掉,最后需要修改Info.plist文件,将Main storyboard file base name和Application Scene Manifes这两个配置进行删除,不然运行会找不到Main storyboard崩溃,这时project就创建好了,下一步进行cocoapods的导入

1.打开终端,cd到当前工程目录
2.pod init自动生成Podfile文件或者touch Podfile创建Podfile文件
3.vim Podfile文件,按i进入编辑状态(以导入HandyJSON为例)
platform :ios, '10.0'  
use_frameworks!  
target '项目名称' do  
pod 'HandyJSON', '~> 5.0.2'
end  
4.编辑完成后Esc退出编辑状态,按:wq保存
5.pod install --verbose --no-repo-update
6.重启Xcode,通过.xcworkspace运行

注意

  • pod install有可能报错,因为你本地的repo库没有Podfile标注版本的第三方库,需要先执行 pod repo update,这时由于走的是GitHub下载,下载的会很慢,可以通过给Github挂个代理(需要有VPN),就可以解决
解决 pod repo update速度慢的问题
1. 使用Shadowsocks代理 -> 高级设置 -> 本地Socket5监听端口修改为1080
2. git config --global http.proxy socks5://127.0.0.1:1080 (git全局设置代理)
3. git config --global --unset http.proxy (恢复/移除上面设置的git代理)
1. 使用Shadowsocks代理 -> 高级设置 -> 本地Socket5监听端口修改为1080
2.git config --global http.https://github.com.proxy socks5://127.0.0.1:1080 (国内git库不需要走代理,而是只需要github上的代码库走代理)
3.git config --global --unset http.https://github.com.proxy (恢复/移除github上的代码库走代理)
  • swift的podfile文件注意use_frameworks! 这一句是必须的,作用是把三方库打包成静态库,而oc是不需要的
2.多个Target创建developer、gray、release环境

可以通过多个target来动态切换测试、灰度、正式环境,配置target主要有以下几个流程

  • 创建多target, 及更改Target的名称
  • 添加不同Target下的应用图标
  • 配置Info.plist
  • 配置全局宏,目的是在代码中进行环境的区分

由于篇幅过长,详细创建流程参考 Target去管理你的项目环境版本 这篇文章

这里补充一下,上面文章没有讲到配置Info.plist,这个需要看自己项目target需不需要区分,不需要区分的话可以直接删除上面Duplicate创建target产生的Info.plist, 同时修改target的路径为默认target的Info.plist, 如果需要区分,就修改一下plist的前缀为你的target名称,这更容易区分,同时修改每个target对应的plist文件路径为新修改名称的路径
3.创建和完善目录结构

目录结构是很重要的,需要清晰明了,清楚的表达每个模块应该做些什么,这样迭代下去,就不会混乱,还有目录结构需要根据团队的协作规范去进行变化,比如,我们团队的模块管理类规范是分散到每个业务模块里面,这时主目录结构就不需要加上Manger管理模块

-主目录结构
  -- APPDelegate 入口
  -- Classes 业务模块
  -- Extentions 扩展
  -- Network 网络请求
  -- Utility 工具扩展
  -- Config 项目配置
  -- Resource 文件资源
  -- Vendors 第三方库(非cocoapods导入)
  -- Documentation 目录文件注释
  -- SupportFile 支持文件
- 模块目录结构
-- Classes       
    ---Base               // 基类
        ----Controller     
        ----Model       
        ----View 
    ---Home
        ----Model       
        ----View 
        ----ViewModel 
        ----Controller   
    ---Mine
        ----Manger
        ----Model       
        ----View 
        ----Controller     
    类推...

不同业务模块的结构是动态变化的,因为不同模块业务复杂度不同,比较简单的模块保持MVC的结构便于快速的迭代,很复杂的模块,需要解耦,减轻VC的负担,采用MVVM的结构,代码维护将会更简单,有些模块有比较独立的业务需求,通过建Manger模块进行单独管理


模块内容

上图简单描述了每个模块负责的内容,至此项目的初步搭建就完成了,后续版本开发沿着这个思路去迭代,项目就会很清晰, 移动应用的业务模块化架构设计,其真正的目标是提升开发质量和效率。单从实现角度来看并没有什么黑魔法或技术难点,更多的是结合团队实际开发协作方式和业务场景的具体考量——“适合自己的才是最好的”

你可能感兴趣的:(项目搭建流程)