企业DevOps之路:iOS 项目构建

2022-04-15 15:36:59 浏览数 (1)

1. 安装证书管理插件Keychains and Provisioning Profiles Management

Keychains and Provisioning Profiles Management 是管本地的keychain和iOS证书的管理插件

Manage Jenkins -> Manage Plugins

安装完之后,需要重启一下 Tomcat 服务。否则插件不生效

2. 配置 Keychains and Provisioning Profiles Management

Manage Jenkins -> Uncategorized

获取 login.keychain 文件

代码语言:javascript复制
 cd ~/Library/Keychains

上传 keychain 文件,由于 macOS10.12 以及以后的系统里面没有 login.keychain 文件,只有 login.keychain-db文件,可以复制一份,然后把 -db 删除,也可以创建一个快捷方式名字叫做 login.keychain 即可。上传之后就会出现以下配置

  • Password 一栏就填写当前 macOS 用户的登录密码
  • Code Signing Identity 填写相关证书的标识符

目前电脑上配置了一个调试证书和一个 Ad Hoc 发布证书,当然后面还需要一个 App Store 发布证书,这个操作流程都是一样的,后面自己处理就好。去到 Keychain Access -> login,找到你的 iPhone Developer 和 iPhone Distribution 证书,选择其中一个,然后复制标识符,填写到此位置,保存即可。

这个操作步骤,可以理解为 Jenkins 有权以你这台电脑(login.keychain 文件)来获取调试和发布 iOS 应用的证书(证书标识符)。

然后拿到调试证书和 Ad Hoc 证书对应的 .mobileprovision 文件,建议去 Apple 开发者后台去下载,也可以去到 /Users/{username}/Library/MobileDevice/Provisioning Profiles 这个路径下去找;但是如果配置文件太多的话,很难分辨是哪个文件,而且这个地方的名称都是 UUID 值标记的。拿到对应的 .mobileprovision 文件,同样的位置点击上传,出现以下页面:

会自动识别出 .mobileprovision 文件的 UUID 值。对于 Provisioning Profiles Directory Path,根据 macOS 当前登录的用户名的不同

代码语言:javascript复制
/Users/{username}/Library/MobileDevice/Provisioning Profiles

这个操作步骤,可以理解为 Jenkins 可以读取位于 /Users/{username}/Library/MobileDevice/Provisioning Profiles 目录下的配置文件,同时知道应该读取那个对应的配置文件(识别 UUID 值)。保存好了之后,整个 iOS 工程项目相关的证书和配置文件都配置好了。

3. 安装 xcode 构建插件 Xcode integration

Manage Jenkins -> Manage Plugins

安装完之后,需要重启一下 Tomcat 服务。否则插件不生效

4. 构建ipk

  • 新建Item
  • 配置代码仓库
  • 添加 Xcode 构建
  • 填写 Development Team ID

如何获取Team ID,登录苹果后台 https://developer.apple.com

  • 点击 Setting
  • 勾选 Clean before build,意思就是在构造之前先进行环境清理工作
  • 勾选 Generate Archive

勾选后,Xcode Schema File 输入域会提示 When outputting archive or IPA, you need to specify a scheme。如果使用 workspace;而不是project此项必填。与target类似,填写需要构建的schema。

  • 勾选 Pack application, build and sign .ipa,表示需要生成ipa文件

然后填写以下内容

Export method:打包方式,包括development、ad-hoc、enterprise 和 app-store 四种方式

ipa filename pattern:ipa文件的命名规则,如果不填写默认规则是target-version-build,例如xxx-1.0.0-2.ipa。可以使用 {VERSION} 、{BUILD_DATE} (yyyy.MM.dd)等系统内置变量值来组合最终的名称,也可以写一个固定的名称。注意不需要填写 .ipa 后缀,Jenkins会自动帮加上。

Output directory:建议不清楚的不要填写,它表示 ipa 输出目录,是一个相对路径,相对于CONFIGURATION_BUILD_DIR 这个默认的 Build 目录或者修改之后的 Build 目录。

6. Code signing & OS X keychain options 配置

  • 点击 Code signing setting...
  • 选择 Read from Xcode Project 和勾选 Unlock Keychain

勾选 Unlock Keychain

Keychain path:填写 login.keychain 文件的路径。意思是找到 login.keychain(登陆钥匙串)。login.keychain文件的路径一般是

代码语言:javascript复制
${HOME}/Library/Keychains/login.keychain

Keychain password:keychain密码

IPA签名的时候,需要 Mac 电脑当前登录的用户授予权限。建议选中,并在“Keychain password”中,输入 Mac 电脑当前用户登录的密码。

7. Advanced Xcode build options 配置

  • 点击 Advanced build settings

然后填写以下内容

Xcode Project Directory:该目录是指明了包含 xcodeproj 文件的目录

Xcode Project File:如果需要构建一个 project;而不是一个 workspace 的话则指定文件的名称(后缀名为 xcodeproj 的文件)

Build output directory:该参数只是指明了最终需要产生的动态包。ipa、app 等文件默认路径为所编译的xcodeproj 所在目录,如主项目和 POD 项目整合后,则会在主项目的和 POD 项目的 XCODEPROJ 所在目录(编译产生的相关文件所在目录,默认为 CONFIGURATION)

有一个参数也非常常用的就是OBJROOT,该参数是产生 .a 和 .hmap文件的目录,默认路径为所编译的 xcodeproj 所在目录,如主项目和 POD 项目整合后,则会在主项目的和 POD 项目的 XCODEPROJ 所在目录,关于 OBJROOT、CONFIGURATION_BUILD_DIR 以及 SYMROOT 三个路径之间的关系可以查看官方文档。

8. 收集 ipk 成果物

构造的 ipk 包一般位于 build 目录下。例如

代码语言:javascript复制
build/**/*.ipk

0 人点赞