使用fastlane 實現快速持續的更新、在安裝過程中 出現的一系列問題:
1.安裝fastlane :sudo gem install fastlane
-錯誤:ERROR: Failed to build gem native extension.
#不要添加多個gem 源 #開始以為是gem 源的問題 #查看gem源 gem sources # 刪除默認的gem源 gem sources --remove https://rubygems.org/ # 增加taobao作為gem源 gem sources -a https://ruby.taobao.org/ # 查看當前的gem源 gem sources *** CURRENT SOURCES *** http://ruby.taobao.org # 請確保只有 ruby.taobao.org # 清空源緩存 gem sources -c # 更新源緩存 gem sources -u
錯誤仍然存在;
然后查到是ruby版本的問題
2.更新ruby版本,安裝rvm
http://blog.csdn.net/lissdy/article/details/9191351,
http://stackoverflow.com/questions/3696564/how-to-update-ruby-to-1-9-x-on-mac
curl -L get.rvm.io | bash -s stable
測試是否安裝正常 rvm -v
列出已知ruby版本:rvm list known
安裝一個ruby版本:rvm install 2.0.0
使用一個ruby版本:rvm use 2.0.0
設置默認版本: rvm use 2.0.0 --default
查詢:rvm list
卸載:rvm remove 2.0.0
3.rvm install ruby-2.1.4,報下面的錯誤
➜ ~ git:(master) ✗ rvm install ruby-2.1.4 Searching for binary rubies, this might take some time. Found remote file https://rvm_io.global.ssl.fastly.net/binaries/osx/10.11/x86_64/ruby-2.1.4.tar.bz2 Checking requirements for osx. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/brew.rb:16:in `<main>' ERROR: '/bin' is not writable - it is required for Homebrew, try 'brew doctor' to fix it! Requirements installation failed with status: 1.
然后這樣處理:
$ brew install openssl # if you want to install all dependencies run 'rvm requirements' $ rmv reinstall|install ruby-2.1.4
這里參考了http://stackoverflow.com/questions/18863211/homebrew-permissions-mess
最后就順利安裝fastlane了。
4.在fastlane init初始化時出現
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
參考這里https://github.com/fastlane/fastlane/blob/master/docs/FAQs.md#im-getting-an-ssl-error
5.這里需要安裝 brew .
安裝命令如下:
curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1
這里需要翻牆。(不然會有如下錯 curl: (56) Recv failure: Connection reset by peer)
然后
6.➜ ~ git:(master) ✗ brew update && brew upgrade openssl
Error: /usr/local must be writable!
解決:sudo chown -R 'goyoo' /usr/local
然后就可以brew update && brew upgrade openssl
7.Error: openssl not installed
brew install openssl
➜ / brew install openssl ==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2g.el_capitan.bottl ######################################################################## 100.0% ==> Pouring openssl-1.0.2g.el_capitan.bottle.tar.gz ==> Caveats A CA file has been bootstrapped using certificates from the system keychain. To add additional certificates, place .pem files in /usr/local/etc/openssl/certs and run /usr/local/opt/openssl/bin/c_rehash This formula is keg-only, which means it was not symlinked into /usr/local. Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries Generally there are no consequences of this for you. If you build your own software and it requires this formula, you'll need to add to your build variables: LDFLAGS: -L/usr/local/opt/openssl/lib CPPFLAGS: -I/usr/local/opt/openssl/include ==> Summary 🍺 /usr/local/Cellar/openssl/1.0.2g: 466 files, 11.9M
查看openssl版本:
openssl
version
OpenSSL 0.9.8zg 14 July 2015 //不是最新的。
➜ ~ git:(master) ✗ whereis openssl /usr/bin/openssl ➜ ~ git:(master) ✗ ➜ ~ git:(master) ✗ ➜ ~ git:(master) ✗ ➜ ~ git:(master) ✗ mv /usr/bin/openssl /usr/bin/openssl_OLD mv: rename /usr/bin/openssl to /usr/bin/openssl_OLD: Operation not permitted ➜ ~ git:(master) ✗ openssl versino openssl:Error: 'versino' is an invalid command. Standard commands asn1parse ca ciphers cms crl crl2pkcs7 dgst dh dhparam dsa dsaparam ec ecparam enc engine errstr gendh gendsa genpkey genrsa nseq ocsp passwd pkcs12 pkcs7 pkcs8 pkey pkeyparam pkeyutl prime rand req rsa rsautl s_client s_server s_time sess_id smime speed spkac srp ts verify version x509 Message Digest commands (see the `dgst' command for more details) md4 md5 mdc2 rmd160 sha sha1 Cipher commands (see the `enc' command for more details) aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx idea idea-cbc idea-cfb idea-ecb idea-ofb rc2 rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 rc4-40 seed seed-cbc seed-cfb seed-ecb seed-ofb zlib ➜ ~ git:(master) ✗
➜ ~ git:(master) ✗openssl version
OpenSSL 1.0.2g 1 Mar 2016
➜ ~ git:(master) ✗
參考:http://stackoverflow.com/questions/15185661/openssl-version-macosx-homebrew
http://apple.stackexchange.com/questions/126830/how-to-upgrade-openssl-in-os-x
https://segmentfault.com/a/1190000004395173
然而 fastlane init 的錯誤並沒有解決。
后續、
最后換了一台電腦 輕松fastlane init 和ruby版本 openssl 都沒什么關系
然后我就還原系統(10.11.3 )。。。也就可以了。
fastlane簡單記錄一些細節:
-
deliver:用於上傳app,應用截屏和原數據到 App Store
-
snapshot:可以自動化iOS應用在每個設備上的本地化截屏過程
-
frameit:用於在應用截屏外添加設備的邊框
-
PEM:可以自動化生成和更新應用推送通知描述文件
-
sigh:可以生成並下載開發者的應用商店配置文件(支持resign)
-
product:可以使用命令行在iTunes Connect中創建iOS應用以及Developer Portal
-
cert:可以自動創建並維護iOS的簽名證書
-
codes:使用命令行來生成應用的優惠碼
- gym 編譯app 打包
當前路徑:/Users/yfan/Desktop/AutoOnlineTest
下圖是 fastlane init 產生的目錄
-->gym
執行gym :直接就在當前目錄下生成project.ipa文件和project.app.dsym.zip文件
-->snapshot
1.github文檔 https://github.com/fastlane/fastlane/tree/master/snapshot
3.我的一些記錄:
snapshot是利用Xcode7 的 UI Tests的錄制來截屏,更多 使用命令行工具運行Xcode7 UI Tests
使用過程:①snapshot init初始化 ②將生產的snapshotHelper.swift添加到Project_UI_Tests 目錄下③修改sanpfile配置文件包括路徑,語言型號等④

//ui test 寫這些 override func setUp() { super.setUp() continueAfterFailure = false let app = XCUIApplication() app.launchEnvironment = ["UITest":"1"]; setupSnapshot(app)//setLanguage(app)棄用 app.launch() }
snapshot("string")
方法進行截屏。

//這個方法里的內容是點擊紅點,錄制過程中自動生成的 func testExample() { let app = XCUIApplication() let masterNavigationBar = app.navigationBars["Master"] masterNavigationBar.buttons["Add"].tap() snapshot("1Store") masterNavigationBar.buttons["Edit"].tap() snapshot("2Store") masterNavigationBar.buttons["Done"].tap() snapshot("3Store") }
⑤運行snapshot 就開始截圖了,截完圖后就生成 screenshots.html和screenshots文件夾中圖了。
-->deliver:
1.運行 deliver 直接從本地上傳app元數據(Run deliver
to upload the app metadata from your local machine)
2. 關於路徑:ipa 放在當前目錄下 就可以用deliver 傳ipa
3.deliver --ipa "AutoOnlineTest.ipa" --submit_for_review (上傳ipa並提交審核)
4.screenshots 截圖路徑的位置:如圖
deliver 執行完后,如圖,點y就上傳 api 和圖片 等信息了。
Fastfile :
desc "Deploy a new version to the App Store" lane :appstore do # match(type: "appstore") # snapshot # frameit # gym # Build your app - more options available deliver(force: true, app_icon: "./fastlane/AppIcon.png"# 這個是iTunes connection 里的icon ) # sh "your_script.sh"//可以加一些腳本,填寫補充信息 end
snapfile:
devices([
"iPhone 6",
"iPhone 6 Plus",
"iPhone 5",
"iPhone 4s",
])
languages([
"en-US"#選擇哪個語言
])
output_directory "./screenshots"#輸出路徑