Xcode 构建错误:从 UIKit 迁移到 SwiftUI 后 Info.plist 出现“找不到构建输入文件”

问题描述 投票:0回答:1

尝试将我的应用程序从 UIKit 迁移到 SwiftUI 后,我在 Xcode 项目中遇到持续的构建错误。尽管采取了一些故障排除步骤,但问题仍未解决。以下是问题的详细信息、错误消息以及我迄今为止尝试修复该问题所采取的步骤。

### 错误消息:

Build input file cannot be found: '/Users/rgf10hotmail.es/Desktop/Developer/Recipeas2024/CocinArtGit/Recipeas/Info.plist'. Did you forget to declare this file as an output of a script phase or custom build rule which produces it?

### 项目背景:

  • 迁移: 将应用程序从 UIKit 转换到 SwiftUI。

  • Xcode 版本: 最新版本(截至 2024 年 12 月 3 日)。

  • SwiftUI 设置: 在迁移过程中删除了

    AppDelegate
    SceneDelegate

  • Info.plist:

    Info.plist
    创建了一个新的
    Recipeas/Info.plist
    文件。

解决问题所采取的步骤:

  1. 在项目设置中验证Info.plist路径:

    • 构建设置打包Info.plist文件下检查。

    • 更新了新

      Info.plist
      位置的路径 (
      Recipeas/Info.plist
      )。

  2. 检查构建阶段:

    • 审查了构建阶段复制捆绑资源以确保包含

      Info.plist

    • 已验证没有自定义构建脚本引用旧的

      Info.plist
      路径。

  3. 清理构建文件夹并删除派生数据:

    • 已执行产品>清理构建文件夹

    • 已从

      ~/Library/Developer/Xcode/DerivedData
      手动删除派生数据。

  4. 删除了过时的参考文献:

    • 确保项目导航器中没有对旧

      Info.plist
      路径的引用。

    • 删除了所有指示丢失文件的红色突出显示的文件引用。

  5. 直接更新项目文件:

    • 打开

      project.pbxproj
      以搜索对旧
      Info.plist
      路径的任何残留引用。

    • 进行了必要的更正,确保没有绝对路径指向已删除的位置。

  6. 已验证的搜索路径:

    • 检查了标题搜索路径库搜索路径框架搜索路径构建设置,以确保它们不引用旧路径。
  7. 将Info.plist重新添加到项目中:

    • 删除了当前的
      Info.plist
      引用并重新添加它,以确保 Xcode 正确识别新文件。
  8. 重新启动 Xcode 和系统:

    • 多次重启Xcode。

    • 重新启动我的 Mac 以确保清除所有缓存。

  9. 检查多个目标:

    • 已验证项目中的所有目标都引用了正确的
      Info.plist
  10. 确保相对路径:

    • 确认项目使用相对路径而不是绝对路径,以避免路径解析问题。

### 附加说明:

  • 错误消息引用已删除的路径:

    /Users/rgf10hotmail.es/Desktop/Developer/Recipeas2024/CocinArtGit/Recipeas/Info.plist

  • 我已确保没有脚本或构建规则尝试访问此旧路径。

  • 在从 UIKit 迁移到 SwiftUI 之前,该项目运行正常。

### 到目前为止我尝试过的:

  • 清理构建文件夹并删除派生数据。

  • 更新项目设置中的

    Info.plist
    路径。

  • 删除

    Info.plist
    文件并将其重新添加到项目中。

  • 在整个项目中搜索对旧

    Info.plist
    路径的任何引用。

  • 确保更新所有构建阶段和脚本以使用新的

    Info.plist
    路径。

  • 重新启动 Xcode 和我的电脑。

尽管做出了这些努力,构建过程仍然失败并出现相同的错误。我不确定构建系统在哪里仍在引用旧的

Info.plist
路径。

提前致谢。

<?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>
    <!-- Google Mobile Ads SDK -->
    <key>GADApplicationIdentifier</key>
    <string>ca-app-pub-9021089007171782~8539445706</string>
    
    <!-- App Transport Security -->
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    
    <!-- Custom Fonts -->
    <key>UIAppFonts</key>
    <array>
        <string>Montserrat-Black.ttf</string>
        <string>Montserrat-Bold.ttf</string>
        <string>Montserrat-ExtraBold.otf</string>
        <string>Montserrat-ExtraLight.ttf</string>
        <string>Montserrat-Light.ttf</string>
        <string>Montserrat-Medium.ttf</string>
        <string>Montserrat-Regular.ttf</string>
    </array>
    
    <!-- User Interface Style -->
    <key>UIUserInterfaceStyle</key>
    <string>Light</string>
</dict>
</plist>





import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            HomeView()
                .navigationTitle("Recipeas")
        }
    }
}


import SwiftUI
import GoogleMobileAds

@main
struct NameApp: App {
    // Initialize Google Mobile Ads SDK
    init() {
        GADMobileAds.sharedInstance().start(completionHandler: nil)
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
swift xcode swiftui uikit
1个回答
0
投票

Info.plist 不作为单独的文件可见,除非您向其中添加非标准值

  • 您在项目中看到 Info.plist 了吗?
  • 您是否看到它的值反映在 [项目导航器中的蓝色项目图标] -> 目标 -> [您的目标名称] -> 信息下?
  • 您是否尝试为其添加自定义值? (这将触发它变得可见)

参见:https://stackoverflow.com/a/67896587/2804585

© www.soinside.com 2019 - 2024. All rights reserved.