React-native: Error 'varios comandos producen' al compilar con el nuevo sistema de compilación Xcode

Creado en 1 ago. 2018  ·  69Comentarios  ·  Fuente: facebook/react-native

Hola,

Medio 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

Error:

Recibí el siguiente error cuando intento construir la aplicación 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'
...

Pasos de reproducción:

  • react-native init
  • 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

Detalles:

Lo probé en la aplicación RN simple que fue creada por el comando " react-native init ".
Cuando intento crear la aplicación usando la GUI de Xcode 10, se crea correctamente.
Pero trato de construirlo usando el comando xcodebuild; falló con el error anterior.

Cuando usamos el mismo comando en la misma aplicación (RN 0.56) en Xcode 9.4.1, se compila con éxito
Si no especifico -sdk param en el comando xcodebuild, se compila con éxito.
Nota: _Los errores pueden ser diferentes para las diferentes versiones de Xcode 10 Beta._

Preguntas:

¿RN 0.56 es compatible con Xcode 10 Beta?
¿Cómo puedo solucionarlo?
¿Existe una solución alternativa para construirlo usando Xcode 10 Beta?

Bug iOS Locked

Comentario más útil

Puede intentar cambiar el sistema de compilación a Legacy,
Archivo> Configuración del espacio de trabajo> Sistema de compilación> Sistema de compilación heredado.

Todos 69 comentarios

Puede intentar cambiar el sistema de compilación a Legacy,
Archivo> Configuración del espacio de trabajo> Sistema de compilación> Sistema de compilación heredado.

Queremos utilizar un nuevo sistema de construcción.

El nuevo sistema de construcción debe ser compatible. Estamos rastreando cualquier problema que la gente encuentre con Xcode 10 o el nuevo sistema de compilación en esta tarea: https://github.com/facebook/react-native/issues/19573

De un vistazo, no parece que su problema esté cubierto por lo que hemos solucionado hasta ahora en el maestro. Lo agregaré a la lista.

También tuve el error Multiple commands produce con libReact.a & libyoga.a .
Estoy usando:

  • Xcode 10
  • react-native 0.57.0
  • CocoaPods

Para superar esto, he agregado esto a mi 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

Luego, reconstruya su proyecto de Pods con:

$ pod install

Detalles completos del entorno:


  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 que funciona la solución de Pods también debería funcionar, como lo he estado haciendo con React, que también ha estado causando errores de compilación de objetivos duplicados, antes de RN 0.57.

Si está utilizando xcodebuild , agregue este -UseModernBuildSystem=NO para optar por el antiguo sistema de compilación heredado

@PaulMest Gracias, me

¡Espero que mi situación pueda ayudarlos a solucionar el problema!

Aquí está el 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'

Básicamente, react-native-vector-icons y native-base agrupan los mismos archivos de fuentes. (Y por alguna razón también tenemos uno de ellos incluido; me aseguraré de eliminarlo). Antes de actualizar a Xcode 10 / Mojave, no hubo ningún problema. El único cambio fue actualizar de Xcode 9 a Xcode 10.

@ntomallen Me encontré exactamente con el mismo problema con fuentes duplicadas de react-native-vector-icons y native-base y lo que terminé haciendo fue eliminar el duplicado de la sección Copy Resources To Bundle de mi aplicación de destino. Después de esto, mi proyecto funcionó nuevamente (bueno, se movió a dos errores diferentes, que se describen aquí: libfishhook.a no se puede encontrar - corregir y varios comandos producen error con libReact.a & libyoga.a. - arreglar

Hasta ahora, mi aplicación ha funcionado bien y puedo compilar usando el nuevo sistema de compilación de XCode 10.

_Descargo de responsabilidad: no soy un desarrollador de iOS con experiencia y pirateé estas soluciones juntas. No sé si he estropeado algo que no conozco.

¡Eso es exactamente lo que funcionó para mí también! Aunque todavía tengo curiosidad por saber por qué de repente es un error ahora pero no antes.
El 26 de septiembre de 2018, 2:49 p. M. -0400, Niels Bokmans [email protected] escribió:

@ntomallen Me encontré con el mismo problema exacto con las fuentes duplicadas de react-native-vector-icons y native-base y lo que terminé haciendo fue eliminar el duplicado de la sección Copiar recursos al paquete de mi aplicación de destino. Después de esto, mi proyecto funcionó nuevamente (bueno, se movió a dos errores diferentes, que se describen aquí: libfishhook.a no se puede encontrar - corregir y varios comandos producen error con libReact.a & libyoga.a. - arreglar
Hasta ahora, mi aplicación ha funcionado bien y puedo compilar usando el nuevo sistema de compilación de XCode 10.
Descargo de responsabilidad: no soy un desarrollador de iOS con experiencia y pirateé estas soluciones juntas. No sé si he estropeado algo que no conozco.
-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub o silencie el hilo.

@ntomallen Básicamente se debe a que hay un nuevo sistema de compilación "más estricto", y XCode 10 lo usa de forma predeterminada, mientras que en XCode 9 tuvo que elegir activamente usarlo en lugar del sistema de compilación "heredado" que todos hemos estado usando hasta ahora.

Okay. Esto es enloquecedor. Cambié al sistema de compilación heredado. Ahora, obtengo un error 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

No tengo idea de lo que esto significa, aparte de lo obvio: falta un archivo. Pero antes de Xcode 10, no tuve ningún problema de compilación.

@mjstelly, ¿estás en 0.57? Su mensaje de error menciona glog-0.3.4 pero 0.57 usa glog-0.3.5 . Solo quiero asegurarme de que estamos rastreando los problemas en la última versión.

@PaulMest mi héroe! ¡Gracias!

Hola @mjstelly

¿Está enfrentando un problema similar con un tercero .....
estoy usando xcode 10

  1. En archivo incluido de /Users/ehs-mobile-app/node_modules/react-native/third-party/folly-2016.09.26.00/folly/json. cpp: 17

Xcode 10.1 Parece que se está construyendo bien en ambos sistemas, pero no puedo archivar en ninguno de los dos, hay muchos errores de compilación. ¿Qué hacer ahora?

Tienes que ser más específico. Xcode 10 se compila y archiva bien para mí (después de resolver algunos errores que no recuerdo ahora), en MacOS 10.12.6 y RN 0.57.0.

Mi post_install de Podfile se ve así:

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 la sugerencia de @PaulMest funcionó para mí.

@njbmartin ¡Gracias!
solo tu solución funcionó para mí

-UseModernBuildSystem = NO

Esto funciona para mi. Hombre, me tomó demasiado tiempo encontrar esto. Gracias.

Cambiar al sistema de compilación heredado corrige muchos errores de compilación, pero realmente necesitamos poder usar el sistema moderno en el futuro: p

Además, ¡Feliz Día de Acción de Gracias para aquellos de ustedes que celebran!

sí, la nueva versión es bonita, por supuesto, pero no tan fluida.
Actualice con riesgo.

@PaulMest Gracias. Tu truco funciona :)

Confirmado que funciona la solución de Pods también debería funcionar, como lo he estado haciendo con React, que también ha estado causando errores de compilación de objetivos duplicados, antes de RN 0.57.

¿Cómo hacer esto exactamente @fungilation ?

Este es el único bloqueador conocido que queda en # 19573. ¿La gente todavía se encuentra con este problema en 0.57.8?

No tengo ningún problema en general con Xcode desde 0.57.8

@hramos Lamentablemente no. Para mí, la opción de compilación heredada de Xcode todavía es necesaria con 0.57.8 y también con el nuevo 0.58.0-rc.3 (editar: también con 0.58.3).

Para hacer esto reproducible, creo un nuevo proyecto fresco y lo pruebo localmente y con travis CI. Vinculé el proyecto original a continuación (pero se acaba de crear con react-native init) y las compilaciones exitosas y rotas en travis. ¿Quizás esto ayude? Al menos podría volver a ejecutar este experimento cuando haya una nueva versión disponible.

@hramos Me lo estoy encontrando cuando ejecuto una compilación con desintoxicación , no yarn ios . Aquí está mi configuración para mi simulador de 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"
}

Específicamente, si ejecuto esto: xcodebuild -project ios/reactipay.xcodeproj -scheme reactipay -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build falla con el error original.

También tuve el error Multiple commands produce con libReact.a & libyoga.a .
Estoy usando:

  • Xcode 10
  • react-native 0.57.0
  • CocoaPods

Para superar esto, he agregado esto a mi 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

Luego, reconstruya su proyecto de Pods con:

$ pod install

Detalles completos del entorno:

gracias hombre!

Estoy muy confundido con este error ya que no parece consistente. si ejecuto el comando de compilación 10 veces, eventualmente podría comenzar a funcionar
así es como se ve el 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

¿Dónde está la construcción de desintoxicación?

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

No puedo usar el sistema de compilación heredado, ya que se cuelga de la compilación de reacción y no uso Cocoa Pods.
¿Qué otras soluciones podrían ser?
¿Debo migrar mi iOS a Cocoa? ¿Qué implicaciones traería?

@ pavlof01 Estoy buscando específicamente informes de que esto todavía ocurre en las versiones 0.57.8 o más recientes.

@hramos Todavía tengo esto en Xcode 10.1 en 0.57.8 y 0.58.3. No he intentado ejecutar con el sistema de compilación heredado (¿es esa la solución oficial por ahora?); En cambio, estoy usando el Podfile para target.remove_from_project cuando name == "React" o name == "yoga" . Tampoco he probado Xcode 9, etc., como lo ha hecho

Este no es un problema de bloqueo para nosotros, ¡pero yo intervendría! Lmk si puedo proporcionar más información útil.

Tenga en cuenta que cuando dije que ya no tengo ningún problema en RN 0.57.8, también estoy usando esta solución en 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

Lo olvidé 😛

@hramos Estoy usando 0.57.8 (mismo error) - avíseme si necesita información adicional.

Me encontré con esto también con la desintoxicación. Lo arreglé especificando un destino en xcodebuild en lugar del sdk: -destination 'platform=iOS Simulator,name=iPhone 7'

Puede confirmar que ocurre en 0.58.3 durante el paso de archivo. Agregar la solución remove_from_project a mi podfile lo resuelve. Salida 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

Gracias @aaronjensen luchó muchas horas en este ...

He estado usando el nuevo sistema de compilación desde 58 sin problemas.

Tuve problemas de Multiple commands produce * como los anteriores, pero esto se debió a las sobras de antes de cambiar a Pods (vinculación); asegúrese de eliminar todos los Linked Frameworks and Libraries relacionados con React Native de su proyecto Xcode (no el espacio de trabajo generado) si ahora está usando Pods.

Una vez que lo haya limpiado y haya cambiado a RN a través de Pods, debería verse así:

image

Y NO así:
image

Tenga en cuenta que el antiguo sistema de compilación ignoró estas duplicaciones al intentar utilizar RN mediante la vinculación de & pods; el nuevo sistema de construcción no lo hace; por lo que es posible que los haya tenido durante algún tiempo.

Si está construyendo con xcodebuild eg para Detox, asegúrese de aplicar la sugerencia de @aaronjensen de arriba a su comando de construcción.

@salakar He estado haciendo lo mismo sin problemas. Una cosa a tener en cuenta es que si vinculó manualmente una biblioteca de terceros sin pods, puede tener problemas para encontrar React Native. Básicamente, intenta cambiar todo a Pods.

Cierre según el comentario de @Salakar .

@cpojer En mi react-native init . Esto no es lo que esperan los nuevos usuarios. El valor predeterminado debería funcionar sin cambios en Xcode y sin CocoaPods. (Aunque CocoaPods es genial y funciona bien con RN 😏)

Como se explicó antes, creé una aplicación de muestra con react-native init y ejecuté esto en Travis CI. Esto demuestra que la compilación funciona bien con Xcode 9 y Xcode 10 con el sistema de compilación heredado. Y no funciona con el nuevo sistema de compilación Xcode 10.

Puede ver el historial de compilación aquí en GitHub , el maestro ya es 0.59.0-rc.1 y todavía tiene el mismo problema.

El historial de compilación para diferentes ramas está disponible en Travis CI (el maestro es Xcode 9 y hay dos ramas para Xcode 10) y como GitHub Pull Request

Como dijo. EN MI HUMILDE OPINIÓN. 😏

@jerolimov, su compilación no especifica un destino , lo que parece ser esencial, ya que de lo contrario intenta construir artefactos tanto para tvOS como para iOS, lo que causa el problema que está viendo.

Lo que no está claro es si hay algo que RN pueda estar haciendo que pueda hacer que el nuevo sistema de compilación sepa qué desea implícitamente o si esto es solo un error en xcode (en cuyo caso este es el repositorio incorrecto para el problema) .

Dado el comentario de @Salakar

Parece que no limpié los marcos y bibliotecas vinculados correctamente cuando cambié para comenzar a usar Pods. ¿Alguien puede proporcionar más detalles sobre el proceso correcto para eliminar esos enlaces?

En Xcode, haga clic con el botón derecho en todas las cosas que hacen referencia a React Native (generalmente en Frameworks o Bibliotecas en la barra lateral) y elija "eliminar referencias". Al final del proceso, asegúrese de que la sección Bibliotecas y marcos vinculados no tenga referencias a React Native. Tenga en cuenta que mientras hace esto, sus otras bibliotecas de terceros que dependen de React Native también deben estar vinculadas a través de Pods. (La mayoría de los principales lo admiten, lo cual es bueno).

Me encontré con esto también con la desintoxicación. Lo arreglé especificando un destino en xcodebuild en lugar del sdk: -destination 'platform=iOS Simulator,name=iPhone 7'

@aaronjensen ¿Puede proporcionar el código completo como muestra?

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

Claro, lo que tienes se parece mucho a lo que estamos usando.

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

También tuve el error Multiple commands produce con libReact.a & libyoga.a .
Estoy usando:

  • Xcode 10
  • react-native 0.57.0
  • CocoaPods

Para superar esto, he agregado esto a mi 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

Luego, reconstruya su proyecto de Pods con:

$ pod install

Detalles completos del entorno:


  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

buen trabajo
rm -rf Pods; pod install funcionó para mí

@Salakar La eliminación de todas las bibliotecas RCT * de Linked Frameworks and Libraries en el proyecto Xcode se compila con éxito en iOS, pero da el error Native module cannot be null . Y solo después de agregar las bibliotecas libReact.a y otras libRCT*.a , la compilación funciona. Estamos usando Pods para administrar otras dependencias.

A continuación se muestra cómo se ve nuestro Podfile,

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

Plataforma global para su proyecto

plataforma: ios, '9.0'

Ignore todas las advertencias de las bibliotecas CocoaPods.

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

objetivo 'RNMobile' hacer
# Descomente la siguiente línea si está usando Swift o le gustaría usar marcos dinámicos
# use_frameworks!

# Pods básicos para RNMobile
pod 'React',: path => '../node_modules/react-native',: subspecs => [
'Núcleo',
'CxxBridge',
'DevSupport',
# los siguientes son los tomados de "Bibliotecas" en Xcode:
'RCTAnimation',
'RCTActionSheet',
'RCTBlob',
'RCTGeolocation',
'RCTImage',
'RCTLinkingIOS',
'RCTNetwork',
'RCTSettings',
'RCTText',
'RCTVibration',
'RCTWebSocket'
]

# las siguientes dependencias son dependencias de React native.
pod 'yoga',: ruta => '../node_modules/react-native/ReactCommon/yoga/Yoga.podspec'
pod 'DoubleConversion',: podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'Locura',: podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'glog',: podspec => '../node_modules/react-native/third-party-podspecs/GLog.podspec'

# Cápsulas adicionales para WahedMobile
pod 'AppCenter / Crashes', '~> 1.13.0'
pod 'AppCenter / Analytics', '~> 1.13.0'
pod 'AppCenterReactNativeShared', '~> 1.12.0'
pod 'RNVectorIcons',: ruta => '../node_modules/react-native-vector-icons'
pod 'lottie-react-native',: ruta => '../node_modules/lottie-react-native'
pod 'lottie-ios',: ruta => '../node_modules/lottie-ios'
pod 'RNAWSCognito',: ruta => '../node_modules/amazon-cognito-identity-js'
pod 'TouchID',: ruta => '../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',: ruta => '../node_modules/react-native-svg'
pod 'react-native-camera',: ruta => '../node_modules/react-native-camera'

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

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

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

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

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

fin
''

Además, agregar las bibliotecas en Linked Frameworks and Libraries crea errores de símbolos duplicados en AppCenter.

Como referencia para los usuarios nativos de Reacción que están actualizando a 59 y tienen pods:
Además de la solución de tvOS .

Mi post_install de Podfile se ve así:

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 la sugerencia de @PaulMest funcionó para mí.

su solución funcionó para mí, tanques.

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

Eso y matar una instancia obsoleta del empaquetador de metro me ayudó.

Tengo este problema y no estoy usando cocoapods. No puedo usar cocoapods porque estoy usando react-native-navigation.

@MakhouT usando react-native-navigation no le restringe el uso de cocoapods

@AngefloMusic React-native-navigation no lo está usando y para la configuración necesitas cambiar algunos archivos nativos de iOS. Al usar cocoapods, supongo que esto entrará en conflicto entre sí al instalar las dependencias de pod. Sin embargo, no estoy seguro porque no tengo demasiadas semillas de coco. Así que corrígeme si me equivoco.

@MakhouT No react-native-navigation , verás que hay un archivo podspec. Estoy usando RNN con cocoapods en un proyecto ahora.

Lo siento, necesito volver a abrir esto, pero la solución más preferida (ver Podfile a continuación) me lleva a este doloroso error al intentar producir el archivo.

immagine

este es mi 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

He importado React tanto en Link Binary con bibliotecas como en Linked Frameworks y bibliotecas.
Ayuda :)

Para mí, trabajo eliminando recursos duplicados en el interior

Construir fases
Como ejemplo a continuación, Fonts estaba cometiendo un error.

image

Sé que este es un problema resuelto para las personas que movieron RN a Pods o personas que usan RN> 0.60.x, pero si aún no está listo o está migrando, esta es nuestra solución temporal (básicamente eliminó la configuración de tvOS del archivo pbxproj de React Native, que parece estar causando los múltiples objetivos).

Lo usamos en nuestro 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 aquellos que usan Fastlane y enfrentan este problema, la solución @PaulMest funciona: agregue todos los objetivos requeridos a targets_to_ignore y luego ejecute rm -rf ios/Pods && pod install antes de ejecutar Fastlane

Para mí, trabajo eliminando recursos duplicados en el interior

Construir fases
Como ejemplo a continuación, Fonts estaba cometiendo un error.

image

Agregando a la respuesta de @aerda ,

Creo que este error en mi caso estaba relacionado con la actualización a XCode 11, pero no estoy seguro de esa última parte.

Confirmo lo mismo con las fuentes duplicadas, solo después de actualizar a Xcode 11 estable hoy (Mac 10.14.6). La eliminación de fuentes en la sección [CP] Copy Pods Resources de las fases de compilación y compilación de Xcode funciona nuevamente.

Estaba y está usando un sistema de construcción nueva. En RN 0.60.5.

@fungilation lo mismo conmigo (Xcode 11 - actualizado hoy, nuevo sistema de compilación y RN 0.60.5). Tengo que eliminar todas las fuentes debajo de Copy Bundle Resources y funciona.

Pero cuando ejecute el comando pod install próxima vez, estas entradas aparecerán nuevamente 😂️

lo mismo aquí con 0.61.0-rc.3 y xcode 11 11A420a mojave 10.14.6

Solo he eliminado react-native-vector-icons tff y funciona. No es necesario eliminar todos los tffs

elimine los pods anteriores instale el pod y luego ejecute el pod de actualización;

esto es lo que agregué a mi 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

esto es lo que agregué a mi 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

Probé este comando (con fastlane) pero aún así los errores persisten. 😢

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

Recibo errores similares para otras 4 bibliotecas que he instalado:
RNKeyChain, RNAsyncStorage, RNDeviceInfo y BVLinearGradient

Aquí está mi entorno

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

He estado tratando de encontrar una solución desde la mañana, pero hasta ahora no he encontrado nada que funcione. 👎
Aunque cuando ejecuto un emulador, funciona bien.

Confirmo lo mismo con las fuentes duplicadas, solo después de actualizar a Xcode 11 estable hoy (Mac 10.14.6). La eliminación de fuentes en la sección [CP] Copy Pods Resources de las fases de compilación y compilación de Xcode funciona nuevamente.

Estaba y está usando un sistema de construcción nueva. En RN 0.60.5.

Para novatos como yo: necesitas editar el archivo <PROJECT_FOLDER>/ios/<PROJECT_NAME>.xcodeproj/project.pbxproj

Luego comente las líneas de fuente (archivos que terminan en .ttf) de esta manera:

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

Y tuve que rehacer este proceso cada vez que ejecuté pod install

¿Fue útil esta página
0 / 5 - 0 calificaciones