ionic cordova xcode 9 构建开发团队和冲突的配置文件

ionic cordova xcode 9 build development team and conflicting provisionning profiles

我 运行 一个 2 年前开始的 Ionic 应用程序仍在使用 XCode7 构建,我决定转向最新版本的 XCode 即 9。我已经遇到了很多问题,阅读了很多书并尝试了一些东西,但我仍然陷入困境。当我使用 XCode 7 构建应用程序时一切正常,我可以在应用程序商店中构建和分发。

这是我使用 XCode 9 时遇到的问题:

我真的很担心,没有答案。 Ionic 用户,您是否设法从 XCode 7 移动到 XCode 8 或 9?如何?注意事项?示例项目 ?

Cordova CLI: 6.4.0 
Ionic CLI Version: 2.2.3
Ionic App Lib Version: 2.2.1
ios-deploy version: 1.9.2 
ios-sim version: 5.0.13 
OS: macOS
Node Version: v7.10.0
Xcode version: Xcode 9.0.1 Build version 9A1004

如果您需要答案,请按以下方式解决。

首先,你必须知道我不能也不想使用自动签名,因为我有大量现有的配置文件,我正在使用 jenkins,不能在没有大量关于 ionic / cordova / 推送通知和自动签名的文档。

1) 您需要提供一个build.json。你必须。真的。

ionic build ios --buildConfig build.json

这是我的 build.json。

{
  "ios": {
    "debug": {
      "codeSignIdentity": "iPhone Distribution",
      "developmentTeam": "****",
      "packageType": "ad-hoc",
      "provisioningProfile" : "****"
    },
    "release": {
      "codeSignIdentity": "iPhone Distribution",
      "developmentTeam": "****",
      "packageType": "app-store",
      "provisioningProfile" : "***"
    }
  }
}

我遇到了很多问题,因为我为我的测试人员构建了一个 ad-hoc 版本,并且在 Whosebug/互联网博客上随处可见,它写着你必须使用 "iPhone Developer" 即使你构建分发。我不是这样的。如果你想要 ad-hoc 构建,你需要将代码签名设置为 "iPhone Distribution" 并添加你可以在 ~/Library/MobileDevice/Provisioning Profiles 中找到的配置文件时髦字符串。例如:ac073a34-****-****-****-623f0724c119。如果您不知道自己想要的是哪一个,可以使用您的应用 ID "grep" 他们。这意味着每次更新配置文件时,您都必须在构建配置中更改此数字...您一定会喜欢的。

2) 推送通知无法开箱即用

确保您的 cordova 推送插件是最新的。我的卡在版本 1 但最新的 "version 1" 似乎没问题。

ionic plugin add phonegap-plugin-push@1.10.6 --variable SENDER_ID=${sender_id}

仍然,推送通知功能在生成的 xcode 项目中不是 "ON"。当你从詹金斯构建时,你必须手动打开它,这是一个正确的痛苦。但它有效,所以解决方法有点 "acceptable"。如果有人知道如何在不打开 xcode 项目的情况下让插件切换功能 "ON",那就太好了!

3) 当你生成你的 ipa 时你必须提供一个 export.plist

事先不需要。使用 XCode 7,您可以使用 PackageApplication 执行 xcrun 并完成工作。那么,现在 PackageApplication 不可用并且在导出时需要更多工作。提醒一下,我想为我的测试人员构建 ad-hoc ipa。这可能与 testflight 不同。

在我的构建脚本中:

cd platforms/ios
  xcodebuild \
      -target "${PROJECT_NAME}" \
      -scheme "${PROJECT_NAME}" \
      -configuration Release \
      -archivePath "build.xcarchive" \
      clean archive

  xcodebuild \
      -exportArchive \
      -archivePath "build.xcarchive" \
      -exportOptionsPlist "export.plist" \
      -exportPath "${EXPORT_DIRECTORY}"

Export.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>ad-hoc</string>
    <key>teamID</key>
    <string>*****</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>YOUR_APP_ID</key>
        <string>PROVISIONING_PROFILE_FUNKY_STRING</string>
    </dict>

</dict>
</plist>

我在具有多个环境和多个供应配置文件的同一项目上有多个目标,我可以告诉你我不高兴提供这样的细节,因为它以前不需要。如果有人知道如何减轻疼痛,我很乐意听取您的意见。

谢谢 Apple,你并没有让我的生活更轻松。