ios - 如何在 Cordova App 中打包 Watch App

标签 ios cordova xamarin.ios watchkit telerik-appbuilder

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

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

最佳答案

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

  1. 首先你需要有 .ipa主机应用程序的文件和 .appex WatchKit 应用程序包。一个.ipa文件是一个常规的 iOS 应用程序存档文件,可以像任何其他存档一样解压缩。例如,您可以使用 unzip命令行工具(例如 unzip <my_ipa_file>.ipa )。解压 Telerik AppBuilder .ipa和 WatchKit 应用程序。
    注意: 每个 .ipa存档包含名为 Payload 的文件夹实际.app在哪里应用程序包位于。压缩此文件夹时应保持这一命名约定。
  2. 删除_CodeSignature文件夹位于 Payload/<cordova_application_name>.app/_CodeSignature . _CodeSignature文件夹包含 xml 文件,该文件表示在应用程序二进制代码设计过程中创建的哈希表。它主要包含有关应用程序资源的信息。我们不需要这个,因为我们的目标是生成新的。
  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>

添加 archived-expanded-entitlements.xcentPayload/<cordova_application_name>.app/archived-expanded-entitlements.xcent
注意:Main_Application_Bundle_IdentifierCFBundleIdentifier你的 Cordova 应用程序的值(value)。有关 App_Identifier_Prefix 的更多信息检查这个 SO 问题 Changing manually $(AppIdentifierPrefix) property?

  1. 所有 .mobileprovision文件应使用正确的应用程序 ID 和相同的证书。我建议最初使用 .ipa cordova 应用程序的文件使用正确的 .mobileprovision 签名条款。否则你应该把你的.mobileprovisionPayload/<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. 我们准备好了!

如果您在这个问题上需要任何进一步的帮助,请告诉我。

关于ios - 如何在 Cordova App 中打包 Watch App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32686529/

相关文章:

ios - 为什么在针对模拟器时框架包路径解析为 DerivedData 构建目录?

android - PhoneGap 和 Titanium4j Mobile 的区别

c# - 我是否必须在 MonoTouch 的 UITableViewSource 中保留对 GetCell() 和 GetViewForHeader() 的返回值的显式引用?

ios - 单点触控 : How to save a huge PDF downloaded from an URL incrementally?

.net - MonoTouch 应用程序无法构建/部署到 iphone 设备,但它在 iSimulator 上运行良好

ios - 自动布局工作错误

ios - 如何在转换前计算 UIView 的框架?

通过用户代理检测 iPhone 应用程序操作系统

android - 谷歌 GCM 还可用吗?

android - 如何在Phonegap Android应用中播放嵌入在其他网站上的视频