pod repo push / pod lib lint i386 x86_64 验证不通过

产生背景:在制作自己私有库的时候依赖了某SDK,该SDK只能在真机编译,即只支持真机指令集不支持模拟器指令集。

pod repo push / pod lib lint 提示如下错误导致podspec验证不通过。

    - 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静态包只支持真机指令集(arm64 armv7 armv7s),不支持模拟器指令集(i386 x86_64),而在pod repo push / pod lib lint验证的时候会验证模拟器指令集(i386 x86_64)。
官方说法 CocoaPods/issues

通过 lipo -info + SDK路径 命令查看 SDK 支持的指令集

解决办法两个:
1. x.a支持模拟器指令集,这个一般是难以实现的,毕竟很大可能性是第三方的SDK。
2. pod repo push / pod lib lint 跳过对模拟器指令集的验证

针对方案2具体操作如下:

  1. 设置VALID_ARCHS在 podspec 文件中添加
s.pod_target_xcconfig = { 'VALID_ARCHS[sdk=iphonesimulator*]' => '' }
或
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'arm64 armv7 armv7s ' }

如果项目已经设置 pod_target_xcconfig,添加到已有值的后面,设置此处将在 模拟器编译时不产生二进制文件。

  1. 验证时跳过验证
    pod repo lint 命令添加 --skip-import-validation

  2. 发布更新跳过验证
    pod repo push 命令添加 --skip-import-validation

  • 解决pod lib lint/repo push不支持i386编译&只能真机运行的库
  • Cocoapods 是如何做校验的(缺少支持i386导致pod lib lint失败)

你可能感兴趣的:(pod repo push / pod lib lint i386 x86_64 验证不通过)