共同开发环境

共同开发环境,减少因环境不同导致文件抵触。

具体完成:设备rbenv,处理ruby环境;设备Bundler,处理cocoapods、cocoapods插件、fastlane等。

环境建立者需求装备以下内容:shelly

设备 Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrgiteeew/iAPPnstall/mastegithubr/app id注册ishell什么意思nstall.sh)"

设备 rbenv

brew install rbenv ruby-build rbenv-vars

放到你的 Shell 装备文件里面

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

设备和设置项目的 Ruby 环境

rbenv install 2.7.1
rbenv local 2.7.1

rbenv 会帮咱们建立 一个叫作.ruby-version 的文件

其他人git指令员实施以下脚本:

# 在rbenv 下设备特定版别的 Ruby 开发环境
rushell是什么意思中文by_version=`cat .ruby-version`
if [[ ! -d "$HOME/.rbenv/versions/$rubshelly-lany_version" ]]; then
rbenv instashell什么意思ll $ruby_version;
fi
# 经过 RubyGems 设备 Bunldegithub中文官网网页r
gem install bundler
# 运用 Bundler 设备 CoappstorecoaPods 和 fastlane 等依托包
bundle install
# 设备各个 Pod
bundle exec pod install

至此共同git指令HTTP环境建立结束,对于xcode,只要不是不同很大就行,保持在一个大版别中就行,如:XCode12

命名该脚本为:setup.sh

装备fastlane

Gemfile 中增加:

# frozen_string_literal: true
source "https://rubygems.ohttp://www.baidu.comrg"
gem 'cocoapods', '1.10.appearance1'
# 自动布置
gem 'fastlane', '2.shell指令179.0'
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

再次实施上述apple id密码重置脚本 setup.sh

有用lane

实施,创建自定义Fastlane文件

bundleHTTP exec fastlane init

fastlane 实施时,比较困难的是证书装备。

运用mach来处理证书

首先appearance,在github或许其他giapple官网t平台,新建一个私有仓库。

  desc "拉取证书"
lanhttps和http的差异e :mach_pp do
# 证书处理
match(
git_url: "https://github.com/xxx/xxx.git",
type: "adhoc" ,
app_identifier:["com.xxxgitlab.xxx","comapple pay.xxx.xxx.push"http协议],
username:"xxx@163.comgitee",
team_id: "xxx"
)
match(
git_url: "https://github.com/xxx/xxx.git",
tyapp id注册pe: "appstore" ,#can be appstore,adhoc,http 302 development,entehttps和http的差异rprise
app_identifier:["com.xxx.xxx","com.xxx.xxx.push"],
username:"xxx@163.com",
team_id: "xxx"
)
eapplend

填入以上信息:git_url、type、app_identifier、username、team_id

其间:type分为adhoc、appstore

gym 打包

 desc "发正式包到appstore"
lane :ipa2apple do
# gym用来编译ipa
gym(
scheme: 'XXX',
configuration: "http://192.168.1.1登录Release",
export_method: "app-storappstoree", #shell指令 指定打包办法
xchttp://www.baidu.comargs: "-allowProvisioningUpdates",
archive_path: 'approve../appstore',
output_directory: './aappstoreppstore',
output_name: 'XXX.ipa'
)
end

Pluginfile 处理插件

设备fir插件

fastlane add_plugin fir_cli

运用

firAPPim(firim_api_token: "56d42c7266586d43dccad86730555c78")  # token 在fir 上查看。

上传符号表

设备firebase插http代理

fastlane add_plugigitin firebase_app_distribution

运用

  # fir 的 release 包 Crasappstoreh report symbols
desc 'Upload symbols to Crashlytics for Release app'
lane :upload_symbols_to_crashlytics_release do
upload_syapple paymbols_toapple tv_crashlytics(
dsym_patapple watchh: "./fishellfishr_release/xxx.app.dSYM.zip",
gsp_path:https和http的差异 "application./xxx/GoogleService-Info_Beta.plist",
api_token: ENV["giti轮胎是什么品牌FIREBASE_API_TOKEN"]
)
end

其他

desc "准备工作 install"
lane :ready do
# 拉代码
git_pull
# 全局变量
time = Time.new
# build 号
build_number = time.strftime("%Y%m%d%H%M%S")
increment_build_number({
build_number: build_number
})
git_commhttpclientit(path:".", message:"[robot][auto build to #{build_number}]")
sh 'git push orishell指令gin main'
end

注意事项

  • 运用undler东西处理后,今后实施pod 需求在前边加上 bundle exec

  • sync_code_signing指令,其实是match指令的另外一种写法

  • build_app指令其实是gym的别名

  • fastlane 常用的action以及参数 /post/684490…

  • zsh: permission denied问题的解决办法 sudo chmod u+x *app store.sh

  • sudo操作,如果遇到不明原因的过错,可能是权限问题,运用chmod 777 途径 测验解决