iOS 常見的 error

1 https 支持

  • 系統打印:并不會崩潰 error
    App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.
    Temporary exceptions can be configured via your app's Info.plist file.**

  • 提示也非常明確,在 info.plist 中 添加 App Transport Security Settings 并添加 Allow Arbitrary Loads = YES
    也可以這樣添加:Open As Source Code:

 <key>NSAppTransportSecurity</key>
 <dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
 </dict>
  • 如果需要對某些網址 http,需要具體分別設置,而不是想上面那樣全部http

2 armv7,armv7s,arm64 相關

arm處理器的指令集,具體深入也并不是很了解,主要是在添加其他庫文件是,可能導致編譯不通過。可能出現的報錯:

Undefined symbols for architecture x86_64:
//x86_64,armv7,arm64..
  • x86_64:模擬器64位,表示添加的文件不支持x86_64,需要重新添加個支持模擬器的,或者直接真機調試吧。
  • arm64:真機64位,iphone5S、iPad Air、mini2 以上都是這個吧。
  • armv7/armv7s:更早版本。
在Build Srtting 中,Architectures中有一些設置,一般情況下不需要修改,有問題都是因為第三方拖入文件的事。

其中Architectures 對打包文件的大小有影響,越多,越大,每一種都要生產對應的指令集的二進制包,因為可以向下兼容,所有對性能不要求的話只要armv7,就能湊活了。

3 search path

在添加其他文件例如 .a 時,可能會出現

ld: library not found for -XXXXXX

主要原因就是路徑錯誤,找不到文件,Build Setting 中 修改
Library Search Path 添加XXX 文件路徑。

$(inherited)     一般第一行都是這個,據說是從 framworks 讀取,請教大神。

$(PROJECT_DIR) 對應 /Users/name/somewheres/prejectname(工程包相對路徑)/后面還可以跟具體文件夾文件路徑XXX.a
這個相對路徑比較重要!

類似的 framwork/header Seacrh Path 也是一樣的。

4 other link flag

在添加其他文件例如.a時,編譯通過,但是運行時可能出現

selector not recognized

鏈接器,具體也不是很明白,大致是編譯之后,鏈接目標文件與庫形成執行文件。可能會用到下面幾個參數

-ObjC:將OC類添加到執行文件,但是可能添加多余沒用的文件,但是可以解決很多相關問題。如果還不行就用下面-force_load
-all_load:最好不要用,可能導致重復鏈接
-force_load :后面跟相對文件路徑,是比較好的方式。

5 bitcode

有時候,在添加第三方SDK的時候,模擬器OK,但是真機調試時會遇到

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

這個根據翻譯很好理解,就是 Build Setting bitcode 設置為 NO。
這個bitcode,大致用于打包上傳appStore是形成中間二進制文件,減少上傳時app包大小。一般情況下,很多第三方SDK不支持bitcode,所以設置NO吧,跟https一樣。
iOS是可選YES/NO。而watchOS,必須YES。

6 scheme

白名單,調用檢查其他App需要添加 NSArray 類:LSApplicationQueriesSchemes
添加打印的那些 error,下面一些常見的復制粘貼過來湊數:其他還有很多。一般在繼承文檔都有說明。

<key>LSApplicationQueriesSchemes</key> 
<array> <!-- 微信 URL Scheme 白名單--> 
<string>wechat</string> 
<string>weixin</string> 

<!-- 新浪微博 URL Scheme 白名單--> 
<string>sinaweibohd</string> 
<string>sinaweibo</string> 
<string>sinaweibosso</string> 
<string>weibosdk</string> 
<string>weibosdk2.5</string> 

<!-- QQ、Qzone URL Scheme 白名單--> 
<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> 

<!-- 支付寶 URL Scheme 白名單--> 
<string>alipay</string> 
<string>alipayshare</string>
</array>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容