【问题标题】:How to remove some of the Swift libraries copied by Xcode?如何删除 Xcode 复制的一些 Swift 库?
【发布时间】:2018-09-21 02:27:49
【问题描述】:

在 Xcode 10 中,“复制 Swift 标准库”脚本最后完成 - 在可能添加到目标的任何自定义构建阶段之后。因此,无法创建自定义构建脚本来专门删除 Xcode 添加的Swift 标准dylib 文件。

问题是,如何删除其中一些被Xcode错误添加的标准库?

其背后的原因是,当 Xcode 10 构建具有照片编辑扩展的 Swift 4.2 macOS 应用程序时,它会将 libswiftMapKit.dylib 添加到应用程序包中 - 即使应用程序没有地图功能或导入 MapKit。这导致 App Review 被拒绝。

【问题讨论】:

  • 奇怪的是,Apple 会根据 IDE 的结果拒绝应用程序。会不会是您的代码导致了 MapKit 捆绑?
  • @Cristik - 不,因为我有一个骨架项目可以证明这一点。
  • 愿意与我们分享吗?这样我们就不会试图猜测导致 MapKit 捆绑的原因?
  • @Cristik Can。怎么样?
  • Github 并分享链接?

标签: swift xcode macos


【解决方案1】:

要删除 Swift 标准库,请在方案中添加 Post-Actions。这很可能是存档后操作,因为存档通常在发布之前进行(上传到 App Store 或使用开发者 ID 凭据重新签名)。

  1. 在 Xcode 10 中点击Edit Scheme
  2. 在方案编辑中,展开Archive 部分。
  3. 点击Post-Actions

输入以下bash 脚本片段(以及您可能已经拥有的任何其他后期操作)

# This variable points to the `Frameworks` folder of the final application.
full_frameworks_path="${ARCHIVE_PRODUCTS_PATH}/Applications/${FRAMEWORKS_FOLDER_PATH}"
# Specify the libraries to remove, the example below removes Swift's MapKit wrapper.
rm -f "${full_frameworks_path}/libswiftMapKit.dylib

但是请注意,这并不能解决照片应用扩展实际上链接到libswiftMapKit.dylib 的根本问题 — Xcode 10.0 添加的依赖项,无论它是否真的使用 MapKit。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多