iOS項目更新之升級Xcode7 & iOS9

來源:互聯網
上載者:User

標籤:

前言
      Apple 的WWDC所發布內容在給大家帶來驚喜之際,給各位iOS開發的同仁卻也帶來了不同程度的麻煩。首先不講新功能,就單指原來老版本的項目升級、代碼升級,就是一堆問題,而且是不得不面臨的問題。下面就跟著筆者一起來回顧下,此次在項目升級過程中,所遇到的各個問題點,以及解決方案,與各位已經做過和正在做iOS代碼升級的同仁共勉,也給各位將要做Xcode 7和iOS9相容的同仁以參考。


開發環境安裝

       原本運行得好好的項目,要升級Xcode7,首先就得安裝Xcode7,具體的可以從開發人員官網下載(目前最新版本是Xcode_7_GM_seed).下載好後,就雙擊下載好的dmg包,當然,前提還是需要我們的Mac環境升級到Mac OS 10.10.4+(圖1.1),就可以開啟Xcode安裝鏡像,1.2:

圖1.1 Mac OS 更新

 

圖1.2 Xcode 7 GM安裝


接下來,我們只要將圖1.1所示的Xcode拖動到指定檔案夾,即可完成安裝,接下來,我們只要雙擊運行即可。
       

開發環境運行

       各位可能會覺得,筆者在此還要講開發環境的運行,是不是多此一舉。其實並非如此,綜合筆者這幾年iOS開發經驗的總結,運行新版本,特別是測試版本的Xcode是一個需要格外小心的事情,講起來都是血淚史。
       在運行 GM 版本Xcode時,我們需要特別注意以下幾個方面:
        - 在運行GM版本Xcode前,務必要退出原來正式版本Xcode(如Xcode 6.4)
        - 在運行GM版本Xcode時,務必要避免雙擊開啟工程檔案(也是為了避免新舊版本同時運行)。
        - 如果要切換回原來版本時,一定要先退出GM版本,而且儘可能將Xcode的快取資料清除。

       當然,可能在實際的過程中,還是會有不少朋友就這麼幹了,當然,如果我們App後續只需要使用新版本Xcode,自然是沒有太大關係,只是對於還需要用舊版本來開發或者發布App的朋友,可能就會有點麻煩,可能在用舊版本編譯App在啟動並執行時候,就會出現各種詭異的現象(如列印資訊明明是正常,App運行邏輯卻不正常等)。這時,可能大家要考慮的就是把Xcode刪除掉,重新來過,甚至是重裝作業系統。當然,不知道是否有朋友有更好的方案。不過筆者是不再想經曆這種事情了。

App 項目運行

       待項目運行,首先會碰到的問題就是配置相容,會出現如下錯誤

圖2.1 BitCode 錯誤

當我們看到App編譯報錯的時候,首先想項目不相容Xcode7,再仔細一看

 

1 ld: ‘/Volumes/MacintoshHD/…/AnimationDesk Universal/Sources/AnimaitonDesk Universal/Classes/Supporting Files/GoogleLibrary/libGoogleAnalyticsServices.a(TAGDataProvider.o)‘ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode  for  this  target.  for  architecture arm64

 

其中 ENABLE_BITCODE 吸引了我們的注意,看結合其它的描述資訊,基本可以確定是我們使用的第三方靜態庫(.a)不支援BitCode,當然,我們對應就有如下兩種方案來解決:

方法一:更新對應的第三方靜態庫(現在更新的靜態庫,基本都能支援BitCode)
方法二:可以將Xcode7預設開啟的BitCode功能關閉,2.2所示

圖2.2 關閉BitCode 操作

 

       當然,除了上面的問題外,當我們在添加Framework的時候,會發現此前置入的動態連結程式庫(dylib)他部變成了紅色,2.3所示,所幸的是,就算不替換成Xcode 7新的動態庫檔案(.tbd),仍然可以正常運行.

圖2.3 動態連結程式庫丟失

 

       最後,部分App在編譯的時候,可能還會收到如下報錯,小編也遇到過一次

1 All interface orientations must be supported unless the app requires full screen.

 
        看到這句提示,就是說App預設是有開啟了多任務功能,而多任務功能是需要App支援所有方向,如果我們App是有需要支援多任務,則需要開啟App對各個方向(上、下、左、右)的支援;如果App不需要開啟多任務,則只需要將如下的 requires full screen 勾選上就ok(2.4)。

圖2.4 勾選 Requires full screen

        不出意外,接下來,App應該是能正常編譯運行(小編的AnimationDesk Cloud接下來是可以正常運行),但緊接著,發生了更詭異的事情,以前的的網路訪問,現在完全訪問不通;大家也許會覺得這可能是伺服器掛了,或是外網被牆了,小編最初也是這麼想的,但事實上,伺服器(從Safari)還是能照常被訪問,只是App訪問不了,於是後來聯想到iOS9 WWDC講到的網路資料轉送安全部分,經過一翻折騰,最終,網路訪問的部分也恢複了正常。

        其實只要在App的Info.plist裡面加入如下資訊就可以

 

1 2 3 4 5 <key> NSAppTransportSecurity </key> <dict>      <key> NSAllowsArbitraryLoads </key>      < true /> </dict>

 

 添加成功後的如(圖2.4)


圖2.4 添加Transport Security

其它事項

        可能還有部分朋友跟小編一樣,有碰到另外一個現象,就是UITextView,無論怎麼設定它的textColor顯示的總會是黑色,小編已找到具體的原理,準確地講,應該是Xcode的一個Bug。
        當小編在App開發時,在Xib上面設定過UITextView的背景色(BackgroundColor)為非預設顏色(WhiteColor)時,UITextView的文字顏色(textColor)無論怎麼設定,都將會是黑色,如果想要顏色值正常,可以在設定好文本後,再重設一次顏色即可正常。


iOS項目更新之升級Xcode7 & iOS9

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.