Xcode7打包,iOS9真機閃退,如何解決?

 

問:有些項目用xcode7打開運行,打包安裝到iOS9設備上程序會閃退。數組

若是用xcode7如下編譯,而後打包到iOS9的設備上就是正常的。這是爲何,關鍵是,怎麼解決?xcode

 

答:iOS9發佈以後,有些app在新的系統下會常常出現閃退的狀況,而官方也給了許多的適配與改變。以使用戶體驗更好。因此作爲開發者怎樣爲本身維護的App作適配呢?安全

最快解決的方法確定是使用Xcode7如下的編譯打包。(筆者就是由於需求一直在催,因此果斷用舊版Xcode5編譯...555)服務器

 

固然,若是必定要用Xcode7的話也能夠解決,須要解決的步驟以下:微信

 

(1.)關於iOS9網絡適配(HTTP 轉 HTTPS):網絡

爲了強制加強數據訪問安全, iOS9 默認會把 全部的http請求都改成 HTTPS 請求。(HTTPS = HTTP+SSL/TLS+TCP)app

解決這個變化帶來的影響,有2個方案:ui

方案a:當即讓公司的服務端升級使用TLS 1.2,以解析相關數據;this

方案b:若是服務器沒法升級改變,雖Apple不建議,但可經過在 Info.plist 中聲明,倒退回不安全的網絡請求依然能讓App訪問指定http,甚至任意的http。url

          本應用的根目錄下的「info.plist」的文件需加下面的鍵值;簡單粗暴地信任全部http服務器:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

或者不用代碼,而在「info.plist」文件的屬性列表上直接添加:

(2)bitcode,一種被編譯程序的一種中間形式的代碼。之後在Watch應用中必須包含Bitcode,iOS不強制,但Xcode7默認會開啓Bitcode:

方案a:更新library使庫中包含Bitcode,不然會出現如下中的警告;

(null): URGENT: all bitcode will be dropped because '/Users/myname/Library/Mobile Documents/com~apple~CloudDocs/foldername/appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)' was built without 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. Note: This will be an error in the future.

方案b:簡單粗暴,關閉Bitcode.

TAGRETS->Build Setting,右上角搜索「bitcode」,改成「No」;

(3).iOS9 URL Scheme 適配,引入白名單概念:

在在info.plist裏面增長可信任的調用app,不然回報以下錯誤:

-canOpenURL: failed for URL: "weixin://app/wx9c8771d3c07dfd30/" - error: "This app is not allowed to query for scheme weixin"
-canOpenURL: failed for URL: "wtloginmqq2://qzapp" - error: "This app is not allowed to query for scheme wtloginmqq2"

可在根目錄的「info.plist」文件中加入「LSApplicationQueriesSchemes」數組:每一個字段的url須要咱們本身添加,以下圖添加了包括微信微博等sdk的url(具體的其餘方應用SDK會有相應說明):

(4)企業級分發:

 iOS9以前,企業級分發的操做很便捷,直接點擊App出現的「信任」按鈕便可,

而iOS9之後,企業級分發ipa包變得與Mac上dmg安裝包安裝時同樣:默認不能安裝,也再也不出現「信任」這個按鈕; 

因此在咱們的真機運行,安裝到手機裏面後第一次打開app。不會像之前提示,信任仍是不信任該證書.

這個時候須要打開本身的設備上面的 設置-》通用-》描述文件-》企業級應用 中信任對應的企業開發者。這個也是iOS9的新特性;

相關文章
相關標籤/搜索