Fastlane实战: 一、自动化打包(上)

上篇先说一下打包的周边问题(也能够先跳过),下篇再聚焦于打包自己。markdown

配置机器

因为是在其余机器上打包,因此须要:app

  1. 将本身电脑和打包机器在同一个局域网下(或者说同一个WIFI)
  2. 系统偏好设置 -> 共享 中打开远程登陆、屏幕共享、文件共享三个权限
  3. 将马甲包从新命名放在用户目录下,方便单独打包
  4. 配置好一份别名,方便直接打包

而后平时打包就是经过 访达->共享屏幕 去访问,或者说 ssh(远程登陆) 连接上去。若是须要远程在家的话,能够考虑挂一个 TeamViewerssh

遇到的问题

没法读取钥匙串

若是是经过 ssh方式 远程登陆到其余macOS机器上,直接打包可能因为 Keychain 未解锁的问题致使打包失败。oop

解决办法是在远程机器桌面建立一个登陆密码文件,假如当前登陆密码为 12345678:spa

// 也能够手动建立一份文件,注意文件名须要和后边的匹配
echo 12345678 > ~/.keychain_pass_file
复制代码

而后在脚本最前面,加上:code

注意:脚本第一行会打印密码出来。若是对这有顾虑的能够研究换一种方法orm

# 解锁远程机器上的钥匙串
keychain_pass = sh("cat ~/.keychain_pass_file")
sh "security unlock-keychain -p #{keychain_pass}"
unlock_keychain(path: "~/Library/Keychains/login.keychain", password: "$(cat ~/.keychain_pass_file)")
复制代码

Fastfile共用

因为有多个马甲包,且可能由不一样人负责的,且打包脚本也有可能更新,如何让他们共用同一份Fastfile呢。get

稍微查了下资料后,发现有一个 环境变量(env)远程文件 ,彻底知足这个需求。it

环境变量: - 相似于 xcconfig,配置键值对,而后在 Fastfile 中经过 ENV["Key"]来获取不一样值 - 在打包时,执行 fastlane fir --env weixin , 其中 weixin 必须和 env 文件名一致,如: .env.weixin 远程文件: 能够导入远程文件,来实现始终为最新版本的打包脚本io

打包在签名时询问密码

初次打包时,可能会询问密码,这个时候,能够用这一行命令来解决

security set-key-partition-list -S apple-tool:,apple: -k "$(cat ~/.keychain_pass_file)" ~/Library/Keychains/login.keychain
复制代码

也能够到钥匙串里,设置证书的访问控制权限来达到目的。

fastlane-keychain-access.png

相关文章
相关标签/搜索