如何移除Xcode复制的一些Swift库?

3
在Xcode 10中,“复制Swift标准库”脚本是最后执行的,即在添加到目标的任何自定义构建阶段之后。因此,不可能创建一个自定义构建脚本来专门删除Xcode添加的Swift标准dylib文件。
问题是如何删除Xcode错误添加的某些标准库?
其原因是当Xcode 10构建具有照片编辑扩展名的Swift 4.2 macOS应用程序时,即使应用程序没有地图功能或导入MapKit,它也会将libswiftMapKit.dylib添加到应用程序包中。这导致了应用审核被拒绝。

这很奇怪,苹果会根据他们的IDE结果拒绝一个应用程序。你的代码是否导致了MapKit捆绑问题? - Cristik
愿意和我们分享一下吗?这样我们就不会试图猜测是什么导致了MapKit捆绑? - Cristik
@Cristik 可以。怎么做? - adib
Github和分享链接? - Cristik
@Cristik 完成 - https://github.com/adib/Xcode-10-MapKit-Dependency - adib
显示剩余2条评论
1个回答

0

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

  1. 在 Xcode 10 中点击 编辑方案
  2. 在方案编辑中,展开 存档 部分。
  3. 单击 后置操作

输入以下 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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接