Divergence entre Finder et Xcode

J’ai un problème avec mes traductions. Le navigateur de fichiers dans Xcode me dit ceci :
Screenshot 2022-08-24 at 11.42.33
Mais le Finder, et c’est lui qui a raison, me dit cela :
Screenshot 2022-08-24 at 11.41.58
Du coup, tout n’apparaît pas comme traduit, et ça pose problème. Comment changer ça ?

Bon. Je ne sais pas comment j’ai fait ça. J’ai à moitié arrangé les choses, en défaisant puis refaisant. Et là, j’ai dû les aggraver, mais je ne sais pas comment. J’ai une build error avec ça comme message :

"
Prepare build
note: Using new build system
note: Planning
note: Build preparation complete
note: Building targets in dependency order
error: Multiple commands produce ‹ /Users/fj/Library/Developer/Xcode/DerivedData/Koussikoussa2-gkvlvkdotsctiyenievnnekwzkss/Build/Intermediates.noindex/Koussikoussa2.build/Debug-iphonesimulator/Koussikoussa2.build/Objects-normal-asan/x86_64/HelpyView.stringsdata ›
note: Target ‹ Koussikoussa2 › (project ‹ Koussikoussa2 ›) has compile command for Swift source files
note: Target ‹ Koussikoussa2 › (project ‹ Koussikoussa2 ›) has compile command for Swift source files

Analyze workspace
Create build description
Build description signature: faa34c55c143d7f903dddda463236a35
Build description path: /Users/fj/Library/Developer/Xcode/DerivedData/Koussikoussa2-gkvlvkdotsctiyenievnnekwzkss/Build/Intermediates.noindex/XCBuildData/faa34c55c143d7f903dddda463236a35-desc.xcbuild
note: Using new build system
note: Planning
note: Build preparation complete
note: Building targets in dependency order
error: Multiple commands produce ‹ /Users/fj/Library/Developer/Xcode/DerivedData/Koussikoussa2-gkvlvkdotsctiyenievnnekwzkss/Build/Intermediates.noindex/Koussikoussa2.build/Debug-iphonesimulator/Koussikoussa2.build/Objects-normal-asan/x86_64/HelpyView.stringsdata ›
note: Target ‹ Koussikoussa2 › (project ‹ Koussikoussa2 ›) has compile command for Swift source files
note: Target ‹ Koussikoussa2 › (project ‹ Koussikoussa2 ›) has compile command for Swift source files
"

Au secours. Je ne sais pas quoi faire, là. Maxime, au secours ? ThonyF, au secours ?
Question subsidiaire : est-on obligé de passer par Xcode ?

Apparemment il y a un duplication de fichiers ou de code.
Une solution possible : faire ce que propose le lien ci-dessous.

Bon courage.

Ça, la duplication, certes; mais c’est ce que je me demande depuis le début : comment un fichier se serait-il dupliqué ? Et j’ai bien déjà regardé Build Phases, mais je ne trouve pas de doublon. Je me suis aperçu que j’avais beaucoup de fichiers et ça m’a pris du temps, aussi, boosté par ta réponse et la soluce donné sur Stackoverflow, où je ne suis pas manqué d’aller, mais où je n’ai pas su mettre les bons mots clefs pour trouver ce que tu m’as proposé, je vais tâcher de voir si j’ai vraiment un fichier en double, mais j’en étais arrivé à la conclusion que, peut-être, Xcode lui-même avait doublonné la commande pour tout le projet… Auqel cas, crois-tu qu’il serait judicieux de repartir d’un projet vide et de réintroduire fichier à fichier tout le projet dedans ?
Sais-tu s’il y a un moyen de se passer d’Xcode ?

Je ne trouve pas de doublon. J’ai bien tout revérifié. Dans l’onglet build phases, il me trouve 57 fichiers source et 7 fichiers de ressources. Je les ai vérifié un par un. Je désespère toujours.

Dans l’onglet Build Phases, j’ai bricolé la présence d’infoPlist, d’un modèle pour CoreData, tout ça sans succès. Le message actuel précis d’erreur est : " Showing Recent Messages

Multiple commands produce ‹ /Users/fj/Library/Developer/Xcode/DerivedData/Koussikoussa2-gkvlvkdotsctiyenievnnekwzkss/Build/Intermediates.noindex/Koussikoussa2.build/Debug-iphonesimulator/Koussikoussa2.build/Objects-normal-asan/x86_64/HelpyView.stringsdata ›
"
or, le fichier HelpyView.stringsdata n’existe pas à ma connaissance. HelpyView.swift existe par contre, et en unique exemplaire.

Merci encore, Mrt1 ! C’est toi qui avait trouvé la solution ! Mais ce n’était pas le fichier info.Plist qui était en cause.

En fait, il faut bien suivre le path indiqué dans le message d’erreur, seulement ce n’est pas dans Users/fj/Library qu’il faut chercher, mais bien dans le projet où l’on trouve DerivedData.

On s’aperçoit que les fichiers n’y sont pas en double, mais que HelpyView.stringsdata existe bel et bien. C’est seulement dans les listings affichés dans l’onglet Build Phases de la cible que les fichiers apparaissent en double, et s’il y a un fichier en moins, on trouve le même nombre, il faut tout repasser un par un.

C’est dans cet onglet seulement qu’il faut corriger, en supprimant les doublons et en remettant les fichiers manquant qu’il devrait y avoir. Et avec ça, ça marche !

Il y a quand même à se demander pourquoi cette situation : que fabrique Xcode ? C’est lui tout seul, apparemment, qui fait ça. On en viendrait presque à regretter le temps des compilations en C, et des linkages, avec les fichiers make compliqués mais avec lesquels tout était compréhensible et avec lesquels on pouvait suivre pas à pas ce qu’on faisait. Apple nous enlève de nombreuses pierres du chemin et nous évite tout ce temps passé à surveiller la compilation, à corriger le fichier make et à configurer la configuration. Mais il faudrait tout de même que la documentation explique ce que fabrique Xcode, les erreurs en détail — on a parfois l’impression de miner une cryptomonnaie quand on cherche une information, et on finit par corriger sans savoir le fin mot de l’erreur, pourquoi Xcode a fait ça, l’erreur qu’on a faite pour qu’Xcode fasse ça, le pourquoi du comment.

C’est vrai que de ce point de vue, Android, Flutter, Kotlin et tout la famille sont plus transparents, mais jusqu’à un certain point. Qui est féru des mystères de Gradle ?

2 « J'aime »

Content que vous ayez trouvé la solution!
Généralement les rares fois où j’ai des soucis de projets voici ce que je fais dans l’ordre :

  • tenter un Clean build folder depuis le menu Product de Xcode
  • vérifier ce qui a changé depuis la fois précédente quand ca marchait.
  • refaire un checkout git dans un nouveau dossier et réouvrir le projet du nouveau checkout
  • revenir à la version précédente avec Git
  • refaire un nouveau projet Xcode et transférer les fichiers source depuis l’ancien

Sachant que 99% des soucis sont réglés avec un Clean, les autres étapes ne sont quasiment jamais faites.
Elles permettent surtout de savoir si c’est moi qui ait fait une modif qui a posé problème ou si le problème est dû au logiciel.
Mais quand c’est à cause du logiciel le Clean suffit souvent à le corriger.

1 « J'aime »

En Principe, quand il y un problème, c’est moi le problème ! Là, pour une fois, je ne sais pas. Git, je l’utilise soit à partir de Source Control dans Xcode, soit à partir de GitKraken, dont je ne sais pas encore bien me servir, je ne sais pas bien ce que c’est qu’un checkout Git. Je retiens : refaire un nouveau projet dans Xcode et transférer les fichiers source depuis l’ancien, la prochaine fois que les étapes précédentes ne marchent pas, et que Mrt1 n’est pas là pour chercher mieux que moi dans StackOverflow. Je suis tellement doué pour les fausses manœuvres, les trucs peu visibles, les erreurs de débutant qu’on ne pense plus à vérifier parce qu’on se croit un peu plus expérimenté, et même aussi les autres !

1 « J'aime »

Le checkout c’est lorsqu’on telecharge la dernière version du projet pour commencer à travailler dessus sur un nouvel ordinateur (ou si une nouvelle personne commence à travailler avec toi sur le projet).
Je m’en sers pour faire un checkout sur le même ordinateur, mais dans un autre dossier comme ça j’invalide pas mal de caches et je repars comme si j’étais un nouveau développeur sur ce projet existant.

Je crois qu’il faut que je reprenne le cours sur git, c’est plus important qu’on ne pense, même lorsqu’on travaille seul sur un projet. On croit qu’on connaît parce qu’on fait des commit, on n’exploite pas forcément tout le potentiel de l’outil.

Merci en tous cas.

1 « J'aime »

Git est indispensable pour un programmeur, j’en suis convaincu.
Par contre il existe des fonctionnalités avancées que je n’utilise jamais et qui sont surtout utiles pour les équipes.

1 « J'aime »

J’avais trouvé ce petit schéma qui permet de bien comprendre les commandes simples pour git.

1 « J'aime »