1. 程式人生 > >xcode7和ios9適配之路

xcode7和ios9適配之路

get sans att 新建 技術分享 matching resolve down 二進制

從xcode6.x升級xcode7.2之後,發現要做一堆事情來做適配,不然之前的項目沒法好好執行。

一.換庫

dylib後綴的庫都要換成tbd後綴的。例如以下所看到的

換庫前:

技術分享

換庫後:

技術分享


二.https問題

xcode7.2默認項目是使用https的。所以為了繼續使用http。須要在info.plist中加入例如以下圖所看到的:

技術分享


三.Bitcode問題

真機測試時,發如今模擬器上沒出錯,真機出問題了,報了例如以下類似的問題:

‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’does not contain bitcode. You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE), obtain an updated library from the vendor, or disablebitcode for this target. for architecture arm64




包括Bitcode字樣,bitcode是被編譯程序的一種中間形式的代碼。

包括bitcode配置的程序將會在App store上被編譯和鏈接。bitcode同意蘋果在後期又一次優化程序的二進制文件,而不須要又一次提交一個新的版本號到App store上。

當提交程序到App store上時,Xcode會將程序編譯為一個中間表現形式(bitcode)。然後App store會再將這個botcode編譯為可運行的64位或32位程序。

在上面的錯誤提示中,提到了怎樣處理我們遇到的問題:

You must rebuild it with bitcode enabled(Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, ordisable bitcode for this target. for architecture arm64

要麽讓第三方庫支持,要麽關閉target的bitcode選項。

實際上,在Xcode 7中,我們新建一個iOS程序時,bitcode選項默認是設置為YES的。我們能夠在”Build Settings”->”Enable Bitcode”選項中看到這個設置。只是。我們如今須要考慮的是三個平臺:iOS,Mac OS,watchOS。

對於iOS。bitcode是可選的;對於watchOS,bitcode是必須的;而Mac OS是不支持bitcode。

假設我們開啟了bitcode,在提交包時,以下這個界面也會有個bitcode選項:

技術分享

所以。假設我們的project須要支持bitcode。則必要要求全部引入的第三方庫都支持bitcode。

否則,按下圖所看到的關閉bitcode

技術分享


三.白名單問題

升級到xcode7.2。假設項目有要跳轉到其它app的,則須要在info.plist中加入相應app的Scheme,否則無法調用或跳轉

技術分享

<key>LSApplicationQueriesSchemes</key>
<array>
<string>iosamap</string>
<string>baidumap</string>
<string>seeyaa</string>
<string>wechat</string>
<string>weixin</string>
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<string>mqqapi</string>
<string>mqq</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqconnect</string>
<string>mqqopensdkdataline</string>
<string>mqqopensdkgrouptribeshare</string>
<string>mqqopensdkfriend</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>mqzoneopensdk</string>
<string>wtloginmqq</string>
<string>wtloginmqq2</string>
<string>mqqwpa</string>
<string>mqzone</string>
<string>mqzonev2</string>
<string>mqzoneshare</string>
<string>wtloginqzone</string>
<string>mqzonewx</string>
<string>mqzoneopensdkapiV2</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapi</string>
<string>mqzoneopensdk</string>
<string>alipay</string>
<string>alipayshare</string>
</array>


四.打包遇到問題

Failed to locate or generate matching signing assets
Xcode attempted to locate or generate matching signing assets and failed to do so because of the following issues.
Missing iOS Distribution signing identity for ... Xcode can request one for you.

截圖例如以下
技術分享

原因是Apple World Wide Developer Relations Certificate Authority的過期時間是2016年2月14。蘋果的回答例如以下:

Thanks for bringing this to the attention of the community and apologies for the issues you’ve been having. This issue stems from having a copy of the expired WWDR Intermediate certificate in both your System and Login keychains. To resolve the issue, you should first download and install the newWWDR intermediate certificate (by double-clicking on the file). Next, in the Keychain Access application, select the System keychain. Make sure to select “Show Expired Certificates” in the View menu and then delete the expired version of the Apple Worldwide Developer Relations Certificate Authority Intermediate certificate (expired on February 14, 2016). Your certificates should now appear as valid in Keychain Access and be available to Xcode for submissions to the App Store.

簡單的說就是頒發開發人員證書的根證書過期了。假設這個時候你打開keychain看你的公布證書會是這種:


技術分享



就是這個Apple World Wide Developer Relations Certificate Authority過期了。所以這個頒發的證書都不能使用了。

如今來說下解決方式:
1.打開keychain(鑰匙串),在登錄和系統中找到過期的 Apple World Wide Developer Relation Certification Authority,然後刪除它
註意在keychain顯示菜單下,設置成顯示過期證書


技術分享

2.下載這個鏈接裏的AppleWWDRCA.cer的證書到本地
3.記得要把系統鑰匙串的設置權限打開

技術分享

4.把AppleWWDRCA.cer安裝到登錄和系統中
設置成功後就能夠了。查看下你的公布證書是否已經正常了。



技術分享



參考鏈接:

http://jingyan.baidu.com/article/a3aad71ac4de98b1fb0096ac.html

http://www.jianshu.com/p/cda1790ea317?appinstall=0

http://www.jianshu.com/p/3e1b4e2d06c6

http://www.jianshu.com/p/a8cce94d508e




xcode7和ios9適配之路