Exécuter les vérifications de prescan
Copiez un prompt de configuration avec les étapes d'installation et le guide markdown complet pour ce plugin.
Avant Capgo Cloud Build télécharge votre projet, le CLI exécute une préscan qui détecte les problèmes de credenciaux, de projet et de configuration de magasin localement.
Il s'exécute également en mode standalone :
npx @capgo/cli@latest build prescan <appId> --platform iosIl existe 80 vérifications aujourd'hui. Il est préférable d'ignorer les identifiants de vérification individuels plutôt que de désactiver la vérification complète.
Ignorer des vérifications spécifiques
Section intitulée « Ignorer des vérifications spécifiques »# Skip one check entirely (example: intentional Capacitor server.url / Next.js shell)npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-skip ios/capacitor-server-url-shipped
# Run the check but never block on it (error becomes warning)npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-warn ios/capacitor-server-url-shipped
# Repeatable or comma-separatednpx @capgo/cli@latest build request <appId> --platform ios \ --prescan-skip ios/capacitor-server-url-shipped \ --prescan-warn ios/capacitor-allow-navigation-wildcard,ios/plist-ats-arbitrary-loadsAliases de ligne de commande standalone activés build prescan:
npx @capgo/cli@latest build prescan <appId> --platform ios \ --skip ios/capacitor-server-url-shipped \ --warn ios/capacitor-server-cleartextLes identifiants de vérification inconnus échouent rapidement avec un message d'erreur clair.
Échappements mondiaux (utilisez-les avec parcimonie)
Section intitulée “Échappements mondiaux (utilisez-les avec parcimonie)”| Drapeau | Effet |
|---|---|
--no-prescan | Ignorer l'ensemble de l'analyse |
--prescan-ignore-fatal (ou --ignore-fatal sur build prescan) | Exécuter l'analyse, imprimer le rapport, ne jamais bloquer |
--fail-on-warnings | Considérer les avertissements comme mortels (CI) |
--no-prescan et --prescan-ignore-fatal cacher ou contourner tous les contrôles restants. Utilisez les surcharges par contrôle au lieu de cela lorsque vous n'êtes d'accord qu'avec une règle.
Vérifier le catalogue
Section intitulée « Vérifiez le catalogue »Utilisez l'identifiant exact --prescan-skip / --prescan-warn.
Enforce progressif signifie que les résultats sont uniquement informatifs jusqu'à 2026-08-14puis il peut bloquer les builds.
| Identifiant | Plateformes | Ce qu'il vérifie | Enforce progressif |
|---|---|---|---|
shared/apikey-permission | ios, android | La clé API peut demander des builds natifs | — |
shared/app-exists | ios, android | L'ID de l'application existe et est visible pour la clé API | — |
shared/credentials-saved | ios, android | Les informations de connexion iOS/Android sont enregistrées localement | — |
shared/cap-sync-stale | ios, android | Les assets web sont construits et les plugins Capacitor sont synchronisés | — |
shared/node-linker-layout | ios, android | La disposition de node_modules fonctionne avec les chemins natifs Capacitor | — |
shared/bundle-id-consistency | ios, android | L'ID de l'application Capacitor correspond à l'ID de la charge utile native / à l'ID de l'application | — |
| Id | Plateformes | Ce qu'il vérifie | Application progressive de la mise en œuvre |
|---|---|---|---|
ios/p12-opens | ios | Le certificat de signature iOS s'ouvre avec le mot de passe fourni | — |
ios/p12-expiry | ios | Le certificat de signature iOS n'est pas expiré | — |
ios/profile-expiry | ios | Le profil de provisionnement iOS n'est pas expiré | — |
ios/profile-bundle-match | ios | Le ID de bundle du profil de provisionnement correspond à l'application | — |
ios/profile-type-vs-mode | ios | Le type de profil correspond au mode app_store / ad_hoc | — |
ios/cert-profile-pairing | ios | Le certificat est intégré au profil de provisionnement | — |
ios/targets-covered | ios | Tous les cibles iOS ont un profil de provisionnement | — |
ios/infoplist-sanity | ios | Le fichier Info.plist contient les clés de version / identité requises | — |
ios/asc-key-valid | ios | Les champs de la clé App Store Connect API de l'application ressemblent à des champs valides | — |
ios/asc-key-access | ios | La clé API ASC peut accéder à l'application (distante) | — |
ios/plist-bundle-id-format | ios | Le format CFBundleIdentifier est valide | Oui |
ios/plist-version-short-format | ios | Le format CFBundleShortVersionString est valide | Oui |
ios/plist-version-build-format | ios | Le format CFBundleVersion est valide | Oui |
ios/plist-encryption-compliance | ios | ITSAppUsesNonExemptEncryption est déclaré | Oui |
ios/plist-ats-arbitrary-loads | ios | NSAllowsArbitraryLoads n'est pas activé pour la production | Oui |
ios/plist-launch-storyboard | ios | L'écran de démarrage est déclaré | Oui |
ios/plist-orientations-multitasking | ios | Les paramètres d'orientation / multitasking sont cohérents | Oui |
ios/plist-orientations-present | ios | UISupportedInterfaceOrientations est déclaré | Oui |
ios/plist-display-name | ios | Le nom d'affichage est défini | Oui |
ios/plist-background-modes-sanity | ios | Les valeurs de UIBackgroundModes semblent valides | Oui |
ios/xcode-deployment-target-capacitor | ios | La cible de déploiement iOS répond aux exigences de Capacitor | Oui |
ios/xcode-signing-team | ios | L'équipe de signature est définie | Oui |
ios/xcode-bundle-id-mismatch-across-configs | ios | Le numéro de bundle est cohérent dans les configurations Xcode | Oui |
ios/xcode-enable-bitcode-leftover | ios | La suppression de l'héritage de Bitcode est effectuée | Oui |
ios/xcode-swift-version-sanity | ios | La version Swift est configurée de manière raisonnable | Oui |
ios/xcode-no-app-target | ios | Le projet Xcode a un cible d'application | Oui |
ios/xcode-multiple-app-targets | ios | Plusieurs cibles d'applications sont gérées intentionnellement | Oui |
ios/entitlements-vs-profile-capability | ios | Les autorisations correspondent aux capacités du profil | Oui |
ios/entitlements-aps-environment-vs-mode | ios | aps-environment correspond au mode de distribution | Oui |
ios/entitlements-associated-domains-format | ios | Le format des domaines associés est valide | Oui |
ios/entitlements-app-groups-format | ios | Le format App Groups est valide | Oui |
ios/capacitor-server-url-shipped | ios | server.url ne doit pas être laissé en tant que point d'entrée de rechargement en direct / de shell distant pour les builds de magasin | Oui |
ios/capacitor-server-cleartext | ios | server.cleartext n'est pas activé pour la production | Oui |
ios/capacitor-allow-navigation-wildcard | ios | server.allowNavigation n'est pas un wildcard général | Oui |
ios/pods-not-installed | ios | Les CocoaPods Pods / workspace sont présents lors de l'utilisation de Pods | Oui |
ios/pods-lock-missing | ios | Podfile.lock fixe les versions des pods | Oui |
ios/pods-capacitor-missing | ios | Podfile relie Capacitor | Oui |
ios/spm-package-resolved-missing | ios | Le Package.resolved SPM est présent | Oui |
ios/spm-capacitor-dependency-missing | ios | Le fichier Package.swift déclare Capacitor | Oui |
ios/appicon-empty-or-placeholder | ios | L'ensemble d'icônes AppIcon existe et n'est pas vide | Oui |
ios/appicon-referenced-file-missing | ios | Les fichiers d'icônes de Contents.json existent sur le disque | Oui |
ios/appicon-marketing-missing | ios | L'icône de marketing 1024×1024 existe | Oui |
ios/spm-deployment-target-consistency | ios | Le cible de déploiement SPM est cohérent | Oui |
Android
Section intitulée “Android”| Id | Plateformes | Ce qu'il vérifie | Exécution progressive |
|---|---|---|---|
android/keystore-opens | android | Clé Android s'ouvre avec les mots de passe fournis | — |
android/keystore-expiry | android | Le certificat de signature Android n'est pas expiré | — |
android/cordova-vars-present | android | cordova.variables.gradle est présent après la synchronisation de cap | — |
android/gradle-props-heuristics | android | Les heuristiques de gradle.properties pour les ruptures de build courantes | — |
android/play-sa-json | android | Le compte de service Play est présent lorsqu'il est configuré | — |
android/flavor-exists | android | Le goût de produit demandé existe | — |
android/agp8-package-attr | android | Le package de l'attribut de manifest supprimé pour AGP 8+ | — |
android/manifest-well-formed | android | Le fichier AndroidManifest.xml est analysé | — |
android/manifest-tag-typo | android | Typographie des balises de manifeste commune | — |
android/manifest-namespace-uri | android | L'URI de namespace xmlns:android est correcte | — |
android/manifest-missing-prefix | android | Les attributs Android utilisent la préfixe android: | — |
android/manifest-exported-missing | android | La propriété android:exported est définie là où nécessaire | — |
android/manifest-multiple-uses-sdk | android | Seul un élément uses-sdk est utilisé | — |
android/manifest-duplicate-component | android | Aucun composant ne peut être dupliqué | — |
android/manifest-unique-permission | android | Les permissions personnalisées sont uniques | — |
android/manifest-hardcoded-debuggable | android | debuggable=true ne sera pas expédié | — |
android/manifest-mock-location | android | ACCESS_MOCK_LOCATION ne sera pas expédié | — |
android/manifest-exported-unprotected | android | Les composants exportés sont protégés | — |
android/manifest-query-all-packages | android | La justification de QUERY_ALL_PACKAGES | — |
android/manifest-deeplink-valid | android | Les filtres d'intent Deeplink semblent valides | — |
android/applicationid-present | android | L'identifiant d'application est déclaré dans app/build.gradle | — |
android/capacitor-build-gradle-applied | android | capacitor.build.gradle existe lors de l'application | — |
android/gradle-wrapper-present | android | Les fichiers de wrapper Gradle sont présents | — |
android/flavor-dimensions | android | Les dimensions de saveur sont déclarées lorsqu'il existe des saveurs | — |
android/google-services-file | android | google-services.json est présent lors de l'application du plugin | — |
android/local-properties-committed | android | les propriétés locales ne sont pas mises en cache avec des secrets | — |
android/sdk-floors | android | les étages min/compile/target SDK apparaissent valides | — |
android/target-sdk-play | android | la version cible SDK répond aux exigences de Play | — |
android/min-sdk-capacitor | android | la version minSDK répond aux exigences de Capacitor | — |
android/version-fields | android | les versionsCode / versionName sont présentes | — |
android/play-sa-access | android | le compte de service Play peut accéder à l'application (distante) | — |
Exemple : shell de serveur distant Next.js / server.url shell
Section intitulée “Exemple : shell de serveur distant Next.js / server.url shell”L'envoi d'un shell natif qui charge une production server.url est un modèle Capacitor pris en charge. Les drapeaux de pré-lecture ios/capacitor-server-url-shipped car il s'agit souvent d'un résidu de rechargement en direct.
Le reconnaître sans désactiver les autres vérifications :
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-skip ios/capacitor-server-url-shippedOu garder la visibilité comme un avertissement :
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-warn ios/capacitor-server-url-shipped