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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容