產(chǎn)生背景:在制作自己私有庫(kù)的時(shí)候依賴(lài)了某SDK,該SDK只能在真機(jī)編譯,即只支持真機(jī)指令集不支持模擬器指令集。
pod repo push / pod lib lint 提示如下錯(cuò)誤導(dǎo)致podspec驗(yàn)證不通過(guò)。
- NOTE | [iOS] xcodebuild: ld: warning: ignoring file xxx/xx/x.a, missing required architecture x86_64 in file xxx/xx/x.a (2 slices)
- NOTE | [iOS] xcodebuild: ld: warning: ignoring file xxx/xx/x.a, missing required architecture i386 in file xxx/xx/x.a (2 slices)
這個(gè)錯(cuò)誤的原因是依賴(lài)的x.a靜態(tài)包只支持真機(jī)指令集(arm64 armv7 armv7s),不支持模擬器指令集(i386 x86_64),而在pod repo push / pod lib lint驗(yàn)證的時(shí)候會(huì)驗(yàn)證模擬器指令集(i386 x86_64)。
官方說(shuō)法 CocoaPods/issues
通過(guò) lipo -info + SDK路徑 命令查看 SDK 支持的指令集
解決辦法兩個(gè):
1. x.a支持模擬器指令集,這個(gè)一般是難以實(shí)現(xiàn)的,畢竟很大可能性是第三方的SDK。
2. pod repo push / pod lib lint 跳過(guò)對(duì)模擬器指令集的驗(yàn)證
針對(duì)方案2具體操作如下:
- 設(shè)置VALID_ARCHS在 podspec 文件中添加
s.pod_target_xcconfig = { 'VALID_ARCHS[sdk=iphonesimulator*]' => '' }
或
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'arm64 armv7 armv7s ' }
如果項(xiàng)目已經(jīng)設(shè)置 pod_target_xcconfig,添加到已有值的后面,設(shè)置此處將在 模擬器編譯時(shí)不產(chǎn)生二進(jìn)制文件。
驗(yàn)證時(shí)跳過(guò)驗(yàn)證
pod repo lint 命令添加 --skip-import-validation發(fā)布更新跳過(guò)驗(yàn)證
pod repo push 命令添加 --skip-import-validation