You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

React Native项目转npm库时iOS构建报错:Build input file cannot be found: 'main.m'

解决iOS构建错误:Build input file cannot be found: 'main.m'

这个问题的核心原因很清晰——你的rsync命令误排除了存放main.m的核心目录,导致编译时Pod项目找不到这个关键文件。下面是具体的修复步骤:

1. 调整rsync命令,保留main.m所在目录

你当前的rsync命令里包含了--exclude='xyzClientMobile',而main.m正好位于ios/xyzClientMobile/路径下,这直接导致该文件没有被复制到dist文件夹中。修改命令,去掉这个排除项,只保留对无用子目录和文件的排除:

npm run "ios:lib": "rsync -r ./ios --exclude='.*' --exclude='xyzClientMobile.xcworkspace' --exclude='xyzClientMobile-tvOS' --exclude='xyzClientMobile-tvOSTests' --exclude='xyzClientMobileTests' --exclude='Pods' --exclude='Podfile.lock' ./dist && npm run ios:podspec"

修改后xyzClientMobile目录会被完整复制到dist/ios下,其中的main.m自然也会被包含进去。

2. 验证Podspec文件的路径配置

确保你的Podspec文件正确引用了main.m及其他需要的源文件。比如在Podspec中应该有类似这样的配置:

spec.source_files = "ios/xyzClientMobile/main.m", "ios/xyzClientMobile/**/*.{h,m,swift}"

这里的路径要和dist文件夹中的实际结构对应,保证CocoaPods能正确定位所有需要编译的文件。

3. 清理并重新构建项目

完成上述修改后,执行以下步骤确保环境干净:

  • 进入dist/ios目录,删除Pods文件夹和Podfile.lock
  • 运行pod install重新安装依赖
  • 打开Xcode项目,清理构建缓存(Cmd+Shift+K),然后重新尝试构建

错误根源说明

你在原项目project.pbxproj中看到的main.m引用,说明原项目的Xcode配置依赖这个文件来启动库。但你的rsync命令把包含它的xyzClientMobile整个排除了,导致dist目录里缺失该文件,最终触发了编译时的文件找不到错误。

内容的提问来源于stack exchange,提问作者Roshan Malik

火山引擎 最新活动