可以通过编辑.ipa
Cordova 主应用程序的文件来实现这一点。通常应该在文件夹.appex
下添加Plugins
文件,为主机 iPhone/iPad 应用程序创建.entitlements
文件,最后重新设计二进制文件并再次压缩Payload
到.ipa
文件。以下是描述如何将使用 Telerik AppBuilder 开发的 Cordova 应用程序和 WatchKit 应用程序(扩展程序 + watchkit 应用程序)结合起来的步骤。
- 首先,您需要拥有
.ipa
主机应用程序的文件和.appex
WatchKit 应用程序的包。文件是常规的.ipa
iOS 应用程序存档文件,可以像任何其他存档一样解压缩。例如,您可以使用unzip
命令行工具(例如unzip <my_ipa_file>.ipa
)。解压缩 Telerik AppBuilder.ipa
和 WatchKit 应用程序。
注意: 每个.ipa
存档都包含名为Payload
实际.app
应用程序包所在的文件夹。压缩此文件夹时应保持此命名约定。
- 删除
_CodeSignature
文件夹Payload/<cordova_application_name>.app/_CodeSignature
。该_CodeSignature
文件夹包含 xml 文件,该文件表示在应用程序二进制代码设计过程中创建的哈希表。它主要包含有关应用程序资源的信息。我们不需要这个,因为我们的目标是生成新的。
- 将
.appex
WatchKit 扩展复制到Payload/cordova_application_name>.app/Plugins
(您很可能必须创建Plugins
文件夹)。
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_Identifier
是CFBundleIdentifier
您的cordova 应用程序的值。有关App_Identifier_Prefix
检查此 SO 问题的更多信息,请手动更改 $(AppIdentifierPrefix) 属性?
- 所有
.mobileprovision
文件都应使用正确的应用程序 ID 和相同的证书。我建议最初使用正确的条款.ipa
对 cordova 应用程序的文件进行签名。.mobileprovision
否则你应该把你的.mobileprovision
放在下面Payload/<cordova_application_name>.app/embedded.mobileprovision
。
- 使用
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>
- 将编辑后的文件压缩
Payload
回.ipa
文件。(例如zip -r <expected_ipa_name>.ipa Payload/
)
- 我们可以走了!
如果您在这个问题上需要任何进一步的帮助,请告诉我。