抽象目标导致错误的输出文件夹名称

Jua*_*gal 1 ios react-native podfile expo

我正在尝试为我的 React Native 项目设置多个变体(关于裸工作流程的博览会),我正在使用 eas 官方文档来执行此操作(https://docs.expo.dev/build-reference/variants/

正如文档所说,我将原始的 podfile 目标代码包装在 an 中abstract_target,最终结果如下

require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
require File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules")

platform :ios, '12.0'

require 'json'
podfile_properties = JSON.parse(File.read('./Podfile.properties.json')) rescue {}

abstract_target 'common' do
  use_expo_modules!
  config = use_native_modules!

  use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes'
  )


  target 'LoperDEVELOP' do
  end

  target 'LoperSTAGING' do
  end
  
  post_install do |installer|
    react_native_post_install(installer)

    installer.pods_project.targets.each do |target|
      if (target.name&.eql?('FBReactNativeSpec'))
        target.build_phases.each do |build_phase|
          if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs'))
            target.build_phases.move(build_phase, 0)
          end
        end
      end
    end
  end

  post_integrate do |installer|
    begin
      expo_patch_react_imports!(installer)
    rescue => e
      Pod::UI.warn e
    end
  end
end

Run Code Online (Sandbox Code Playgroud)

一切看起来都很好,直到编译器失败并出现以下错误:

找不到构建输入文件:'/Users/expo/workingdir/build/ios/Pods/Target Support Files/Pods-LoperDEVELOP/ExpoModulesProvider.swift

检查临时生成的文件夹后,它看起来在添加后使用错误的名称创建abstract_target

现在输出文件夹是

/Users/expo/workingdir/build/ios/Pods/目标支持文件/ Pods-common-LoperDEVELOP /ExpoModulesProvider.swift

预期是

/Users/expo/workingdir/build/ios/Pods/目标支持文件/ Pods-LoperDEVELOP /ExpoModulesProvider.swift

正如您所看到的,在 LoperDevelop 文件夹中,Pods-{abstract_target}-{target}当编译器期望只是连接时,它正在连接Pods-{target}

难道我做错了什么?或者这种情况有什么解决方法吗?

编辑:为问题添加更多信息。当我pod install在 ios 文件夹中执行时,pod 的安装没有任何问题。

但之后,当我运行时,它会产生失败,因为它正在文件夹中expo run:ios查找而不是(使用创建的)ExpoModulesProvider.swiftPods-LoperDEVELOPPods-common-LoperDevelopabstract target 'common'

谢谢!

Jua*_*gal 5

问题已经解决了。

这是 XCode 中的配置错误,如果有人遇到同样的情况,你必须转到以下部分

XCode -> 特定目标 -> 构建阶段 -> 编译源

在此输入图像描述

在其中,确保所有文件都是正确的,就我而言,有一个文件的路径错误导致了整个问题