Vérifiez les contrôles de prescan
Copiez une invite de configuration avec les étapes d'installation et le guide Markdown complet pour ce plug-in.
Avant que Capgo Cloud Build télécharge votre projet, le CLI exécute un pré-scanner qui détecte localement les problèmes de mot de passe, de projet et de configuration de magasin.
Il s'exécute également en mode indépendant :
npx @capgo/cli@latest build prescan <appId> --platform iosIl existe 80 vérifications aujourd'hui. Préférez ignorer les identifiants de vérification individuels plutôt que de désactiver la vérification complète.
Ignorer des vérifications spécifiques
Sous-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-loadsAlias 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)
Titre de la section « Échappatoires 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 des erreurs fatales (CI) |
--no-prescan et --prescan-ignore-fatal cacher ou contourner tous les contrôles restants. Utilisez les surcharges par contrôl’au lieu de cela lorsque vous n'êtes d'accord qu'avec une seule règle.
Vérifiez le catalogue
Titre de la section « Vérifiez le catalogue »Utilisez l'identifiant exact dans --prescan-skip / --prescan-warn.
Appliquer progressivement signifie que la découverte est uniquement informative jusqu'à ce que 2026-08-14puis elle peut bloquer les builds.
| Identifiant | Plateformes | Ce qu'il vérifie | Appliquer progressivement |
|---|---|---|---|
shared/apikey-permission | iOS, Android | 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 structure 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 l'application natif / applicationId | — |
| Id | Plateformes | Ce qu'il vérifie | Appliquer progressivement |
|---|---|---|---|
ios/p12-opens | ios | Le certificat de signature iOS .p12 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 | L’ID de l'ensemble de la 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é dans le 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é API d'App Store Connect ressemblent à des champs valides | — |
ios/asc-key-access | ios | L'ASC API clé peut accéder à l'application (distante) | — |
ios/plist-bundle-id-format | ios | Le format de CFBundleIdentifier est valide | Oui |
ios/plist-version-short-format | ios | Le format de CFBundleShortVersionString est valide | Oui |
ios/plist-version-build-format | ios | Le format de CFBundleVersion est valide | Oui |
ios/plist-encryption-compliance | ios | Le chiffrement non exempt d'impôt 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 et de multitâche sont cohérents | Oui |
ios/plist-orientations-present | ios | Les orientations d'interface utilisateur prises en charge sont déclarées | 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 remplit les exigences de Capacitor | Oui |
ios/xcode-signing-team | ios | L'équipe de signature est configurée | Oui |
ios/xcode-bundle-id-mismatch-across-configs | ios | L'identifiant de l'application est cohérent entre les configurations Xcode | Oui |
ios/xcode-enable-bitcode-leftover | ios | La propriété ENABLE_BITCODE est supprimé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 une cible d'application | Oui |
ios/xcode-multiple-app-targets | iOS | Plusieurs cibles d'application 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 | L'environnement APS correspond au mode de distribution | Oui |
ios/entitlements-associated-domains-format | iOS | Le format Associated Domains est valide | Oui |
ios/entitlements-app-groups-format | ios | Le format App Groups est valide | Oui |
ios/capacitor-server-url-shipped | ios | server.url n'est pas 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 tampon universel | Oui |
ios/pods-not-installed | iOS | Les CocoaPods Pods / espace de travail sont présents lors de l'utilisation de Pods | Oui |
ios/pods-lock-missing | iOS | Le Podfile.lock fixe les versions des pods | Oui |
ios/pods-capacitor-missing | iOS | Le Podfile relie Capacitor | Oui |
ios/spm-package-resolved-missing | iOS | Le package SPM Package.resolved 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'icône AppIcon.appiconset existe et n'est pas vide | Oui |
ios/appicon-referenced-file-missing | iOS | Les fichiers d'icône de Contents.json existent sur le disque | Oui |
ios/appicon-marketing-missing | iOS | Icone marketing de 1024×1024 existe | Oui |
ios/spm-deployment-target-consistency | iOS | La cible de déploiement SPM est cohérente | Oui |
| ID | Plateformes | Ce qu'il vérifie | Application de l'application |
|---|---|---|---|
android/keystore-opens | android | Clés de stockage Android s'ouvre avec les mots de passe fournis | — |
android/keystore-expiry | __CAPGO_KEEP_0__ | Le certificat de signature Android n'est pas expiré | — |
android/cordova-vars-present | __CAPGO_KEEP_0__ | cordova.variables.gradle est présent après la synchronisation de cap | — |
android/gradle-props-heuristics | __CAPGO_KEEP_0__ | Heuristiques de gradle.properties pour les ruptures de build courantes | — |
android/play-sa-json | __CAPGO_KEEP_0__ | Le fichier JSON de compte de service Play est présent lorsqu'il est configuré | — |
android/flavor-exists | __CAPGO_KEEP_0__ | Le goût de produit demandé existe | — |
android/agp8-package-attr | __CAPGO_KEEP_0__ | Le package de manifeste attribut supprimé pour AGP 8+ | — |
android/manifest-well-formed | android | Le fichier AndroidManifest.xml est analysé | — |
android/manifest-tag-typo | android | Les fautes de frappe de balises de manifeste courantes | — |
android/manifest-namespace-uri | android | L'URI de namespace android est correcte | — |
android/manifest-missing-prefix | android | Les attributs Android utilisent la préfixe android: | — |
android/manifest-exported-missing | android | android:exported est défini là où cela est requis | — |
android/manifest-multiple-uses-sdk | android | Seule une utilisation de l'élément sdk est autorisée | — |
android/manifest-duplicate-component | android | Aucun composant ne doit être répété | — |
android/manifest-unique-permission | android | Les permissions personnalisées sont uniques | — |
android/manifest-hardcoded-debuggable | android | debuggable=true n'est pas expédié | — |
android/manifest-mock-location | android | ACCESS_MOCK_LOCATION n'est pas expédié | — |
android/manifest-exported-unprotected | android | Les composants exportés sont protégés | — |
android/manifest-query-all-packages | android | QUERY_ALL_PACKAGES justification | — |
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 présent lors de l'application du plugin | — |
android/local-properties-committed | android | local.properties n'est pas commit avec des secrets | — |
android/sdk-floors | android | les étages min/compile/target SDK semblent valides | — |
android/target-sdk-play | android | la version SDK cible répond aux exigences de Play | — |
android/min-sdk-capacitor | android | la version SDK min répond aux exigences de Capacitor | — |
android/version-fields | android | versionCode / versionName sont présents | — |
android/play-sa-access | android | Le compte de service Play peut accéder à l'application (distante) | — |
Exemple : shell Next.js distant / server.url
Section intitulée « Exemple : shell Next.js distant / server.url »L'expédition d'une coquille native qui charge une production server.url est un modèle Capacitor pris en charge. Les drapeaux de prescan ios/capacitor-server-url-shipped car il s'agit souvent d'un résidu de rechargement en direct.
Le reconnaître sans désactiver d'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