React-native: Erreur `` Plusieurs commandes produisent '' une erreur lors de la construction avec le nouveau système de construction Xcode

Créé le 1 août 2018  ·  69Commentaires  ·  Source: facebook/react-native

Bonjour,

Environnement:

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

Erreur:

J'ai eu l'erreur suivante lorsque j'essaie de créer l'application RN 0.56 simple:

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'
...

Repro étapes:

  • init natif de réaction
  • 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

Détails:

Je l'ai testé sur la simple application RN créée par la commande " react-native init ".
Lorsque j'essaie de créer l'application à l'aide de l'interface graphique Xcode 10, elle se construit avec succès.
Mais j'essaye de le construire en utilisant la commande xcodebuild - il a échoué avec l'erreur ci-dessus.

Lorsque nous utilisons la même commande sur la même application (RN 0.56) dans Xcode 9.4.1 - il se construit avec succès
Si je ne spécifie pas -sdk param dans la commande xcodebuild, il se construit avec succès.
Remarque: _Les erreurs peuvent être différentes pour les différentes versions de Xcode 10 Beta._

Des questions:

RN 0.56 prend-il en charge Xcode 10 Beta?
Comment puis-je résoudre ce problème?
Existe-t-il une solution de contournement pour le construire à l'aide de Xcode 10 Beta?

Bug iOS Locked

Commentaire le plus utile

Vous pouvez essayer de changer le système de construction en héritage,
Fichier> Paramètres de l'espace de travail> Système de construction> Système de construction hérité.

Tous les 69 commentaires

Vous pouvez essayer de changer le système de construction en héritage,
Fichier> Paramètres de l'espace de travail> Système de construction> Système de construction hérité.

Nous voulons utiliser un nouveau système de construction.

Le nouveau système de construction doit être pris en charge. Nous suivons tous les problèmes rencontrés avec Xcode 10 ou le nouveau système de construction dans cette tâche: https://github.com/facebook/react-native/issues/19573

En un coup d'œil, il ne semble pas que votre problème soit couvert par ce que nous avons résolu jusqu'à présent sur master. Je vais l'ajouter à la liste.

J'ai également eu l'erreur Multiple commands produce avec libReact.a & libyoga.a .
J'utilise:

  • Xcode 10
  • react-native 0.57.0
  • CocoaPods

Pour surmonter cela, j'ai ajouté ceci à mon 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

Puis reconstruisez votre projet Pods avec:

$ pod install

Détails complets de l'environnement:


  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

La solution de contournement confirmée de @PaulMest fonctionne. La suppression manuelle de Yoga dans Xcode, à partir des cibles du projet Pods devrait également fonctionner, comme je l'ai fait avec React qui a également causé des erreurs de construction de cibles en double, avant RN 0.57.

Si vous utilisez xcodebuild , ajoutez ce -UseModernBuildSystem=NO pour activer l'ancien système de construction

@PaulMest Merci, j'ai fait ma journée

J'espère que ma situation pourra vous aider à résoudre le problème!

Voici la sortie complète:

:-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'

Essentiellement, react-native-vector-icons et native-base regroupent les mêmes fichiers de polices. (Et pour une raison quelconque, nous en avons également un nous-mêmes; je ne manquerai pas de le supprimer.) Avant la mise à jour vers Xcode 10 / Mojave, il n'y avait pas de problème. Le seul changement a été de passer de Xcode 9 à Xcode 10.

@ntomallen J'ai rencontré exactement le même problème avec les polices en double de react-native-vector-icons et native-base et ce que j'ai fini par faire était de supprimer le doublon de la section Copy Resources To Bundle de mon application cible. Après cela, mon projet a fonctionné à nouveau (enfin, il s'est déplacé vers deux erreurs différentes, qui sont décrites ici: libfishhook.a ne peut pas être trouvé - fix et plusieurs commandes produisent une erreur avec libReact.a & libyoga.a. - fix

Jusqu'à présent, mon application fonctionnait bien et je peux compiler en utilisant le nouveau système de construction de XCode 10.

_Disclaimer: Je ne suis pas un développeur iOS expérimenté et j'ai piraté ces solutions ensemble. Je ne sais pas si j'ai raté quelque chose dont je ne sais pas.

C'est exactement ce qui a fonctionné pour moi aussi! Bien que je sois toujours curieux de savoir pourquoi c'est soudainement une erreur maintenant mais pas auparavant.
Le 26 septembre 2018, 14:49 -0400, Niels Bokmans [email protected] , a écrit:

@ntomallen J'ai rencontré exactement le même problème avec les polices en double de react-native-vector-icons et native-base et ce que j'ai fini par faire a été de supprimer le doublon de la section Copy Resources To Bundle de mon application cible. Après cela, mon projet a fonctionné à nouveau (enfin, il s'est déplacé vers deux erreurs différentes, qui sont décrites ici: libfishhook.a ne peut pas être trouvé - fix et plusieurs commandes produisent une erreur avec libReact.a & libyoga.a. - fix
Jusqu'à présent, mon application fonctionnait bien et je peux compiler en utilisant le nouveau système de construction de XCode 10.
Avertissement: je ne suis pas un développeur iOS expérimenté et j'ai piraté ces solutions ensemble. Je ne sais pas si j'ai raté quelque chose dont je ne sais rien.
-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub ou désactivez le fil de discussion.

@ntomallen Fondamentalement, c'est parce qu'il existe un nouveau système de construction "plus strict", et XCode 10 l'utilise par défaut alors que dans XCode 9, vous deviez choisir activement de l'utiliser plutôt que le système de construction "hérité" que nous utilisons tous jusqu'à maintenant.

D'accord. C'est exaspérant. Je suis passé au système de construction hérité. Maintenant, j'obtiens une erreur différente.

/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

Je n'ai aucune idée de ce que cela signifie, à part l'évidence - un fichier est manquant. Mais avant Xcode 10, je n'avais aucun problème de construction.

@mjstelly êtes-vous sur 0.57? Votre message d'erreur mentionne glog-0.3.4 mais 0,57 utilise glog-0.3.5 . Je veux juste m'assurer que nous suivons les problèmes sur la dernière version.

@PaulMest mon héros! Je vous remercie!

Bonjour @mjstelly

Êtes-vous confronté à un problème similaire avec un tiers .....
j'utilise xcode 10

  1. Dans le fichier inclus à partir de /Users/ehs-mobile-app/node_modules/react-native/third-party/folly-2016.09.26.00/folly/json. cpp: 17

Xcode 10.1 semble bien se construire sur les deux systèmes mais je ne peux pas archiver sur l'un ou l'autre, de nombreuses erreurs de construction. Que faire maintenant?

Vous devez être plus précis. Xcode 10 compile et archive très bien pour moi (après avoir résolu des erreurs dont je ne me souviens plus maintenant), sur MacOS 10.12.6 et RN 0.57.0.

Mon post_install Podfile ressemblait à ceci:

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

Suite à la suggestion de @PaulMest a fonctionné pour moi.

@njbmartin Merci!
seule ta solution a fonctionné pour moi

-UseModernBuildSystem = NON

Cela fonctionne pour moi. Mec, il m'a fallu trop de temps pour trouver ça. Merci.

Le passage au système de construction hérité corrige de nombreuses erreurs de construction, mais nous devons vraiment pouvoir utiliser le système moderne à l'avenir: p

Aussi, joyeux Thanksgiving à ceux d'entre vous qui célèbrent!

oui, la nouvelle version est bien sûr sympa mais ce n'est pas si fluide.
Mettez à niveau avec risque.

@PaulMest Merci. Votre hack fonctionne :)

La solution de contournement confirmée de @PaulMest fonctionne. La suppression manuelle de Yoga dans Xcode, à partir des cibles du projet Pods devrait également fonctionner, comme je l'ai fait avec React qui a également causé des erreurs de construction de cibles en double, avant RN 0.57.

Comment faire cela exactement @fungilation ?

C'est le seul bloqueur connu restant dans # 19573. Les gens rencontrent-ils toujours ce problème dans 0.57.8?

Je n'ai généralement aucun problème avec Xcode depuis 0.57.8

@hramos Malheureusement non. Pour moi, l'option de construction héritée Xcode est toujours requise avec 0.57.8 et aussi avec le nouveau 0.58.0-rc.3 (modifier: également avec 0.58.3).

Pour rendre cela reproductible, je crée un nouveau projet frais et le teste localement et avec travis CI. J'ai lié le projet original ci-dessous (mais il vient d'être créé avec l'init natif de réaction) et les versions réussies et cassées de travis. Peut-être que cela aide? Au moins, je pourrais et je referai cette expérience quand une nouvelle version sera disponible.

@hramos Je le rencontre quand je lance une compilation avec detox , pas yarn ios . Voici ma configuration pour mon simulateur 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"
}

Plus précisément, si j'exécute ceci: xcodebuild -project ios/reactipay.xcodeproj -scheme reactipay -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build cela échoue avec l'erreur d'origine.

J'ai également eu l'erreur Multiple commands produce avec libReact.a & libyoga.a .
J'utilise:

  • Xcode 10
  • react-native 0.57.0
  • CocoaPods

Pour surmonter cela, j'ai ajouté ceci à mon 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

Puis reconstruisez votre projet Pods avec:

$ pod install

Détails complets de l'environnement:

thnx man!

Je suis très confus avec cette erreur car elle ne semble pas cohérente. si j'exécute la commande de construction 10 fois, cela pourrait éventuellement commencer à fonctionner
voici à quoi ressemble le script mu e2e

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

où est la construction de désintoxication

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

Je ne peux pas utiliser le système de construction hérité car il se bloque sur la compilation de réaction, et je n'utilise pas Cocoa Pods.
Quelles autres solutions pourraient être?
Dois-je migrer mon iOS vers Cocoa? Quelles implications cela apporterait?

@ pavlof01 Je recherche spécifiquement des rapports sur ce qui se produit encore sur les versions 0.57.8 ou plus récentes.

@hramos J'ai toujours ceci sur Xcode 10.1 sur 0.57.8 et 0.58.3. Je n'ai pas essayé de courir en utilisant l'ancien système de construction (est-ce le correctif officiel pour le moment?) - à la place, j'utilise le Podfile pour target.remove_from_project quand name == "React" ou name == "yoga" . Je n'ai pas non plus essayé Xcode 9, etc., comme @jerolimov l' a fait ci-dessus.

Ce n'est pas un problème de blocage pour nous, mais juste si j'interviens! Lmk si je peux fournir des informations plus utiles.

Notez que lorsque j'ai dit que je n'avais plus de problème sur RN 0.57.8, j'utilise également cette solution de contournement dans 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

Oublié ça 😛

@hramos J'utilise 0.57.8 (même erreur) - faites-moi savoir si vous avez besoin d'informations supplémentaires.

J'ai rencontré cela aussi avec la désintoxication. Je l'ai corrigé en spécifiant une destination dans xcodebuild au lieu du sdk: -destination 'platform=iOS Simulator,name=iPhone 7'

Peut confirmer qu'il se produit sur 0.58.3 lors de l'étape d'archivage. L'ajout de la solution de contournement remove_from_project à mon fichier pod le résout. Sortie 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

Merci @aaronjensen a lutté de nombreuses heures sur celui-ci ...

J'utilise le nouveau système de construction depuis 58 sans aucun problème.

J'ai eu des problèmes de Multiple commands produce * comme ci-dessus, mais cela était dû à des restes d'avant le passage aux Pods (liaison); assurez-vous de supprimer tous les Linked Frameworks and Libraries liés

Une fois que vous l'avez nettoyé et que vous êtes passé à l'utilisation de RN via des pods, cela devrait ressembler à ceci:

image

Et PAS comme ça:
image

Notez que l'ancien système de construction ignorait ces duplications en essayant d'utiliser RN via la liaison de & pods ensemble; le nouveau système de construction ne le fait pas; vous pouvez donc en avoir depuis un certain temps

Si vous construisez avec xcodebuild par exemple pour Detox, assurez-vous d'appliquer la suggestion de @aaronjensen ci-dessus à votre commande de construction.

@salakar J'ai fait la même chose sans aucun problème. Une chose à noter est que si vous avez lié manuellement une bibliothèque tierce sans pods, il peut avoir du mal à trouver React Native. Essentiellement, essayez de tout basculer vers les pods.

Clôture selon le commentaire de @Salakar .

@cpojer IMHO cela n'est pas résolu si la solution nécessite des étapes manuelles après la création d'un projet simple avec react-native init . Ce n'est pas ce à quoi s'attendent les nouveaux utilisateurs. La valeur par défaut devrait simplement fonctionner sans aucune modification dans Xcode et sans CocoaPods. (Bien que CocoaPods soit excellent et fonctionne bien avec RN 😏)

Comme expliqué précédemment, j'ai créé un exemple d'application avec react-native init et l'ai exécuté sur Travis CI. Cela montre bien que la construction fonctionne bien avec Xcode 9 et Xcode 10 avec le système de construction hérité. Et cela ne fonctionne pas avec le nouveau système de construction Xcode 10.

Vous pouvez voir l'historique de construction ici sur GitHub , le maître est déjà 0.59.0-rc.1 et a toujours le même problème.

L'historique de construction des différentes branches est disponible sur Travis CI (le maître est Xcode 9 et il y a deux branches pour Xcode 10) et en tant que GitHub Pull Request

Comme dit. A MON HUMBLE AVIS. 😏

@jerolimov votre build ne spécifie pas de destination , ce qui semble être essentiel car il tente autrement de créer des artefacts pour tvOS et iOS, ce qui provoque le problème que vous voyez.

Ce qui n'est pas clair, c'est s'il y a quelque chose que RN peut faire qui pourrait amener le nouveau système de construction à savoir implicitement ce que vous voulez ou s'il ne s'agit en fait que d'un bogue dans xcode (auquel cas c'est le mauvais dépôt pour le problème) .

Compte tenu du commentaire de

Il semble que je n'ai pas nettoyé correctement les frameworks et les bibliothèques liés lorsque j'ai commencé à utiliser des pods. Quelqu'un peut-il fournir plus de détails sur le processus correct pour supprimer ces liens?

Dans Xcode, faites un clic droit sur toutes les choses qui font référence à React Native (généralement sous Frameworks ou Libraries dans la barre latérale), et choisissez de "supprimer les références". À la fin du processus, assurez-vous que la section Bibliothèques et cadres liés ne contient pas de références à React Native. Notez que lorsque vous faites cela, vos autres bibliothèques tierces qui dépendent de React Native doivent également être liées via des pods. (La plupart des principaux le supportent, ce qui est bien.)

J'ai rencontré cela aussi avec la désintoxication. Je l'ai corrigé en spécifiant une destination dans xcodebuild au lieu du sdk: -destination 'platform=iOS Simulator,name=iPhone 7'

@aaronjensen Pouvez-vous fournir le code complet à titre d'exemple?

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

Bien sûr, ce que vous avez ressemble à peu près à ce que nous utilisons.

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

J'ai également eu l'erreur Multiple commands produce avec libReact.a & libyoga.a .
J'utilise:

  • Xcode 10
  • react-native 0.57.0
  • CocoaPods

Pour surmonter cela, j'ai ajouté ceci à mon 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

Puis reconstruisez votre projet Pods avec:

$ pod install

Détails complets de l'environnement:


  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

bon travail
rm -rf Pods; pod install travaillé pour moi

@Salakar La suppression de toutes les bibliothèques RCT * du projet Linked Frameworks and Libraries dans Xcode se construit avec succès dans iOS mais donne l'erreur Native module cannot be null . Et seulement après avoir ajouté les bibliothèques libReact.a et autres libRCT*.a , la construction fonctionne. Nous utilisons Pods pour gérer d'autres dépendances.

Voici à quoi ressemble notre Podfile,

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

Plateforme mondiale pour votre projet

plateforme: ios, '9.0'

Intégrez tous les avertissements des bibliothèques CocoaPods.

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

cible 'RNMobile' faire
# Décommentez la ligne suivante si vous utilisez Swift ou souhaitez utiliser des frameworks dynamiques
# use_frameworks!

# Pods de base pour RNMobile
pod 'React',: path => '../node_modules/react-native',: subspecs => [
'Coeur',
«CxxBridge»,
«DevSupport»,
# les suivants sont ceux tirés de "Bibliothèques" dans Xcode:
«RCTAnimation»,
'RCTActionSheet',
«RCTBlob»,
'RCTGéolocalisation',
«RCTImage»,
«RCTLinkingIOS»,
«RCTNetwork»,
«RCTSettings»,
«RCTText»,
«RCTVibration»,
«RCTWebSocket»
]

# les dépendances suivantes sont des dépendances de React natif lui-même.
pod 'yoga',: 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 supplémentaires pour WahedMobile
pod 'AppCenter / Crashes', '~> 1.13.0'
pod 'AppCenter / Analytics', '~> 1.13.0'
pod 'AppCenterReactNativeShared', '~> 1.12.0'
pod 'RNVectorIcons',: chemin => '../node_modules/react-native-vector-icons'
pod 'lottie-react-native',: path => '../node_modules/lottie-react-native'
pod 'lottie-ios',: chemin => '../node_modules/lottie-ios'
pod 'RNAWSCognito',: chemin => '../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',: chemin => '../node_modules/react-native-svg'
pod 'react-native-camera',: path => '../node_modules/react-native-camera'

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

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

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

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

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

fin
''

L'ajout des bibliothèques dans Linked Frameworks and Libraries crée également des erreurs de symboles en double dans AppCenter.

Pour référence pour les utilisateurs natifs de réaction qui passent à 59 et disposent de pods:
En plus de la solution de tvOS dessus.

Mon post_install Podfile ressemblait à ceci:

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

Suite à la suggestion de @PaulMest a fonctionné pour moi.

votre solution a fonctionné pour moi, les chars.

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

Cela et tuer un exemple périmé de l'emballage du métro m'a aidé.

J'ai ce problème et je n'utilise pas de cocoapodes. Je ne peux pas utiliser de cocoapods car j'utilise la navigation react-native.

@MakhouT utilisant la navigation

@AngefloMusic React-native-navigation ne l'utilise pas et pour la configuration, vous devez modifier certains fichiers iOS natifs. Lorsque vous utilisez des cocoapodes, je suppose que cela sera en conflit lors de l'installation des dépendances de pod. Cependant, je ne suis pas sûr car je n'ai pas trop de coco. Alors s'il vous plaît, corrigez-moi si je me trompe.

@MakhouT Ils ne sont pas en conflit. En fait, si vous regardez le dépôt react-native-navigation vous verrez qu'il y a un fichier podspec. J'utilise RNN avec des cocoapodes dans un projet maintenant.

Désolé, j'ai besoin de le rouvrir, mais la solution la plus préférée (voir Podfile ci-dessous) m'amène à cette erreur douloureuse lors de la tentative de production de l'archive.

immagine

c'est mon 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

J'ai importé React à la fois dans Link Binary avec des bibliothèques et dans Linked Frameworks et bibliothèques.
Aidez-moi :)

Pour moi, travailler en supprimant les ressources dupliquées à l'intérieur

Construire des phases
Comme exemple ci-dessous, Fonts faisait une erreur

image

Je sais que c'est un problème résolu pour les personnes qui ont déplacé RN vers des pods ou les personnes qui utilisent RN> 0.60.x mais si vous n'êtes pas encore prêt ou migrer, c'est notre solution temporaire (elle a essentiellement supprimé la configuration tvOS du fichier pbxproj de React Native, ce qui semble être à l'origine des multiples cibles).

Nous l'utilisons dans notre script de post-installation

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`);
});

Pour ceux qui utilisent Fastlane et sont confrontés à ce problème, la solution @PaulMest fonctionne: ajoutez toutes les cibles requises à target_to_ignore puis exécutez rm -rf ios/Pods && pod install avant d'exécuter Fastlane

Pour moi, travailler en supprimant les ressources dupliquées à l'intérieur

Construire des phases
Comme exemple ci-dessous, Fonts faisait une erreur

image

En plus de la réponse de

Je crois que cette erreur dans mon cas était liée à la mise à jour vers XCode 11, mais je ne suis pas sûr de cette dernière partie.

Je confirme la même chose avec les polices en double, seulement après la mise à niveau vers Xcode 11 stable aujourd'hui (Mac 10.14.6). La suppression des polices dans la section [CP] Copy Pods Resources des phases de construction et de construction de Xcode fonctionne à nouveau.

Était et utilise un nouveau système de construction. Sur RN 0.60.5.

@fungilation pareil avec moi (Xcode 11 - mis à jour aujourd'hui, nouveau système de construction et RN 0.60.5). Je dois supprimer toutes les polices sous Copy Bundle Resources et cela fonctionne.

Mais lorsque j'exécute la commande pod install prochaine fois, ces entrées réapparaîtront 😂️

idem ici avec 0.61.0-rc.3 et xcode 11 11A420a mojave 10.14.6

J'ai seulement supprimé react-native-vector-icons tff et cela fonctionne. Pas besoin de supprimer tous les tffs

supprimer les pods précédents installent le pod puis exécutez le pod de mise à jour, cela fonctionnera.

voici ce que j'ai ajouté à mon 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

voici ce que j'ai ajouté à mon 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

J'ai essayé cette commande (avec fastlane) mais même dans ce cas, les erreurs persistent. 😢

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

J'obtiens des erreurs similaires pour 4 autres bibliothèques que j'ai installées -
RNKeyChain, RNAsyncStorage, RNDeviceInfo et BVLinearGradient

Voici mon environnement -

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

J'essaie de trouver une solution depuis le matin, je n'ai rien trouvé qui fonctionne jusqu'à présent. 👎
Même si lorsque je lance un émulateur, cela fonctionne très bien.

Je confirme la même chose avec les polices en double, seulement après la mise à niveau vers Xcode 11 stable aujourd'hui (Mac 10.14.6). La suppression des polices dans la section [CP] Copy Pods Resources des phases de construction et de construction de Xcode fonctionne à nouveau.

Était et utilise un nouveau système de construction. Sur RN 0.60.5.

Pour les débutants comme moi: vous devez éditer le fichier <PROJECT_FOLDER>/ios/<PROJECT_NAME>.xcodeproj/project.pbxproj

Puis commentez les lignes de police (fichiers se terminant par .ttf) comme ceci:

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", );

Et j'ai dû refaire ce processus à chaque fois que je courais pod install

Cette page vous a été utile?
0 / 5 - 0 notes