fastlane 使用中遇到的問題


 

使用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

  2.詳細的英文文檔:https://tisunov.github.io/2015/11/06/automating-app-store-screenshots-generation-with-fastlane-snapshot-and-sketch.html

  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()
      
    }
View Code
在需要截屏的地方是用  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")
        
    }
View Code

    ⑤運行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"#輸出路徑

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM