Olá,
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
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'
...
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
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._
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?
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:
0.57.0
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
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.
Mas com o Xcode 10 a construção falha.
PR que mostra a diferença travis.yml
Construir com o erro "Vários comandos produzem"
Ao usar o Xcode 10 com o sistema de compilação legado, ele funciona novamente.
PR que mostra a diferença travis.yml
Construção de travis bem-sucedida
@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
comlibReact.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:
E NÃO assim:
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
comlibReact.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: ios, '9.0'
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.
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
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
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
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.