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é-scanning qui détecte localement les problèmes de credenciaux, de projet et de configuration de magasin.
Cela s'exécute également en mode indépendant :
npx @capgo/cli@latest build prescan <appId> --platform iosIl y a 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.
Ignore des vérifications spécifiques
Section intitulée « Ignore 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-loadsPseudonymes autonomes 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 fatals (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.
Appliquez progressivement signifie que les résultats sont uniquement des informations jusqu'à ce que 2026-08-14, puis il peut bloquer les builds.
| Identifiant | Plateformes | Cela vérifie | Appliquez progressivement |
|---|---|---|---|
shared/apikey-permission | ios, android | API peut demander des builds natifs | — |
shared/app-exists | ios, android | L'identifiant d'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'identifiant d'application Capacitor correspond à l'identifiant de bundle natif / applicationId | — |
| Id | Plateformes | Ce qu'il vérifie | Application de l'exécution progressive |
|---|---|---|---|
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 la mise en forme de 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 clé App Store Connect API semblent valides | — |
ios/asc-key-access | iOS | L'ASC API 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 | L'application utilise-t-elle une encryption non exemptée ? | 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 de l'UI 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 répond aux 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 dans les configurations Xcode | Oui |
ios/xcode-enable-bitcode-leftover | iOS | ENABLE_BITCODE est supprimé | 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 | Les cibles d'applications multiples sont traité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 de Domaines Associés est valide | Oui |
ios/entitlements-app-groups-format | ios | Le format d'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 | Une icône de marketing de 1024×1024 existe | Oui |
ios/spm-deployment-target-consistency | iOS | La cible de déploiement SPM est cohérente | Oui |
Android
Sous-titré « Android »| ID | Plateformes | Ce qu'il vérifie | Application de l'application |
|---|---|---|---|
android/keystore-opens | android | Le coffre-fort 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 | Le fichier cordova.variables.gradle est présent après la synchronisation cap | — |
android/gradle-props-heuristics | android | Les heuristiques de gradle.properties pour les ruptures de build courantes | — |
android/play-sa-json | android | Le fichier JSON de compte service Play est présent lorsqu'il est configuré | — |
android/flavor-exists | android | Le goût produit demandé existe | — |
android/agp8-package-attr | android | 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 erreurs 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 | L'attribut android:exported est défini où cela est requis | — |
android/manifest-multiple-uses-sdk | android | Seulement un élément sdk utilisé | — |
android/manifest-duplicate-component | android | Aucun composant ne doit être dupliqué | — |
android/manifest-unique-permission | android | Les permissions personnalisées sont uniques | — |
android/manifest-hardcoded-debuggable | android | debuggable=true non expédié | — |
android/manifest-mock-location | android | ACCESS_MOCK_LOCATION non 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 cibleSdk répond aux exigences de Play | — |
android/min-sdk-capacitor | android | la version minSdk 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 : Next.js distant / shell server.url
Section intitulée « Exemple : Next.js distant / shell 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.
Reconnaître cela 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