# 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)
最后更新时间: 11/25/2021, 9:51:20 AM