3

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

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

4

1 回答 1

3

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

  1. 首先,您需要拥有.ipa主机应用程序的文件和.appexWatchKit 应用程序的包。文件是常规的.ipaiOS 应用程序存档文件,可以像任何其他存档一样解压缩。例如,您可以使用unzip命令行工具(例如unzip <my_ipa_file>.ipa)。解压缩 Telerik AppBuilder.ipa和 WatchKit 应用程序。
    注意: 每个.ipa存档都包含名为Payload实际.app应用程序包所在的文件夹。压缩此文件夹时应保持此命名约定。
  2. 删除_CodeSignature文件夹Payload/<cordova_application_name>.app/_CodeSignature。该_CodeSignature文件夹包含 xml 文件,该文件表示在应用程序二进制代码设计过程中创建的哈希表。它主要包含有关应用程序资源的信息。我们不需要这个,因为我们的目标是生成新的。
  3. .appexWatchKit 扩展复制到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.xcent下面的Payload/<cordova_application_name>.app/archived-expanded-entitlements.xcent
注释: Main_Application_Bundle_IdentifierCFBundleIdentifier您的cordova 应用程序的值。有关App_Identifier_Prefix检查此 SO 问题的更多信息,请手动更改 $(AppIdentifierPrefix) 属性?

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

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

于 2015-10-08T13:44:20.147 回答