98 votes

Xcode lance 'atomic_notify_one<unsigned long>' est indisponible.

J'ai installé Xcode 12 sur mon Mac, j'ai essayé de construire mon application react native qui fonctionne parfaitement sur Android, et j'obtiens 'atomic_notify_one<unsigned long>' is unavailable . C'est le maximum d'informations que j'obtiens de l'erreur.

8voto

Marvelous Ikechi Points 23

Cette erreur était une erreur de flipper. Flipper a généré plusieurs autres erreurs moins descriptives que j'ai dû commenter dans mon podfile. Après avoir commenté, cette erreur a cessé.

8voto

jyotishman saikia Points 1602

J'ai juste commenté cette ligne et résolu ce problème

  # use_flipper!
  # post_install do |installer|
  #   flipper_post_install(installer)
  # end

7voto

benoit Points 51

J'ai rencontré le même problème lors de la construction dans XCode 12.5. Si la désactivation temporaire de Flipper n'est pas une option pour vous, vous pouvez rétrograder vers XCode 12.4. Cela a réglé le problème pour moi. Vous pouvez télécharger XCode 12.4 ici : https://developer.apple.com/download/more

5voto

Umang Loriya Points 446

Je pense que la réponse fournie par @opensw fonctionnera mais j'ai trouvé une solution plus améliorée pour que cela fonctionne avec l'installation des pods à chaque fois sans supprimer le fichier Pods dossier. Tout d'abord, ajoutez/remplacez la ligne suivante dans votre fichier Podfile

use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })

Maintenant, dans les dernières versions mentionnées dans les lignes ci-dessus corrige un problème avec la fonction Flipper-folly Mais nous devons également prendre en charge le RCT-folly et pour cela, nous utiliserons la fonction find_and_replace fonction. Voici la nouvelle fonction que j'ai obtenue à partir de l'application aquí

# Define find-and-replace function
  def find_and_replace(dir, findstr, replacestr)
    Dir[dir].each do |name|
        text = File.read(name)
        replace = text.gsub(findstr,replacestr)
        replaced = text.index(replacestr)
        if replaced == nil && text != replace
            puts "Fix: " + name
            File.open(name, "w") { |file| file.puts replace }
            STDOUT.flush
        end
    end
    Dir[dir + '*/'].each(&method(:find_and_replace))
  end

Maintenant, nous appelons cette fonction à partir de la post-installation. Nous devrons donc ajouter les 2 appels de fonction suivants dans la post-installation post_install do |installer|

 find_and_replace("Pods/RCT-Folly/folly/synchronization/DistributedMutex-inl.h",
                   "atomic_notify_one(state)", "folly::atomic_notify_one(state)")

  find_and_replace("Pods/RCT-Folly/folly/synchronization/DistributedMutex-inl.h",
  "atomic_wait_until(&state, previous | data, deadline)", "folly::atomic_wait_until(&state, previous | data, deadline)")

Voici ma réponse en Github

5voto

Remplacez tout le code actuel du flipper dans votre podfile par celui-ci en fonction de votre version de React Native :

add_flipper_pods!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })

ou

use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })

Ensuite, mettez à jour le projet Pods en utilisant ceci :

cd ios && pod install && cd ..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X