Résolution des problèmes du KIT de développement logiciel (SDK) iOS
Important
Visual Studio App Center doit être mis hors service le 31 mars 2025. Bien que vous puissiez continuer à utiliser Visual Studio App Center jusqu’à ce qu’il soit entièrement mis hors service, il existe plusieurs alternatives recommandées vers lesquelles vous pouvez envisager de migrer.
En savoir plus sur les chronologies et les alternatives de support.
Problèmes pendant l’installation
- Dans la console, recherchez un journal Assert avec le message « Kit de développement logiciel (SDK) App Center configuré avec succès ». Le message implique que le KIT de développement logiciel (SDK) est configuré correctement.
- Si vous utilisez Cocoapods pour intégrer App Center à votre application iOS et rencontrer une erreur avec le message ,
CocoaPods - Unable to find a specification for AppCenter
exécutezpod repo update
pour mettre à jour votre dépôt Cocoapods local, puis réexécutezpod install
. - Si vous utilisez CocoaPods pour intégrer App Center à votre application iOS et que lors de la compilation du projet, vous rencontrez une erreur avec le message ,
framework not found AppCenter.xcframework
vous devez mettre à jour(réinstaller) Cocoapods vers la version tardive en exécutant[sudo] gem install cocoapods
. - Si vous intégrez manuellement les fichiers binaires du KIT de développement logiciel (SDK), vérifiez que les modules sont activés pour votre projet.
Les données d’analyse ne s’affichent pas dans le portail
Assurez-vous d’avoir correctement intégré les modules sdk.
Assurez-vous que le secret d’application approprié est inclus avec l’appel de
start:withServices:
méthode. Vous pouvez copier le -code exactstart:withServices:
en ouvrant l’application dans le portail et en accédant à Prise en main page.Si vous souhaitez voir les journaux envoyés au back-end, remplacez le niveau du journal par Détaillé dans votre application. Le Kit de développement logiciel (SDK) imprime ensuite les journaux dans la console. Insérez l’appel suivant avant le démarrage du Kit de développement logiciel (SDK) :
[MSACAppCenter setLogLevel:MSACLogLevelVerbose]
AppCenter.logLevel = .verbose
Vérifiez que « Kit de développement logiciel (SDK) App Center a été correctement configuré » s’affiche dans les journaux (au niveau du journal INFO), puis case activée si vous voyez les journaux des requêtes HTTPS.
Vérifiez que votre appareil est en ligne.
Parfois, la surface des journaux d’activité peut prendre quelques minutes dans le portail. Attendez un certain temps si c’est le cas.
Pour case activée si le back-end App Center a reçu vos données, accédez à la section Flux de journal dans Service Analytics. Vos événements doivent apparaître une fois qu’ils ont été envoyés.
Les incidents ne s’affichent pas dans le portail
Assurez-vous d’avoir correctement intégré les modules sdk.
Assurez-vous que le secret d’application correct est inclus avec l’appel de
start:withServices:
méthode. Vous pouvez copier le code exactstart:withServices:
en ouvrant l’application dans le portail et en accédant à Prise en main page.Les incidents app Center transfèrent le journal des incidents uniquement après le redémarrage de l’application. En outre, le KIT de développement logiciel (SDK) ne transfère aucun journal d’incident si vous êtes attaché au débogueur. Assurez-vous que le débogueur n’est pas attaché lorsque vous plantez l’application.
Si vous souhaitez voir les journaux envoyés au back-end, remplacez le niveau du journal par Détaillé dans votre application. Le Kit de développement logiciel (SDK) imprime ensuite les journaux dans la console. Insérez l’appel suivant avant le démarrage du Kit de développement logiciel (SDK) :
[MSACAppCenter setLogLevel:MSACLogLevelVerbose]
AppCenter.logLevel = .verbose
Vérifiez que « Kit de développement logiciel (SDK) App Center a été correctement configuré » s’affiche dans les journaux (au niveau du journal INFO), puis case activée si vous voyez les journaux des requêtes HTTPS.
N’utilisez pas d’autres bibliothèques qui fournissent la fonctionnalité Rapport d’incident. Vous ne pouvez avoir qu’un seul KIT de développement logiciel (SDK) de rapports d’incidents intégré à votre application.
Vérifiez que votre appareil est en ligne.
Parfois, la surface des journaux d’activité peut prendre quelques minutes dans le portail. Attendez un certain temps si c’est le cas.
Vérifiez si le KIT de développement logiciel (SDK) a détecté le blocage au prochain démarrage de l’application. Vous pouvez appeler l’API pour case activée si l’application s’est plantée lors de la dernière session et affiche une alerte. Vous pouvez également étendre le rappel d’incident
didSucceedSendingErrorReport
pour voir s’il a été correctement envoyé au serveur.Pour case activée si le serveur principal App Center a reçu l’incident, accédez à la section Flux de journal dans le service Analytics. Vos plantages doivent apparaître là, une fois qu’il a été envoyé.
L’alerte qui invite les utilisateurs à une mise à jour ne contient pas de chaînes, mais uniquement les clés pour eux
Cela signifie que le AppCenterDistributeResources.bundle
n’a pas été ajouté au projet. Vérifiez que vous avez supprimé le fichier dans votre projet Xcode et qu’il s’affiche dans la phase de génération de Copy Bundle Resources
votre cible d’application. Il doit apparaître là si vous avez ajouté le fichier par glisser-déplacer - Xcode le fait automatiquement pour vous. Si le fichier est absent de la phase de génération, ajoutez-le afin qu’il soit compilé dans le bundle de votre application.
Si vous utilisez Cocoapods, il prend automatiquement en charge les ressources. Essayez de réinstaller le pod.
Vous voyez des messages dans la console qui indiquent que la base de données n’a pas pu être ouverte
À compter de la version 0.11.0 du KIT de développement logiciel (SDK) iOS, App Center utilise SQLite pour conserver les journaux avant de les envoyer au serveur principal. Si vous regroupez votre application avec votre propre bibliothèque SQLite au lieu d’utiliser celle fournie par le système d’exploitation, il se peut que vous voyiez des erreurs comme celle-ci dans la console [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database
et que vous ne verrez pas d’informations d’analyse ou d’incident dans le back-end. Mettez à jour le Kit de développement logiciel (SDK) vers la version 0.13.0 ou ultérieure.
Distribuer et les mises à jour dans l’application bloquent mes tests d’interface utilisateur automatisés
Si les mises à jour dans l’application sont activées, elles bloquent vos tests d’interface utilisateur automatisés. Le processus de mise à jour tente de s’authentifier auprès du back-end App Center. Nous vous recommandons de ne pas activer App Center Distribute pour votre cible de test de l’interface utilisateur.
Pourquoi le KIT de développement logiciel (SDK) est distribué en tant que « bibliothèque statique »
Les principaux objectifs de conception du Kit de développement logiciel (SDK) App Center sont d’avoir un impact minimal sur l’application à l’aide d’App Center et d’avoir un KIT de développement logiciel (SDK) modulaire. Cela entraînerait la distribution du Kit de développement logiciel (SDK) sous forme de plusieurs bibliothèques partagées liées dynamiques.
Historiquement, iOS ne prenait pas en charge les bibliothèques partagées liées dynamiques, mais a été ajouté dans iOS 8, comme expliqué dans ce billet de blog de Landon Fuller.
Toutefois, App Center est distribué sous la forme d’une bibliothèque partagée liée statiquement qui est encapsulée dans une infrastructure fausse « grosse ». Cela signifie que le KIT de développement logiciel (SDK) est lié au moment de la compilation et non au moment du lancement pour de meilleures performances. Le chargement de plusieurs bibliothèques partagées liées dynamiques prend du temps.
Apple recommande d’optimiser le lancement de l’application pour ne pas prendre plus de 400 ms dans une session WWDC. Pour atteindre cet objectif, ils recommandent spécifiquement les bibliothèques partagées statiques plutôt que les bibliothèques partagées dynamiques. La distribution du Kit de développement logiciel (SDK) App Center pour iOS en tant que bibliothèque partagée liée de manière statique suit la recommandation d’Apple de fournir les meilleures performances et un impact minimal sur l’application qui inclut le kit SDK.
Pour en savoir plus sur les bibliothèques partagées liées statiquement et les bibliothèques partagées liées dynamiques, nous vous recommandons la documentation générale d’Apple sur le sujet.
Pourquoi les fichiers binaires du KIT de développement logiciel (SDK) sont-ils si volumineux ? Je m’inquiète de la taille de mon application
Les fichiers binaires AppCenter sont distribués en tant que frameworks « fat » qui contiennent des segments pour toutes les architectures iPhone et pour le simulateur iPhone. C’est pourquoi, par exemple , AppCenter.framework est de 10,5 Mo à télécharger.
La taille compilée des fichiers binaires du KIT de développement logiciel (SDK) sera beaucoup plus petite que celle .framework
que vous ajoutez à votre application dans Xcode. Gardez également à l’esprit que les builds de mise en production seront également plus petites que les builds de débogage.
Pour illustrer cela, nous avons créé une application Objective-C vide avec Xcode 9.2, ajouté les fichiers binaires App Center à l’application et distribué des builds de mise en production à un iPhone 7 exécutant iOS 11.3.
Nous avons exécuté les tests sans bitcode activé et n’avons pas utilisé App Thinning. Vous pouvez utiliser ces techniques pour réduire encore plus la taille binaire de votre application.
Les nombres ci-dessous peuvent varier et dépendent de vos paramètres de build, donc considérez-les comme un guide approximatif. Cela dit, l’ajout du Kit de développement logiciel (SDK) App Center à votre application a un impact minimal sur la taille de votre fichier binaire d’application.
Modules App Center utilisés | Taille d’IPA exportée | Taille de l’installation |
---|---|---|
Aucun (application vide) | 24 ko | 132 Ko |
Analytique App Center | 120 Ko | 377 Ko |
Incident d’App Center | 239 Ko | 705 Ko |
Distribution d’App Center | 163 Ko | 528 Ko |
Tous les modules App Center | 314 Ko | 930 Ko |
Protéger la valeur de secret App Center
app_secret
est un identificateur de votre application, il est nécessaire de savoir à quelle application le trafic s’applique et il ne peut pas être utilisé pour récupérer ou modifier des données existantes. Si votre app_secret
est exposé, le plus grand risque est d’envoyer des données incorrectes à votre application, mais cela n’aura pas d’effet sur la sécurité des données.
Pour récupérer des données sensibles, vous devez fournir un jeton d’application/utilisateur, qui est généré du côté du client. Il n’existe aucun moyen de sécuriser complètement les données côté client.
Vous pouvez améliorer la sécurité de votre application à l’aide d’une variable d’environnement pour injecter le secret d’application dans votre code. Ainsi, le secret n’est pas visible dans votre code.