React-native: Erro 'Comandos múltiplos produzem' ao construir com o novo sistema de construção Xcode

Criado em 1 ago. 2018  ·  69Comentários  ·  Fonte: facebook/react-native

Olá,

Meio Ambiente:

React Native Environment Info:
    System OS: macOS High Sierra 10.13.6
    Binaries:
      Node: 8.11.3 - /usr/local/bin/node
      npm: 5.6.0 - /usr/local/bin/npm
    IDEs:
      Xcode: 10 Beta 3
    npmPackages:
      react: 16.4.1
      react-native: 0.56.0

Erro:

Recebi o seguinte erro quando tento construir o aplicativo RN 0.56 simples:

warning: Skipping duplicate build file in Compile Sources build phase: <PATH_TO_PROJECT>/node_modules/react-native/React/Modules/RCTRedBoxExtraDataViewController.m (in target 'React-tvOS')
...
warning: duplicate output file '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTResizeMode.h' on task: PBXCp <PATH_TO_PROJECT>/node_modules/react-native/Libraries/Image/RCTResizeMode.h <HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTResizeMode.h (in target 'React')
...
error: Multiple commands produce '<PbxCp <HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTScrollableProtocol.h>':
1) Target 'React-tvOS' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/React/Views/ScrollView/RCTScrollableProtocol.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTScrollableProtocol.h'
2) Target 'React' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/React/Views/ScrollView/RCTScrollableProtocol.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTScrollableProtocol.h'
error: Multiple commands produce '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/double-conversion/fast-dtoa.h':
1) Target 'double-conversion-tvOS' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/third-party/double-conversion-1.1.5/src/fast-dtoa.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/double-conversion/fast-dtoa.h'
2) Target 'double-conversion' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/third-party/double-conversion-1.1.5/src/fast-dtoa.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/double-conversion/fast-dtoa.h'
...

Etapas Repro:

  • init nativo react
  • xcodebuild -project <PATH_TO_PROJECT>/ios/ReactNativeSimple.xcodeproj -scheme ReactNativeSimple archive -sdk iphoneos -archivePath <PATH_TO_PROJECT>/output/build/archive/ReactNativeSimple CODE_SIGN_STYLE=Automatic

Detalhes:

Eu testei no aplicativo RN simples que foi criado pelo comando " react-native init ".
Quando tento construir o aplicativo usando Xcode 10 GUI - ele é construído com sucesso.
Mas tento construí-lo usando o comando xcodebuild - falhou com o erro acima.

Quando usamos o mesmo comando no mesmo aplicativo (RN 0.56) no Xcode 9.4.1 - ele constrói com sucesso
Se eu não especificar -sdk param no comando xcodebuild, ele é compilado com sucesso.
Observação: _Errors podem ser diferentes para as diferentes versões Beta do Xcode 10._

Questões:

O RN 0.56 é compatível com o Xcode 10 Beta?
Como posso consertar?
Existe uma solução alternativa para criá-lo usando o Xcode 10 Beta?

Bug iOS Locked

Comentários muito úteis

Você pode tentar mudar o sistema de compilação para Legado,
Arquivo> Configurações do espaço de trabalho> Sistema de compilação> Sistema de compilação legado.

Todos 69 comentários

Você pode tentar mudar o sistema de compilação para Legado,
Arquivo> Configurações do espaço de trabalho> Sistema de compilação> Sistema de compilação legado.

Queremos usar um novo sistema de construção.

O novo sistema de construção deve ser suportado. Estamos rastreando quaisquer problemas que as pessoas encontrem com o Xcode 10 ou o novo sistema de compilação nesta tarefa: https://github.com/facebook/react-native/issues/19573

À primeira vista, parece que seu problema não foi coberto pelo que corrigimos até agora no master. Vou adicioná-lo à lista.

Também tive o erro Multiple commands produce com libReact.a & libyoga.a .
Estou a usar:

  • Xcode 10
  • reagente nativo 0.57.0
  • CocoaPods

Para superar isso, adicionei isso ao meu Podfile :

  post_install do |installer|
    installer.pods_project.targets.each do |target|

      # The following is needed to ensure the "archive" step works in XCode.
      # It removes React & Yoga from the Pods project, as it is already included in the main project.
      # Without this, you'd see errors when you archive like:
      # "Multiple commands produce ... libReact.a"
      # "Multiple commands produce ... libyoga.a"

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

Em seguida, reconstrua seu projeto de pods com:

$ pod install

Detalhes completos do ambiente:


  React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.6
      CPU: x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
      Memory: 4.10 GB / 32.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.9.0 - ~/.nvm/versions/node/v10.9.0/bin/node
      Yarn: 1.9.4 - /usr/local/bin/yarn
      npm: 6.4.1 - ~/.nvm/versions/node/v10.9.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.0, macOS 10.14, tvOS 12.0, watchOS 5.0
    IDEs:
      Xcode: 10.0/10A255 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.5.0 => 16.5.0
      react-native: 0.57.0 => 0.57.0
    npmGlobalPackages:
      create-react-native-app: 1.0.0
      react-native-cli: 2.0.1

Confirmado o funcionamento da solução alternativa de @PaulMest . Excluir manualmente o Yoga no Xcode, dos alvos do projeto Pods também deve funcionar, como tenho feito com o React, que também tem causado erros de compilação de alvos duplicados, antes de RN 0,57.

Se você estiver usando xcodebuild , anexe este -UseModernBuildSystem=NO para ativar o sistema de compilação antigo

@PaulMest Obrigado, fiz o meu dia

Espero que minha situação possa ajudar vocês a resolver o problema!

Aqui está o resultado completo:

:-1: Multiple commands produce '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Roboto.ttf':
1) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/native-base/Fonts/Roboto.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Roboto.ttf'
2) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/src/Resources/Fonts/Roboto.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Roboto.ttf'

:-1: Multiple commands produce '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Zocial.ttf':
1) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/native-base/Fonts/Zocial.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Zocial.ttf'
2) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/react-native-vector-icons/Fonts/Zocial.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Zocial.ttf'

:-1: Multiple commands produce '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Ionicons.ttf':
1) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/native-base/Fonts/Ionicons.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Ionicons.ttf'
2) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/react-native-vector-icons/Fonts/Ionicons.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Ionicons.ttf'

Essencialmente, react-native-vector-icons e native-base agrupam os mesmos arquivos de fonte. (E por algum motivo, também temos um deles empacotado; irei remover aquele.) Antes de atualizar para o Xcode 10 / Mojave, não houve nenhum problema. A única mudança foi atualizar do Xcode 9 para o Xcode 10.

@ntomallen Encontrei exatamente o mesmo problema com fontes duplicadas de react-native-vector-icons e native-base e o que acabei fazendo foi remover a duplicata da seção Copy Resources To Bundle do meu aplicativo de destino. Depois disso, meu projeto funcionou novamente (bem, ele mudou para dois erros diferentes, que são descritos aqui: libfishhook.a não pode ser encontrado - conserta e comandos múltiplos produzem erro com libReact.a & libyoga.a. - fix

Até agora, meu aplicativo está funcionando bem e posso compilar usando o novo sistema de compilação do XCode 10.

_Aviso: Não sou um desenvolvedor iOS experiente e hackeado essas soluções juntas. Não sei se estraguei algo que não conheço._

Isso é exatamente o que funcionou para mim também! Embora eu ainda esteja curioso por que isso é um erro agora, mas não anteriormente.
Em 26 de setembro de 2018, 14h49 -0400, Niels Bokmans [email protected] escreveu:

@ntomallen Encontrei exatamente o mesmo problema com fontes duplicadas de react-native-vector-icons e native-base e o que acabei fazendo foi remover a duplicata da seção Copy Resources To Bundle do meu aplicativo de destino. Depois disso, meu projeto funcionou novamente (bem, ele mudou para dois erros diferentes, que são descritos aqui: libfishhook.a não pode ser encontrado - corrija e comandos múltiplos produzem erro com libReact.a & libyoga.a. - fix
Até agora, meu aplicativo está funcionando bem e posso compilar usando o novo sistema de compilação do XCode 10.
Isenção de responsabilidade: não sou um desenvolvedor iOS experiente e hackeado essas soluções juntas. Não sei se estraguei algo que não conheço.
-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub ou ignore a conversa.

@ntomallen Basicamente é porque há um novo sistema de construção "mais rígido", e o XCode 10 o usa por padrão, enquanto no XCode 9 você tinha que escolher ativamente usá-lo em vez do sistema de construção "legado" que todos nós temos usado até agora.

Está bem. Isso é enlouquecedor. Mudei para o sistema de compilação legado. Agora, recebo um erro diferente.

/Users/michaelstelly/Documents/projects/mobile_gtm/node_modules/react-native/React/../third-party/glog-0.3.4/src/base/mutex.h:105:10: fatal error: 'config.h' file not found
#include "config.h"           // to figure out pthreads support

Não tenho ideia do que isso significa, além do óbvio - um arquivo está faltando. Mas antes do Xcode 10, eu não tinha nenhum problema de construção.

@mjstelly você está em 0,57? Sua mensagem de erro menciona glog-0.3.4 mas 0,57 usa glog-0.3.5 . Eu só quero ter certeza de que estamos rastreando os problemas da versão mais recente.

@PaulMest meu herói! Obrigado!

Ola @mjstelly

Você está enfrentando um problema semelhante com terceiros ...
estou usando o xcode 10

  1. No arquivo incluído em /Users/ehs-mobile-app/node_modules/react-native/third-party/folly-2016.09.26.00/folly/json. cpp: 17

O Xcode 10.1 parece funcionar bem em ambos os sistemas, mas não consigo arquivar em nenhum deles, muitos erros de construção. O que fazer agora?

Você tem que ser mais específico. O Xcode 10 constrói e arquiva bem para mim (depois de resolver alguns erros que não me lembro agora), no MacOS 10.12.6 e RN 0.57.0.

Meu Podfile post_install era parecido com este:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'react-native-google-maps'
      target.build_configurations.each do |config|
        config.build_settings['CLANG_ENABLE_MODULES'] = 'No'
      end
    end
    if target.name == "React"
      target.remove_from_project
    end
    if target.name == 'yoga'
      target.remove_from_project
      target.build_configurations.each do |config|
          config.build_settings['GCC_TREAT_WARNINGS_AS_ERRORS'] = 'NO'
          config.build_settings['GCC_WARN_64_TO_32_BIT_CONVERSION'] = 'NO'
      end
    end
  end
end

Seguir a sugestão de @PaulMest funcionou para mim.

@njbmartin Obrigado!
apenas sua correção funcionou para mim

-UseModernBuildSystem = NO

Isso funciona para mim. Cara, demorei muito para encontrar isso. Obrigado.

Mudar para o sistema de compilação legado corrige muitos erros de compilação, mas realmente precisamos ser capazes de usar o sistema moderno no futuro: p

Além disso, Feliz Dia de Ação de Graças para aqueles que estão comemorando!

sim, a nova versão é obviamente boa, mas não é tão suave.
Atualize com risco.

@PaulMest Obrigado. Seu hack funciona :)

Confirmado o funcionamento da solução alternativa de @PaulMest . Excluir manualmente o Yoga no Xcode, dos alvos do projeto Pods também deve funcionar, como tenho feito com o React, que também tem causado erros de compilação de alvos duplicados, antes de RN 0,57.

Como fazer isso exatamente @fungilation ?

Este é o único bloqueador conhecido deixado em # 19573. As pessoas ainda estão enfrentando esse problema no 0.57.8?

Geralmente não tenho problemas com o Xcode desde 0.57.8

@hramos Infelizmente não. Para mim, a opção de compilação herdada do Xcode ainda é necessária com 0.57.8 e também com o novo 0.58.0-rc.3 (editar: também com 0.58.3).

Para tornar isso reproduzível, eu crio um novo projeto e testo-o localmente e com travis CI. Eu vinculei o projeto original abaixo (mas ele acabou de ser criado com o init nativo reactivo) e as compilações bem-sucedidas e quebradas no travis. Talvez isso ajude? Pelo menos eu poderia e irei refazer este experimento quando houver uma nova versão disponível.

@hramos Estou me desintoxicação , não yarn ios . Aqui está minha configuração para meu simulador iOS:

{
    "configurations": {
        "ios.sim.debug": {
            "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/reactipay.app",
            "build": "xcodebuild -project ios/reactipay.xcodeproj -scheme reactipay -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
            "type": "ios.simulator",
            "name": "iPhone 6"
        },
        "android.emu.debug": {
            "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
            "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
            "type": "android.emulator",
            "name": "emulator-5554"
        }
    },
    "test-runner": "jest"
}

Especificamente, se eu executar este: xcodebuild -project ios/reactipay.xcodeproj -scheme reactipay -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build ele falha com o erro original.

Também tive o erro Multiple commands produce com libReact.a & libyoga.a .
Estou a usar:

  • Xcode 10
  • reagente nativo 0.57.0
  • CocoaPods

Para superar isso, adicionei isso ao meu Podfile :

  post_install do |installer|
    installer.pods_project.targets.each do |target|

      # The following is needed to ensure the "archive" step works in XCode.
      # It removes React & Yoga from the Pods project, as it is already included in the main project.
      # Without this, you'd see errors when you archive like:
      # "Multiple commands produce ... libReact.a"
      # "Multiple commands produce ... libyoga.a"

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

Em seguida, reconstrua seu projeto de pods com:

$ pod install

Detalhes completos do ambiente:

thnx man!

Estou muito confuso com este erro, pois não parece consistente. se eu executar o comando build 10 vezes, ele pode eventualmente começar a funcionar
é assim que se parece o mu e2e script

detox build -c ios.sim.releas ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release

onde está a construção de desintoxicação

xcodebuild -project ios/deliverypoc.xcodeproj -scheme deliverypoc -configuration Release -sdk iphonesimulator -derivedDataPath ios/build

Não posso usar o sistema de compilação legado, pois ele fica suspenso na compilação de reação e não uso Cocoa Pods.
Que outras soluções poderiam ser?
Devo migrar meu iOS para Cocoa? Que implicações isso traria?

@ pavlof01 Estou procurando especificamente por relatórios sobre isso ainda ocorrendo nas versões 0.57.8 ou mais recentes.

@hramos eu ainda tenho isso no Xcode 10.1 em 0.57.8 e 0.58.3. Eu não tentei executar usando o sistema de compilação legado (essa é a correção oficial por agora?) - em vez disso, estou usando o Podfile para target.remove_from_project quando name == "React" ou name == "yoga" . Eu também não tentei o Xcode 9, etc, como @jerolimov fez acima.

Este não é um problema de bloqueio para nós, mas apenas pensei que eu gritei! Lmk se eu puder fornecer mais informações úteis.

Observe que quando eu disse que não tenho mais problemas com RN 0.57.8, também estou usando esta solução alternativa no Podfile:

post_install do |installer|
  installer.pods_project.targets.each do |target|

    targets_to_ignore = %w(React yoga)

    if targets_to_ignore.include? target.name
      target.remove_from_project
    end

  end
end

Esqueci 😛

@hramos estou usando 0.57.8 (mesmo erro) - me avise se precisar de alguma informação adicional.

Corri para isso também com desintoxicação. Corrigi-o especificando um destino em xcodebuild em vez de sdk: -destination 'platform=iOS Simulator,name=iPhone 7'

Pode confirmar que ocorre em 0.58.3 durante a etapa de arquivo. Adicionar a solução alternativa remove_from_project ao meu podfile resolve o problema. Resultado de react-native info :

$ $(npm bin)/react-native info

  React Native Environment Info:
    System:
      OS: macOS 10.14
      CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
      Memory: 1.13 GB / 8.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 11.0.0 - /usr/local/bin/node
      Yarn: 1.10.1 - /usr/local/bin/yarn
      npm: 6.4.1 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
      Android SDK:
        API Levels: 19, 21, 22, 23, 24, 25, 26, 27, 28
        Build Tools: 23.0.1, 25.0.0, 25.0.2, 26.0.1, 26.0.3, 27.0.3, 28.0.1, 28.0.2, 28.0.3
        System Images: android-19 | Google APIs Intel x86 Atom, android-21 | Google APIs Intel x86 Atom_64, android-22 | Google APIs Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom_64, android-24 | Google APIs Intel x86 Atom_64, android-24 | Google Play Intel x86 Atom, android-25 | Google APIs Intel x86 Atom, android-25 | Google APIs Intel x86 Atom_64, android-25 | Google Play Intel x86 Atom, android-26 | Google APIs Intel x86 Atom_64, android-27 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google APIs Intel x86 Atom_64, android-28 | Google Play Intel x86 Atom_64
    IDEs:
      Android Studio: 3.2 AI-181.5540.7.32.5056338
      Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    npmGlobalPackages:
      react-native-cli: 2.0.1

Obrigado @aaronjensen lutou por muitas horas neste ...

Tenho usado o novo sistema de compilação desde 58 sem problemas.

Tive Multiple commands produce * problemas como o acima, mas isso foi devido a sobras de antes de eu mudar para Pods (vinculação); certifique-se de remover todos os Linked Frameworks and Libraries relacionados ao React Native do seu projeto Xcode (não o espaço de trabalho gerado) se agora estiver usando pods.

Depois de limpá-lo e passar a usar RN via pods, ele deve ser parecido com este:

image

E NÃO assim:
image

Observe que o sistema de compilação antigo ignorou essas duplicações ao tentar usar o RN ligando & pods juntos; o novo sistema de compilação não; então você pode ter tido isso por algum tempo.

Se você estiver construindo com xcodebuild por exemplo, para Detox, certifique-se de aplicar a sugestão de @aaronjensen acima ao seu comando de construção.

@salakar, tenho feito o mesmo sem problemas. Uma coisa a observar é que se você vinculou manualmente um Libray de terceiros sem pods, ele pode ter problemas para encontrar o React Native. Basicamente, tente mudar tudo para Pods.

Encerrando conforme comentário de @Salakar .

@cpojer IMHO, isso não será resolvido se a solução exigir etapas manuais após a criação de um projeto simples com react-native init . Não é isso que os novos usuários esperam. O padrão deve funcionar sem quaisquer alterações no Xcode e sem CocoaPods. (Embora o CocoaPods seja ótimo e funcione bem com RN 😏)

Conforme explicado antes, criei um aplicativo de amostra com react-native init e o executei no Travis CI. Isso mostra bem que a construção funciona bem com o Xcode 9 e o Xcode 10 com o sistema de construção legado. E não funciona com o novo sistema de compilação do Xcode 10.

Você pode ver o histórico de construção aqui no GitHub , o master já é 0.59.0-rc.1 e ainda tem o mesmo problema.

O histórico de construção para diferentes branches está disponível no Travis CI (master é o Xcode 9 e há dois branches para o Xcode 10) e como GitHub Pull Request

Como disse. NA MINHA HUMILDE OPINIÃO. 😏

@jerolimov sua compilação não especifica um destino , o que parece ser essencial, pois de outra forma tenta construir artefatos para tvOS e iOS, o que causa o problema que você está vendo.

O que não está claro é se há algo que RN pode estar fazendo que pode fazer com que o novo sistema de compilação saiba o que você quer implicitamente ou se isso é apenas um bug no xcode (neste caso, este é o repo errado para o problema) .

Dado o comentário de @Salakar

Parece que não limpei bibliotecas e bibliotecas vinculadas corretamente quando mudei para começar a usar pods. Alguém pode fornecer mais detalhes sobre o processo correto de remoção desses links?

No Xcode, clique com o botão direito em todas as coisas que fazem referência ao React Native (geralmente em Frameworks ou Bibliotecas na barra lateral) e escolha "remover referências". No final do processo, certifique-se de que a seção Bibliotecas e frameworks vinculados não tenha referências ao React Native. Observe que, conforme você faz isso, suas outras bibliotecas de terceiros que dependem do React Native também devem ser vinculadas por meio de pods. (A maioria dos principais apóia, o que é bom.)

Corri para isso também com desintoxicação. Corrigi-o especificando um destino em xcodebuild em vez de sdk: -destination 'platform=iOS Simulator,name=iPhone 7'

@aaronjensen Você pode fornecer o código completo como exemplo?

"xcodebuild -project ios/AppName.xcodeproj -scheme AppName -configuration Debug -derivedDataPath ios/build -destination 'platform=iOS Simulator, name=iPhone 7'" ?

Claro, o que você tem se parece muito com o que estamos usando.

xcodebuild -project ios/AppName.xcodeproj -scheme AppName -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 7' -derivedDataPath ios/build

Também tive o erro Multiple commands produce com libReact.a & libyoga.a .
Estou a usar:

  • Xcode 10
  • reagente nativo 0.57.0
  • CocoaPods

Para superar isso, adicionei isso ao meu Podfile :

  post_install do |installer|
    installer.pods_project.targets.each do |target|

      # The following is needed to ensure the "archive" step works in XCode.
      # It removes React & Yoga from the Pods project, as it is already included in the main project.
      # Without this, you'd see errors when you archive like:
      # "Multiple commands produce ... libReact.a"
      # "Multiple commands produce ... libyoga.a"

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

Em seguida, reconstrua seu projeto de pods com:

$ pod install

Detalhes completos do ambiente:


  React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.6
      CPU: x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
      Memory: 4.10 GB / 32.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.9.0 - ~/.nvm/versions/node/v10.9.0/bin/node
      Yarn: 1.9.4 - /usr/local/bin/yarn
      npm: 6.4.1 - ~/.nvm/versions/node/v10.9.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.0, macOS 10.14, tvOS 12.0, watchOS 5.0
    IDEs:
      Xcode: 10.0/10A255 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.5.0 => 16.5.0
      react-native: 0.57.0 => 0.57.0
    npmGlobalPackages:
      create-react-native-app: 1.0.0
      react-native-cli: 2.0.1

Ótimo trabalho
rm -rf Pods; pod install funcionou para mim

@Salakar Removendo todas as bibliotecas RCT * de Linked Frameworks and Libraries no projeto Xcode compilado com sucesso no iOS, mas dá o erro Native module cannot be null E só depois de adicionar libReact.a e outras libRCT*.a bibliotecas a construção funciona. Estamos usando Pods para gerenciar outras dependências.

Abaixo está a aparência do nosso Podfile,

`` `fonte ' https://github.com/CocoaPods/Specs.git '

Plataforma global para seu projeto

plataforma: ios, '9.0'

Ingore todos os avisos das bibliotecas CocoaPods.

inibit_all_warnings!
plugin 'cocoapods-fix-react-native'

alvo 'RNMobile' fazer
# Remova o comentário da próxima linha se você estiver usando Swift ou se gostaria de usar estruturas dinâmicas
# use_frameworks!

# Pods básicos para RNMobile
pod 'React',: path => '../node_modules/react-native',: subspecs => [
'Testemunho',
'CxxBridge',
'DevSupport',
# os seguintes são os retirados de "Bibliotecas" no Xcode:
'RCTAnimation',
'RCTActionSheet',
'RCTBlob',
'RCTGeolocation',
'RCTImage',
'RCTLinkingIOS',
'RCTNetwork',
'RCTSettings',
'RCTText',
'RCTVibration',
'RCTWebSocket'
]

# as seguintes dependências são dependências do próprio React nativo.
pod 'ioga',: path => '../node_modules/react-native/ReactCommon/yoga/Yoga.podspec'
pod 'DoubleConversion',: podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'Folly',: podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'glog',: podspec => '../node_modules/react-native/third-party-podspecs/GLog.podspec'

# Pods extras para WahedMobile
pod 'AppCenter / Crashes', '~> 1.13.0'
pod 'AppCenter / Analytics', '~> 1.13.0'
pod 'AppCenterReactNativeShared', '~> 1.12.0'
pod 'RNVectorIcons',: path => '../node_modules/react-native-vector-icons'
pod 'lottie-react-native',: path => '../node_modules/lottie-react-native'
pod 'lottie-ios',: path => '../node_modules/lottie-ios'
pod 'RNAWSCognito',: path => '../node_modules/amazon-cognito-identity-js'
pod 'TouchID',: path => '../node_modules/react-native-touch-id'
pod 'BVLinearGradient',: path => '../node_modules/react-native-linear-gradient'
pod 'RNGestureHandler',: path => '../node_modules/react-native-gesture-handler'
pod 'RNSVG',: path => '../node_modules/react-native-svg'
pod 'react-native-camera',: path => '../node_modules/react-native-camera'

pod 'CodePush',: path => '../node_modules/react-native-code-push'

pod 'RNAnalytics',: path => '../node_modules/@segment/analytics-react-native'

# Firebase Libs
pod 'Firebase / Core', '~> 5.15.0'
pod 'Firebase / Messaging', '~> 5.15.0'

# Onfido Libs
pod 'Onfido', '10 .3.0 ',: configurations => [' Debug ']
pod 'Onfido-Release', '10 .3.0 ',: configurations => [' Release ']

pod 'RNKeychain',: path => '../node_modules/react-native-keychain'

fim
`` `

Além disso, adicionar as bibliotecas em Linked Frameworks and Libraries cria erros de símbolos duplicados no AppCenter.

Para referência para usuários nativos de reação que estão fazendo upgrade para 59 e têm pods:
Além da solução de tvOS nele.

Meu Podfile post_install era parecido com este:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'react-native-google-maps'
      target.build_configurations.each do |config|
        config.build_settings['CLANG_ENABLE_MODULES'] = 'No'
      end
    end
    if target.name == "React"
      target.remove_from_project
    end
    if target.name == 'yoga'
      target.remove_from_project
      target.build_configurations.each do |config|
          config.build_settings['GCC_TREAT_WARNINGS_AS_ERRORS'] = 'NO'
          config.build_settings['GCC_WARN_64_TO_32_BIT_CONVERSION'] = 'NO'
      end
    end
  end
end

Seguir a sugestão de @PaulMest funcionou para mim.

sua solução funcionou para mim, tanques.

https://github.com/facebook/react-native/issues/20492#issuecomment -464343895

Isso e matar uma instância obsoleta do empacotador metro me ajudou.

Estou tendo esse problema e não estou usando cocoapods. Não posso usar cocoapods porque estou usando a navegação react-native.

@MakhouT usando a navegação

@AngefloMusic React-native-navigation não o está usando e para a configuração você precisa alterar alguns arquivos nativos do iOS. Ao usar cocoapods, presumo que haverá um conflito entre si ao instalar as dependências do pod. No entanto, não tenho certeza, pois não fiz cocoapoads demais. Então, por favor, me corrija se eu estiver errado.

@MakhouT Eles não entram em conflito. Na verdade, se você der uma olhada no repo react-native-navigation verá que há um arquivo podspec. Estou usando RNN com cocoapods em um projeto agora.

Desculpe, preciso reabrir isso, mas a solução preferida (consulte Podfile abaixo) me leva a este erro doloroso ao tentar produzir o arquivo.

immagine

este é meu podfile

# Uncomment the next line to define a global platform for your project
platform :ios, '10.1'

target 'TVTips' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  #use_frameworks!

  # Pods for TVTips
  pod 'Firebase/Core', '~> 5.20.1'
  pod 'Firebase/Analytics', '~> 5.20.1'
  pod 'Firebase/Auth'
  pod 'GoogleSignIn', '~> 4.4.0'
  pod 'TwitterKit', '~> 3.3.0'
  pod 'React', :path => '../node_modules/react-native', :modular_headers => true
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'react-native-twitter-signin', :path => '../node_modules/react-native-twitter-signin'

  target 'TVTips-tvOSTests' do
    inherit! :search_paths
    # Pods for testing

    pod 'YouTubeSdk', :path => '../node_modules/react-native-youtube-sdk'

    pod 'ReactNativeLocalization', :path => '../node_modules/react-native-localization'

    pod 'RNShare', :path => '../node_modules/react-native-share'

  end

  target 'TVTipsTests' do
    inherit! :search_paths
    # Pods for testing
  end

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == "React"
        target.remove_from_project
      end

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

end

Eu importei o React tanto em Link Binary com bibliotecas quanto em Linked Frameworks e bibliotecas.
Socorro :)

Para mim, trabalho removendo recursos duplicados dentro

Fases de construção
Como exemplo abaixo, o Fonts estava cometendo um erro

image

Eu sei que este é um problema resolvido para pessoas que moveram RN para Pods ou pessoas que usam RN> 0.60.x, mas se você ainda não estiver pronto ou migrando, esta é nossa solução temporária (basicamente removeu a configuração do tvOS do arquivo React Native pbxproj, que parece estar causando os vários alvos).

Nós o usamos em nosso script postinstall

const xcode = require('xcode');
const fs = require('fs');
const path = require('path');

const reactNativeProjectPath = path.resolve(__dirname, '../node_modules/react-native/React/React.xcodeproj/project.pbxproj');
const myProj = xcode.project(reactNativeProjectPath);

myProj.parse(err => {
    if (err) {
        throw err;
    }

    const nativeTargets = myProj.hash.project.objects.PBXNativeTarget;

    Object.keys(nativeTargets).forEach(nativeTargetKey => {
        const target = nativeTargets[nativeTargetKey];
        if (target.name && target.name.indexOf('-tvOS') !== -1) {
            console.log(`Removing ${target.name}:${nativeTargetKey} in React pbxproj`);
            delete nativeTargets[nativeTargetKey];
        }
    });

    fs.writeFileSync(reactNativeProjectPath, myProj.writeSync());
    console.log(`All mentioned of tvOS removed in React pbxproj`);
});

Para aqueles que usam Fastlane e enfrentam esse problema, a solução @PaulMest funciona: adicione todos os destinos necessários a targets_to_ignore e execute rm -rf ios/Pods && pod install antes de executar Fastlane

Para mim, trabalho removendo recursos duplicados dentro

Fases de construção
Como exemplo abaixo, o Fonts estava cometendo um erro

image

Acrescentando à resposta de

Acredito que esse erro no meu caso esteja relacionado à atualização para o XCode 11, mas não tenho certeza sobre essa última parte.

Confirmo o mesmo com as fontes sendo duplicadas, somente após a atualização para o Xcode 11 estável hoje (Mac 10.14.6). A remoção de fontes na seção [CP] Copy Pods Resources das fases de construção do Xcode e a construção funciona novamente.

Estava e está usando o novo sistema de compilação. Em RN 0.60.5.

@fungilation o mesmo comigo (Xcode 11 - atualizado hoje, novo sistema de compilação e RN 0.60.5). Eu tenho que remover todas as fontes em Copy Bundle Resources e funciona.

Mas quando eu executar o comando pod install próxima vez, esta entrada aparecerá novamente 😂️

o mesmo aqui com 0.61.0-rc.3 e xcode 11 11A420a mojave 10.14.6

Eu removi apenas os ícones do vetor reativo nativo tff e funciona. Não há necessidade de excluir todos os tffs

exclua o pod de instalação dos pods anteriores e execute o pod de atualização. Ele funcionará.

isto é o que adicionei ao meu podfile:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end

    if target.name == "yoga"
      target.remove_from_project
    end
  end

  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
    end
  end
end

isto é o que adicionei ao meu podfile:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end

    if target.name == "yoga"
      target.remove_from_project
    end
  end

  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
    end
  end
end

Tentei este comando (com fastlane) mas mesmo assim os erros persistem. 😢

error: Multiple commands produce '.../UninstalledProducts/iphoneos/libRNGestureHandler.a':

Recebo erros semelhantes para 4 outras bibliotecas que instalei -
RNKeyChain, RNAsyncStorage, RNDeviceInfo e BVLinearGradient

Aqui está o meu ambiente -

System:
    OS: macOS 10.15.1
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 1.54 GB / 16.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 12.10.0 - /usr/local/bin/node
    Yarn: 1.17.3 - /usr/local/bin/yarn
    npm: 6.11.3 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    Android SDK:
      API Levels: 23, 26, 27, 28, 29
      Build Tools: 27.0.3, 28.0.3, 29.0.1
      System Images: android-19 | Google APIs Intel x86 Atom, android-22 | Google APIs Intel x86 Atom, android-22 | Google APIs Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom, android-26 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom, android-29 | Google Play Intel x86 Atom
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.5977832
    Xcode: 11.2/11B52 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.8.6 => 16.8.6 
    react-native: ^0.60.5 => 0.60.5 
  npmGlobalPackages:
    react-native-cli: 2.0.1

Venho tentando encontrar uma solução desde a manhã, não encontrei nada funcionando até agora. 👎
Mesmo quando eu executo em um emulador, ele funciona muito bem.

Confirmo o mesmo com as fontes sendo duplicadas, somente após a atualização para o Xcode 11 estável hoje (Mac 10.14.6). A remoção de fontes na seção [CP] Copy Pods Resources das fases de construção do Xcode e a construção funciona novamente.

Estava e está usando o novo sistema de compilação. Em RN 0.60.5.

Para iniciantes como eu: você precisa editar o arquivo <PROJECT_FOLDER>/ios/<PROJECT_NAME>.xcodeproj/project.pbxproj

Em seguida, comente as linhas de fonte (arquivos que terminam em .ttf) assim:

inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-drawer2/Pods-drawer2-resources.sh", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", ); name = "[CP] Copy Pods Resources"; outputPaths = ( // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", );

E eu tive que refazer esse processo toda vez que executei pod install

Esta página foi útil?
0 / 5 - 0 avaliações