Vérifiez les contrôles de prescan
Copiez un prompt de configuration avec les étapes d'installation et le guide Markdown complet pour ce plugin.
Avant que Capgo Cloud Build télécharge votre projet, le CLI exécute un pré-scanner qui détecte les problèmes de credenciaux, de projet et de configuration de magasin localement.
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
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.
Appliquez progressivement signifie que la découverte est uniquement informative jusqu'à 2026-08-14, puis elle 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'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 d'application Capacitor correspond à l'ID de bundle natif / applicationId | — |
| Id | Plateformes | Ce qu'il vérifie | Application de l'enforcement progressif |
|---|---|---|---|
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 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 | Info.plist contient les clés de version / identité requises | — |
ios/asc-key-valid | iOS | Les champs de clé API d'App Store Connect ressemblent 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 | La déclaration ITSAppUsesNonExemptEncryption est effectué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 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 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'ensemble est cohérent entre 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 | Format de domaines associés est valide | Oui |
ios/entitlements-app-groups-format | ios | 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 saut de page général | 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 configure Capacitor | Oui |
ios/spm-package-resolved-missing | iOS | Le package SPM .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 | 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 |
| 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 | __CAPGO_KEEP_0__ | Le certificat de signature Android n'est pas expiré | — |
android/cordova-vars-present | __CAPGO_KEEP_0__ | Le fichier cordova.variables.gradle est présent après la synchronisation cap | — |
android/gradle-props-heuristics | __CAPGO_KEEP_0__ | Les heuristiques de gradle.properties pour les ruptures de build courantes | — |
android/play-sa-json | __CAPGO_KEEP_0__ | Le fichier JSON de compte service Play est présent lorsqu'il est configuré | — |
android/flavor-exists | __CAPGO_KEEP_0__ | Le goût produit demandé existe | — |
android/agp8-package-attr | __CAPGO_KEEP_0__ | Le package de manifeste attribute supprimé pour AGP 8+ | — |
android/manifest-well-formed | android | Le fichier AndroidManifest.xml est analysé | — |
android/manifest-tag-typo | android | Les typos de balises de manifeste courants | — |
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 là où cela est requis | — |
android/manifest-multiple-uses-sdk | android | Seulement un élément sdk utilisé | — |
android/manifest-duplicate-component | android | Pas de composants dupliqués | — |
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 deeplinks ont des filtres d'intent 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 | targetSdk répond aux exigences de Play | — |
android/min-sdk-capacitor | android | 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