ios - xcodebuild 将使用 Xcode 6 和备用包 ID 进行协同签名,但不会使用 Xcode 7

标签 ios xcode xcodebuild info.plist codesign

我们的 CI 服务器通过交换不同的 bundle ID 来每天临时构建我们的应用程序,如下所示:

/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.example.app.daily" \
  app/app-Info.plist

然后使用 xcodebuild 构建和归档:

xcodebuild \
  CODE_SIGNING_REQUIRED=YES \
  CODE_SIGN_IDENTITY="$DEVELOPER_NAME" \
  PROVISIONING_PROFILE="$PROFILE_UUID" \
  -sdk iphoneos \
  -workspace "$XCODE_WORKSPACE" \
  -scheme "$XCODE_SCHEME" \
  clean archive \
  -archivePath "$ARCHIVE_PATH"

在 Xcode 6 中这完美地工作,但在 Xcode 7 中我们得到这个错误:

Code Sign error: Provisioning profile does not match bundle identifier: The provisioning profile specified in your build settings (“Daily AdHoc Profile for CI Servers”) has an AppID of “com.example.app.daily” which does not match your bundle identifier “com.example.app”.

就好像 Xcode 7 没有看到我们更改了包 ID。它在寻找其他地方吗?

最佳答案

@Mozilla 为我指明了正确的方向。升级到 Xcode 7 项目时,将包标识符移到了build设置的打包部分中的“产品包标识符”设置中。

Xcode 的帮助边栏显示此设置名为 PRODUCT_BUNDLE_IDENTIFIER。所以我的命令变成了:

xcodebuild \
  CODE_SIGNING_REQUIRED=YES \
  CODE_SIGN_IDENTITY="$DEVELOPER_NAME" \
  PROVISIONING_PROFILE="$PROFILE_UUID" \
  PRODUCT_BUNDLE_IDENTIFIER="com.example.app.daily" \
  -sdk iphoneos \
  -workspace "$XCODE_WORKSPACE" \
  -scheme "$XCODE_SCHEME" \
  clean archive \
  -archivePath "$ARCHIVE_PATH"

成功了!

关于ios - xcodebuild 将使用 Xcode 6 和备用包 ID 进行协同签名,但不会使用 Xcode 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33242083/

相关文章:

ios - 使用 Xcode 8.3.2 为 AdHoc IPA 导出指定配置文件

objective-c - Objective-C 对象属性的内省(introspection)

ios - 使用按钮索引以编程方式从 uiactionsheet 截取屏幕截图

ios - 重写的 MKMapView drawMapRect 方法返回错误

ios - SpriteKit 错误地检测到多重碰撞

xcode - 如何在 NSBundle 中包含 zip 文件?

xcode - Mac 开发人员使用什么自动构建系统?

ios - 将 Swift 转换为 Objective-C

objective-c - 我的 .xcdatamodel 中的空心箭头是什么?

iphone - 从 key 链中的 key 对中提取公钥