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

问题描述 投票:0回答:1

我运行了一个2年前开始使用XCode7构建的Ionic应用程序,我决定转移到最新版本的XCode即9.我遇到了很多问题,阅读了很多内容并尝试了很多东西,但我我还是卡在不知名的地方。当我使用XCode 7构建应用程序时,一切都很好,我可以在应用程序商店上构建和分发。

这是使用XCode 9的问题:

  • 需要DEVELOPMENT_TEAM所以我添加了build.json和开发团队编号。现在的构建说我有相互矛盾的配置文件。当XCode7可以实现时,这怎么可能呢?
  • 有人说,如果我设法构建(我现在不支持)推送通知也会因为xCode 9中的一些权利问题而停止工作。

我真的很担心,没有答案。离子用户,你有没有设法从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
ios cordova ionic-framework xcode8 xcode9
1个回答
0
投票

如果你需要答案,这就是我修复它的方法。

首先,您必须知道我不能也不想使用自动签名,因为我有大量现有的配置文件,我使用的是jenkins,在没有大量关于离子的文档的情况下不能冒险破坏某些东西/ cordova /推送通知和自动签名。

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

离子构建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" : "***"
    }
  }
}

我遇到了很多问题,因为我为我的测试人员以及stackoverflow / internet博客上的所有地方构建了一个临时版本,即使你构建了分发版,也必须使用“iPhone Developer”。对我来说情况并非如此。如果您需要ad-hoc构建,则需要将代码签名设置为“iPhone Distribution”并添加您可以在〜/ Library / MobileDevice / Provisioning Profiles中找到的供应配置文件。例如:ac073a34 - **** - **** - **** - 623f0724c119。如果您不知道哪一个是您所追求的那个,您可以使用您的应用ID“grep”它们。这意味着每次更新配置文件时都必须在构建配置中更改此编号...您必须喜欢它。

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

确保您的cordova推送插件是最新的。我的版本1被困,但最新的“版本1”似乎没问题。

ionic plugin add [email protected] --variable SENDER_ID=${sender_id}

STILL,生成的xcode项目中的推送通知功能不是“ON”。你必须在MANUALLY上进行切换,这是从jenkins构建时的正确痛苦。但它的工作原理使得解决方法有些“可接受”。如果有人知道如何让插件在不打开xcode projet的情况下将功能切换为“ON”,那将是非常棒的!

3)当您生成ipa时,您必须提供export.plist

这不是事先要求的。使用XCode 7,您可以使用PackageApplication进行xcrun并完成工作。那么,现在PackageApplication不可用,并且在导出时需要更多工作。提醒一下,我想为我的测试人员建立特别的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,你不是让我的生活更轻松。

© www.soinside.com 2019 - 2024. All rights reserved.