Xcode 的 PackageApplication 的替代品是什么?

What's the replacement for Xcode's PackageApplication?

随着 Xcode 8.3 PackageApplication 消失了。我确实用它来将 *.app package/directory 转换为 *.ipa 文件(重新签名后):

xcrun -sdk iphoneos PackageApplication -v "MyApp.app" -o "MyApp.ipa"

是否有任何替代品,以便我可以继续将 .app 转换为 .ipa?

这是错误: xcrun:错误:无法找到实用程序 "PackageApplication",不是开发人员工具或在 PATH 中 看起来 PackageApplication 已从 Xcode 8.3 中删除。 在 Xcode 8.2 中有一个警告:不推荐使用 PackageApplication,请改用 xcodebuild -exportArchive

显然不需要使用任何其他工具,也不需要更改导致 *.app 包的过程(换句话说:不需要使用 xcodebuild -exportArchive)。

我们所要做的就是压缩 *.app 包:

pushd "/build"
mkdir ./Payload
cp -R "$PATH_TO_SIGNED_APP_PACKAGE.app" ./Payload
zip -qyr MyApp.ipa ./Payload
rm -r ./Payload
popd

注:

  1. 跳转到目标目录,这里/build。这确保我们以后不会在 zip 存档中获得完整路径。
  2. 创建一个名为 Payload 的文件夹(重要,这不能改变)
  3. 将 *.app 包复制到 Payload 文件夹
  4. 压缩文件夹并使用 *.ipa 作为扩展名而不是 *.zip
  5. 跳回到你原来的地方

另一种解决方法是将 PackageApplication 工具的副本从以前的 Xcode 放入 Xcode 8.3 目录

从 Xcode 8.2.1 中获取 PackageApplication 脚本:https://gist.github.com/anonymous/48f3e4c5ae25313dc0fe10d9ec50c3fc

记得让它可执行

chmod +x PackageApplication

然后将其放入您的 8.3 Xcode.app as

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication