產(chǎn)生背景:在制作自己私有庫的時候依賴了某SDK,該SDK只能在真機(jī)編譯,即只支持真機(jī)指令集不支持模擬器指令集。
pod repo push / pod lib lint 提示如下錯誤導(dǎo)致podspec驗(yàn)證不通過。
- 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)
這個錯誤的原因是依賴的x.a靜態(tài)包只支持真機(jī)指令集(arm64 armv7 armv7s)葛碧,不支持模擬器指令集(i386 x86_64),而在pod repo push / pod lib lint驗(yàn)證的時候會驗(yàn)證模擬器指令集(i386 x86_64)过吻。
官方說法 CocoaPods/issues
通過 lipo -info + SDK路徑
命令查看 SDK 支持的指令集
解決辦法兩個:
1. x.a支持模擬器指令集进泼,這個一般是難以實(shí)現(xiàn)的,畢竟很大可能性是第三方的SDK纤虽。
2. pod repo push / pod lib lint 跳過對模擬器指令集的驗(yàn)證
針對方案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è)置此處將在 模擬器編譯時不產(chǎn)生二進(jìn)制文件逼纸。
驗(yàn)證時跳過驗(yàn)證
pod repo lint 命令添加 --skip-import-validation發(fā)布更新跳過驗(yàn)證
pod repo push 命令添加 --skip-import-validation