# IOS 苹果端
# 通用环境说明
- IOS项目适用于IOS 10 (opens new window) 及以上SDK应用运行
 - IOS项目件遵守Cocoapods (opens new window) 协议,并通过Cocoapods (opens new window) 进行组件集成
 - IOS项目分开发,测试和正式环境,通过配置多Targets进行区分当前的
开发环境 - IOS项目通过第三方插件XcodeGen (opens new window) 进行项目生成
 - 通过
AutoPackageScript脚本进行打包成ipa文件并上传至fir供测试人员下载,从而支持测试环境CICD - 正式环境需要手动打包上传至Appstore应用商店
 
# 项目通用结构
以IOS通用文件结构如下:
 - ProjectName                  --- 项目h和m文件集
 - AutoPackageScript.sh         --- 打包脚本
 - Podfile                      --- Cocoapods配置文件
 - project.yml                  --- XcodeGen配置文件
 - genProj.sh                   --- 项目生成文件
# 项目生成流程
在项目中目录下执行 shell命令即可
sh genProj
其中  genProj文件如下
#!/bin/bash
rm -rf Pods/Pods.xcodeproj/xcuserdata
rm -rf ProjectName.xcodeproj
xcodegen --project .
cd ProjectName.xcodeproj
rm -rf project.xcworkspace
rm -rf xcuserdata
最为关键的一步是 xcodegen --project . 执行 project.yml (opens new window) 项目配置,
该配置文件规范可以参考ProjectSpec (opens new window) 的示例:
name: MyProject
include:
- base_spec.yml
  options:
  bundleIdPrefix: com.myapp
  packages:
  Yams:
  url: https://github.com/jpsim/Yams
  from: 2.0.0
  targets:
  MyApp:
  type: application
  platform: iOS
  deploymentTarget: "10.0"
  sources: [MyApp]
  settings:
  configs:
  debug:
  CUSTOM_BUILD_SETTING: my_debug_value
  release:
  CUSTOM_BUILD_SETTING: my_release_value
  dependencies:
    - target: MyFramework
    - carthage: Alamofire
    - framework: Vendor/MyFramework.framework
    - sdk: Contacts.framework
    - sdk: libc++.tbd
    - package: Yams
      MyFramework:
      type: framework
      platform: iOS
      sources: [MyFramework]
自此项目生成流程完成
# 测试环境打包流程
在项目中目录下执行 shell命令即可
sh AutoPackageScript
在执行该脚本之前必须先安装 fir-cli (opens new window) 上传fir脚本命令 因打包脚本冗长,如需可查看AutoPackageScript (opens new window)
# 代码规范
IOS代码规范这里 (opens new window)
# 组件集合说明
以下罗列最为经常使用并沿用至今公司开发中必要组件,其中大部组件适用于通用场景。
| 组件 | 说明 | 
|---|---|
| BossWebFramework | 为BOSS预约项目web页面提供原生源码 (opens new window) | 
| IMKitModule | 网易云信IM二次开发源码 (opens new window) | 
| DragViewModule | IM悬浮逻窗UI源码 (opens new window) | 
| LoginModelModule | 支持各种样式配置登录UI源码 (opens new window) | 
| ChooseAreaModule | 支持多级联动UI源码 (opens new window) | 
| GeTuiManagerModule | 推送封装源码 (opens new window) | 
| TableViewModelModule | 对原生TableView列表进行封装源码 (opens new window) | 
| UpgradeModel | APP升级封装源码 (opens new window) | 
| HistorySearchModule | 历史搜索封装源码 (opens new window) | 
| MNetworkModel | 对网路请求封装源码 (opens new window) | 
| VoiceKit | 语音功能封装源码 (opens new window) | 
| AccountSecurityModel | 账号功能封装源码 (opens new window) | 
| AnnouncementModule | 公告源码 (opens new window) |