Xcode自定义shell脚本正在减慢编译时间

 len1111_744 发布于 2023-02-09 15:41

每当我构建时,测试对我的Xcode项目的任何更改都会成为一种耐心的练习.在编译完所有源文件之后,我在Xcode顶部的活动窗口中收到以下消息:

"运行3个自定义Shell脚本中的3个"

我没有添加任何自己的自定义shell脚本,但我通过Cocoapods使用了很多依赖项,我使用2个框架构建环境,Crashlytics和Tapstream.Crashlytics要求你在构建阶段添加一个运行脚本,除了我不知道其他的来自哪里,它们似乎是我构建时间的瓶颈.

任何人都可以告诉我发生了什么以及我如何加快速度?

2 个回答
  • 我无法启发你,但我可以告诉你我是如何阻止我跑步的.这也发生在安装Cocoapods之后.在我的主要项目Target,下Build Phases,我注意到题为两个条目Check Pods Manifest.lock和另一个叫Copy Pods Resources.

    两者都有一个未经检查的选项Run script only when installing.我检查了两个,至少现在我的项目构建并运行良好,无需运行脚本.

    这是一个蹩脚的答案,因为我无法真正给你任何更多的信息,它甚至可能不适用于你的情况,所以希望有人出现并启发我们.


    可能的外部问题

    所以我在调试pod安装的库的NSLocalized字符串文件无法正常工作的问题时遇到了令人沮丧的经历.事实证明这是因为我检查了上面提到的选项.Pods-resources.sh,有安装捆绑的行,没有在调试模式下运行.它只在安装时运行 - 当然!值得注意的事情.

    这个问题的更多信息:

    NSLocalizedStringFromTable无法在CocoaPod依赖项中工作

    2023-02-09 15:44 回答
  • 为了解决缓慢的"复制窗格资源"问题,我找到了一个解决方案,只有在以前没有复制过资源时才复制资源.

    为此,我们必须修补由cocoapods创建的*-resources.sh文件,这样只有当目标目录中生成的文件不存在时才会发生复制过程(它是在第一次复制时创建的).只要此目标目录存在并包含此自动生成的文件,就会跳过复制资源阶段.这在我的项目中节省了大约30秒(当然取决于你的项目规模).为此,请执行以下操作:

    在项目根目录中创建名为"copy_pod_resources_once.patch"的补丁文件,其中包含以下内容:

    5a6,13
    > NONCE_FILE="${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/copyresources-done.nonce"
    > if [ -f "$NONCE_FILE" ]; then
    >    echo "already copied resources"
    >    exit 0
    > else
    >    touch "$NONCE_FILE"
    > fi
    > 
    

    在项目的Podfile中添加以下post install hook:

    post_install do |installer_representation|
        system('find "./Pods/Target Support Files" -name "*-resources.sh" | xargs -I{} patch -p0 {} -i ./copy_pod_resources_once.patch')
    
        <other post install stuff>
    end
    

    2023-02-09 15:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有