如何在 Cordova App 中打包 Watch App

How to Package Watch App within Cordova App

我们有一个使用 Telerik AppBuilder 开发的跨平台 cordova 应用程序,以及一个使用 Xamarin Studio 构建的 WatchKit 应用程序(扩展 + watchkit 应用程序)。我不知道捆绑编译扩展(.appex,对吗?)和 Telerik AppBuilder 输出的 IPA 的正确步骤是什么。

考虑到我们使用的技术范围很广,我什至不知道应该从哪里开始寻找这个过程。我注意到我可以像大多数其他 ZIP 存档一样访问 IPA 内容,但不知道这是否是正确的第一步...

可以通过编辑主 Cordova 应用程序的 .ipa 文件来实现。一般来说,应该在 Plugins 文件夹下添加 .appex 文件,为主机 iPhone/iPad 应用程序创建 .entitlements 文件,最后重新编码二进制文件并压缩 Payload.ipa 文件。以下是描述如何将使用 Telerik AppBuilder 开发的 Cordova 应用程序与 WatchKit 应用程序(扩展 + watchkit 应用程序)结合起来的步骤。

  1. 首先,您需要为您的主机应用程序提供 .ipa 文件,并为 WatchKit 应用程序提供 .appex 包。 .ipa 文件是一个常规的 iOS 应用程序存档文件,可以像任何其他存档一样解压缩。例如,您可以使用 unzip 命令行工具(例如 unzip <my_ipa_file>.ipa)。解压 Telerik AppBuilder .ipa 和 WatchKit 应用程序。
    注意: 每个 .ipa 存档包含名为 Payload 的文件夹,其中实际 .app 应用程序包所在。压缩此文件夹时应保持这一命名约定。
  2. 删除位于 Payload/<cordova_application_name>.app/_CodeSignature_CodeSignature 文件夹。 _CodeSignature 文件夹包含 xml 文件,该文件表示在应用程序二进制代码签名过程中创建的散列 table。它主要包含有关应用程序资源的信息。我们不需要这个,因为我们的目标是生成新的。
  3. .appex WatchKit 扩展复制到 Payload/cordova_application_name>.app/Plugins(您很可能需要创建 Plugins 文件夹)。
  4. 使用模板

    创建 archived-expanded-entitlements.xcent

    <?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>application-identifier</key> <string>'App_Identifier_Prefix'.'Main_Application_Bundle_Identifier'</string> <key>keychain-access-groups</key> <array> <string>'App_Identifier_Prefix'.'Main_Application_Bundle_Identifier'</string> </array> </dict> </plist>

Payload/<cordova_application_name>.app/archived-expanded-entitlements.xcent下添加archived-expanded-entitlements.xcent
注意: Main_Application_Bundle_Identifier 是您的 cordova 应用程序的 CFBundleIdentifier 值。有关 App_Identifier_Prefix 的更多信息,请查看此 SO 问题 Changing manually $(AppIdentifierPrefix) property?

  1. 所有 .mobileprovision 文件应使用正确的应用程序 ID 和相同的证书。我建议最初使用正确的 .mobileprovision 条款对 cordova 应用程序的 .ipa 文件进行签名。否则你应该把你的 .mobileprovision 放在 Payload/<cordova_application_name>.app/embedded.mobileprovision.
  2. 使用codesign 工具重新签署Cordova 应用程序的二进制文件。

    codesign -f -s "Certificate_Name" --entitlements Payload/<cordova_application_name>.app/archived-expanded-entitlements.xcent Payload/<cordova_application_name>.app/<cordova_application_name>
  3. 将编辑后的 ​​Payload 压缩回 .ipa 文件。 (例如 zip -r <expected_ipa_name>.ipa Payload/
  4. 我们准备好了!

如果您需要有关此问题的任何进一步帮助,请告诉我。