# 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) |