Provisioning profile

Je découvre un problème de « provisioning profile ». J’arrivais jusqu’alors à installer sur mon iPhone de développement la version en cours de réalisation de mon app, mais depuis aujourd’hui, rien ne va plus, il ne trouve plus de provisioning profile et ne parvient pas à l’installer. J’ai un compte payant, valable jusqu’en 2023, je ne comprends pas !
Voici le détail de l’échec :

Details

Unable to install « Koussikoussa2 »
Domain: com.apple.dt.MobileDeviceErrorDomain
Code: -402620395
User Info: {
DVTErrorCreationDateKey = « 2022-07-01 15:49:38 +0000 »;
IDERunOperationFailingWorker = IDEInstalliPhoneLauncher;
}

A valid provisioning profile for this executable was not found.
Domain: com.apple.dt.MobileDeviceErrorDomain
Code: -402620395
User Info: {
DVTRadarComponentKey = 487925;
MobileDeviceErrorCode = « (0xE8008015) »;
« com.apple.dtdevicekit.stacktrace » = (
0 DTDeviceKitBase 0x0000000116c6f9d1 DTDKCreateNSErrorFromAMDErrorCode + 220
1 DTDeviceKitBase 0x0000000116cabce7 __90-[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:]_block_invoke + 155
2 DVTFoundation 0x00000001044807d6 DVTInvokeWithStrongOwnership + 71
3 DTDeviceKitBase 0x0000000116caba1d -[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:] + 1422
4 IDEiOSSupportCore 0x000000011620b668 __118-[DVTiOSDevice(DVTiPhoneApplicationInstallation) processAppInstallSet:appUninstallSet:installOptions:completionBlock:]_block_invoke.301 + 3414
5 DVTFoundation 0x00000001045b23d4 DVT_CALLING_CLIENT_BLOCK + 7
6 DVTFoundation 0x00000001045b34bc __DVTDispatchAsync_block_invoke + 372
7 libdispatch.dylib 0x00007ff81efaf0cc _dispatch_call_block_and_release + 12
8 libdispatch.dylib 0x00007ff81efb0317 _dispatch_client_callout + 8
9 libdispatch.dylib 0x00007ff81efb6317 _dispatch_lane_serial_drain + 672
10 libdispatch.dylib 0x00007ff81efb6dfd _dispatch_lane_invoke + 366
11 libdispatch.dylib 0x00007ff81efc0eee _dispatch_workloop_worker_thread + 753
12 libsystem_pthread.dylib 0x00007ff81f163fd0 _pthread_wqthread + 326
13 libsystem_pthread.dylib 0x00007ff81f162f57 start_wqthread + 15
);
}

Quelqu’un aurait-il une idée ? Que faire ?

Les problèmes de provisionnements sont les plus compliqués à résoudre car ils devraient se gérer automatiquement et si ça ne marche pas c’est que Xcode a rencontré un soucis. Maintenant pour trouver le soucis…
As-tu changé d’ordinateur ou de session ?
Si rien n’a changé dans ton ordinateur, je te conseille plusieurs choses :

  • dans les préférences de Xcode, essaie de te déconnecter, puis reconnecter à ton compte Apple
  • dans les réglages de ta target, « Signing & Capabilities » : décoche, puis recoche "Automatically manage signing et vérifie que la « team » est bien sélectionnée et affichée en dessous
  • refait un clean build « Product » > « Clean build folder »
  • croise les doigts :crossed_fingers:
1 « J'aime »

Merci. C’est en effet très difficile, rien de tout ça ne marche. J’ai écrit à Apple, qui me demande des renseignements que je leur ai déjà fourni spontanément, ce qui ne me rassure qu’à moitié. Au moins, la réponse de leur part est rapide malgré la proximité d’Independance Day. Peut-être automatique ? On verra bien… Pour l’instant, j’en suis réduit à voir que cela marche dans le simulateur, mais sur un projet comme ça, avant même de corriger les traductions, j’aimerais bien le voir marcher sur mon iPad et sur mon iPhone. Bon. Je tiendrai au courant.

1 « J'aime »

Alors, voilà la réponse peu encourageante que j’ai reçu d’Apple in fine :

Hello François,

Thank you for providing the requested information.

We have reviewed all the information you provided including the screen recording, and we determined that this is an issue which is outside our scope of support. Apple Developer Program Support specialises in providing administrative support to developers.

I therefore would like to refer you to our online resource that guides through the process of testing app on a device directly from Xcode:

https://help.apple.com/xcode/mac/current/#/dev5a825a1ca

As an additional troubleshooting step, you may check whether your binary runs comfortably on a simulated device (iOS, tvOS, watchOS):

https://help.apple.com/xcode/mac/current/#/devfd9e28378

I hope you find this information helpful, and I remain at your disposal should you have any other inquiries regarding your developer account. Your case number is 101738893806.

Kind regards,

Christian
Apple Inc.

Je suis allé voir sur StackOverflow, j’ai trouvé une suggestion consistant à remplacer dans File → project settings « New Build System » par « Legacy Build System ». J’ai tenté ça, mais Xcode a aussitôt déclenché une erreur, indiquant que l’ancien système serait vite supprimé et était d’ores et déjà obsolète. J’ai donc rétropédalé, retour au New Build System. Depuis, quoi que je fasse, il trouve mon iPhone occupé et s’acharne à tenter d’installer mon appli sur ma montre… Une idée ?

Ça n’a pas duré, il est revenu à l’état antérieur, avec la même rengaine. Néanmoins, je m’interroge : et si le problème venait de l’altération d’un fichier, est-ce que ça pourrait être un .plist ? Comment savoir ? Quand dans Source Control j’affiche la liste des Commit, apparaît en marge une indication selon lequel le fichier d’info aurait été, à un moment, effacé et sans doute recréé ensuite. Pourrait-il avoir perdu quelque chose en route qui pourrait occasionner cette réponse d’Xcode ? Qui ne trouve pas de provisioning profile ?

Ça m’aurait étonné qu’Apple fournisse du support à ce niveau, et leur réponse montre clairement que ça n’est pas le cas :joy:

Il reste encore plusieurs choses à tester :

  • Vérifier que tu n’utilises pas une beta de Xcode ou de iOS
  • Supprimer l’app de ton téléphone
  • Redémarrer ton téléphone

Procédure suivante :

  1. Dans Xcode, va dans Window > Devices and Simulators
  2. Vérifie que ton appareil apparaît quand tu le branches (est-ce que tu utilises bien un cable officiel
    Apple ?)
  3. Sélectionne ton iPhone dans la liste et regarde s’il n’y a pas des erreurs qui s’affichent

Si tu ne trouves toujours pas d’erreurs à corriger, tu peux aussi créer manuellement le profil de provisionnement : Sign In - Apple

Xcode : version 13.4.1 (13F100)
J’ai supprimé l’app
je l’ai redémarré
j’ai toujours le même refus d’installer l’app sur mon téléphone
mon téléphone apparaît correctement dans « Devices and Simulator » quand il est branché avec son câble d’origine (Apple donc) Voici ce qui s’affiche :

Il va sans dire que l’appli qui apparaît n’est pas celle dont je parle.

J’ai peut-être un embryon de solution, je ne sais pas. Jusqu’à il y a peu, le provisioning profile était un bout du fichier info.plist qui est aujourd’hui à part, encodé en mode DER (je ne sais pas ce que c’est, je vais chercher). Voici ce que j’ai trouvé sur les forums Apple :
"
A provisioning profile with DER-Encoded-Profile will fail the signing verification on iOS 15 beta 1 and 2. From our internal testing, only Apps developed via XCode Version 13.0 beta (13A5154h) can be installed because only the provisioning profiles generated from Xcode 13 beta do not contain DER-Encoded-Profile Our build servers run Xcode 12 so all profiles contain DER-Encoded-Profile. This is impacting our organization’s ability to test our internal Enterprise Apps for the preparation for iOS 15 support as all Enterprise mobile provisioning profiles have DER-Encoded-Profile.
"
Je me demande si je ne fonctionnais pas sur l’ancien modèle de profile, et l’effacement de info.plist aurait provoqué le passage au DER-encoded-profile alors que Xcode attendrait l’autre version ? Un truc du genre ?

En fait, tout ça ne débouche sur rien. Il est possible qu’il y ait quelque part un bug, voire un bug Apple, je n’en sais rien. J’ai tenté, en désespoir de cause, de griller un de mes deux tickets annuels de code level support, mais les gens de chez Apple m’en ont dissuadé : « c’est un problème lié à la signature du code, la page de lien que l’on vous envoie fait le tour du problème, et on fait pour vous un geste, on remet le compteur à zéro, vous gardez vos deux tickets ».
Merci, monsieur Apple.
Mais, voilà, je sèche. j’ai lu tous les messages sur le forum développeur d’Apple comme sur StackOverflow, concernant mon problème. J’ai trouvé un certain nombre de demandes avec exactement les mêmes codes d’erreur, à des époques différentes de 2018 à 2021. Je n’ai jamais trouvé quelqu’un à qui l’on adressait une solution qui soit validée.
J’ai constaté que si je montais une app de démo sans aucun intérêt et qu je veuille la faire marcher sur mon iPhone, j’y parvenais sans difficulté. Je me demande si je ne devrais pas faire comme si je partais de zéro, refaire un projet de même nom et rebalancer tous les fichiers de mon projet dedans pour voir ? Est-ce un e bonne idée, ou bien est-ce à éviter par dessus tout ?

Eurêka. C’est réparé. Je me suis contenté de comparer le fichier Build settings de la target de l’appli bidon que j’avais réussi à installer sur mon iPhone avec le fichier Build settings de la target de mon appli, rubrique « Code signing ».
J’ai trouvé une incohérence à corriger, et tout est rentré dans l’ordre. Xcode me demande seulement le mot de passe de Keychain Access à chaque install, ce qu’il ne faisait pas avant, mais l’important, c’est que ça marche !

1 « J'aime »

Content que tu aies trouvé la solution @fjacquemin ! Te rappelles-tu de l’incohérence que tu avais trouvée ? Ca permettrait de compléter la solution pour d’autres personnes qui pourraient rencontrer le même problème.

Je pense au contraire que ce serait une bonne idée. Surtout si tu utilises Git, tu peux sans soucis regenerer tes fichiers de projet et de configuration puis voir ce qui a vraiment changé. A tout moment tu peux revenir en arrière avec Git donc n’hésite pas la prochaine fois

L’incohérence, c’était de cocher le sandboxing, ce que je ne me rappelle pas avoir jamais fait, pour une app iOS. Ce n’est que pour les app MacOS. Et c’est bien dans le chapitre « signing » du « Build Settings ».

Quant à Git, le problème, c’est que le projet a déjà changé de nom, et que retrouver l’info.plist qui allait bien exposait à retrouver des items sous des formes non actuelles et qui n’auraient pas marché non plus… Je fais des commit à chaque modification. Mais je vois bien que ça ne résout pas tout.

1 « J'aime »