Bizarrement, je n'arrive pas à faire en sorte qu'Archive fonctionne dans XCode, mais la construction réussit sans les erreurs sur les symboles en double si je ne tente pas d'archiver, mais crée simplement une version. Le projet s'appuie également sur les périphériques.
J'ai effectué des recherches sur ce sujet et essayé de désactiver la testabilité, et de définir le paramètre «Aucun bloc commun» dans les paramètres du projet sur NO, mais aucune chance jusqu'à présent.
Le projet est un projet React Native 0,40 avec CocoaPods également installé. PodFile est-ce
# You Podfile should look similar to this file. React Native currently does not support use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
# Change 'AirMapsExplorer' to match the target in your Xcode project.
target 'StreetSmart' do
pod 'React', path: '../node_modules/react-native', :subspecs => [
'Core',
'RCTActionSheet',
'RCTAnimation',
'RCTGeolocation',
'RCTImage',
'RCTLinkingIOS',
'RCTNetwork',
'RCTSettings',
'RCTText',
'RCTVibration',
'RCTWebSocket'
]
pod 'GoogleMaps' # <~~ remove this line if you do not want to support GoogleMaps on iOS
# when not using frameworks we can do this instead of including the source files in our project (1/4):
# pod 'react-native-maps', path: '../../'
# pod 'react-native-google-maps', path: '../../' # <~~ if you need GoogleMaps support on iOS
end
La version XCode est 8.2.1 et le fichier de projet est ouvert via .xcworkspace à partir du moment où les pods sont installés.
J'apprécierais vraiment toute aide ou idée à ce sujet, je suis resté bloqué pendant des heures.
Enfin résolu le problème après avoir trouvé un problème pertinent sur un autre projet réag-natif ici .
La réponse est qu'il existe deux copies de React Native dans le projet Xcode, une de CocoaPods et une autre en tant que sous-projet. Supprimez simplement tous les modules déjà déclarés dans Podfile sous la Libraries
dans Xcode et l'erreur disparaît après un nettoyage et une nouvelle tentative.
Ce qui est intéressant à propos de ce problème est que toutes les versions de Debug et Release fonctionnent, mais cela échoue lors de la tentative d'archivage du projet pour la distribution.
[Mise à jour 2 mai 2017]
La solution que j'ai décrite ci-dessus peut provoquer des erreurs de débogage lorsque vous exécutez votre code avec react-native run-ios/Android
, bien qu'elle permette au projet d'être archivé avec succès.
Une autre méthode consiste à supprimer les modules en double qui existent à la fois dans Libraries
et Podfile
de la déclarationPodfile
au lieu du dossier Libraries
. Et bien sûr, exécutez les commandes de pod correspondantes, nettoyez votre projet, etc.
Cela permettait à mon code d’archiver et d’exécuter sans erreurs de débogage
J'ai donc fait encore plus de recherches à ce sujet et la solution de contournement est en réalité beaucoup plus simple. Ou du moins c'était dans mon cas. Le problème est que lorsque vous déclarez React dans le podfile, le xcodeproject de Pods obtient une cible React dans le cadre du processus pod install
. Avoir cette cible dans le projet Pods est la cause de l'erreur lorsque vous archivez. La solution consiste donc à supprimer la cible.
Le problème avec la suppression de la cible dans xCode est que cela modifie réellement le fichier project.pbxproj dans le dossier Pods qui ne se trouve pas dans le contrôle de version. Ainsi, bien que la construction archivera une fois que vous aurez fait cela, si vous déployez à partir de n'importe quel endroit autre que la machine qui l'a supprimée manuellement, cela échouera quand même. La solution consiste donc à ajouter cette commande post-installation au bas de votre podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "React"
target.remove_from_project
end
end
end
Cela passe simplement en boucle à travers tous les modules à installer et supprime la cible de React. De cette façon, n'importe où qui construit le projet, supprimera également la cible. Maintenant, lorsque vous construirez sur Archive, cela n'échouera pas.
J'ai résolu ce problème de la manière suivante: (Ref .: https://github.com/react-community/react-native-maps/issues/718 )
-ObjC
dans ces deux fichiers:Pods-{TARGET-NAME}.release.xcconfig
e Pods-{TARGET-NAME}.debug.xcconfig
-ObjC
dans la valeur J'ai supprimé le dossier build/Build dans ios et relancez votre projet. Ça fonctionne maintenant.
Effets secondaires du lien ci-dessus: l'application peut devenir plus grande, car elle peut contenir des symboles en double.
J'espère que ça peut t'aider.