Costruisci controlli prescan
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Prima che Capgo Cloud Build carichi il tuo progetto, il CLI esegue un prescan rileva problemi di credenziali, progetto e configurazione di archiviazione localmente.
Esegue anche in modo autonomo:
npx @capgo/cli@latest build prescan <appId> --platform iosCi sono 80 verifiche oggi. Preferire ignorare gli ID delle singole verifiche piuttosto che disabilitare tutta la scansione.
Ignora specifiche verifiche
Sezione intitolata “Ignora specifiche verifiche”# 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 autonomi su build prescan:
npx @capgo/cli@latest build prescan <appId> --platform ios \ --skip ios/capacitor-server-url-shipped \ --warn ios/capacitor-server-cleartextI check ids sconosciuti falliscono rapidamente con un chiaro errore.
Global escape (utilizza con parsimonia)
Global escapes (utilizza con parsimonia)| Flag | Flag |
|---|---|
--no-prescan | Evita lo scansionamento completo |
--prescan-ignore-fatal (or --ignore-fatal o build prescan) | Esegui lo scan, stampa il report, non blocca |
--fail-on-warnings | Considera le avvertenze come fatali (CI) |
--no-prescan e --prescan-ignore-fatal nascondere o saltare tutti le verifiche rimanenti. Utilizza override per verifica quando disseni solo con una regola.
Catalogo di controlli
Sezione intitolata “Catalogo di controlli”Utilizza l'id esatto in --prescan-skip / --prescan-warn.
Imposta progressiva significa che la scoperta è informativa fino a quando 2026-08-14poi può bloccare le costruzioni.
Condiviso
Sezione intitolata “Condiviso”| ID | Piattaforme | Cosa controlla | Applicazione dell'ordinanza graduale |
|---|---|---|---|
shared/apikey-permission | iOS, Android | La chiave API può richiedere costruzioni native | — |
shared/app-exists | iOS, Android | Esiste un ID dell'applicazione e è visibile alla chiave API | — |
shared/credentials-saved | iOS, Android | I credenziali iOS/Android richiesti sono salvati localmente | — |
shared/cap-sync-stale | iOS, Android | Gli asset web sono costruiti e i plugin Capacitor sincronizzati | — |
shared/node-linker-layout | iOS, Android | node_modules layout funziona con Capacitor percorsi nativi | — |
shared/bundle-id-consistency | iOS, Android | Capacitor appId corrisponde all'ID pacchetto nativo / applicationId | — |
| Id | Piattaforme | Cosa controlla | Applicazione graduale |
|---|---|---|---|
ios/p12-opens | iOS | Apri .p12 iOS con la password fornita | — |
ios/p12-expiry | iOS | Il certificato di firma iOS non è scaduto | — |
ios/profile-expiry | iOS | Il profilo di provisioning non è scaduto | — |
ios/profile-bundle-match | iOS | L'ID del bundle del profilo di provisioning corrisponde all'app | — |
ios/profile-type-vs-mode | iOS | Il tipo di profilo corrisponde al modello app_store / ad_hoc | — |
ios/cert-profile-pairing | iOS | Il certificato è incorporato nel profilo di provisioning | — |
ios/targets-covered | iOS | Tutti i target iOS hanno un profilo di provisioning | — |
ios/infoplist-sanity | iOS | Info.plist contiene chiavi di versione/identità richieste | — |
ios/asc-key-valid | iOS | Il campo chiave API di App Store Connect sembra valido | — |
ios/asc-key-access | iOS | La chiave ASC API può accedere all'app (remota) | — |
ios/plist-bundle-id-format | iOS | La formattazione di CFBundleIdentifier è valida | Sì |
ios/plist-version-short-format | iOS | CFBundleShortVersionString ha una formattazione valida | Sì |
ios/plist-version-build-format | iOS | Il formato di CFBundleVersion è valido | Sì |
ios/plist-encryption-compliance | iOS | ITSAppUsesNonExemptEncryption è dichiarato | Sì |
ios/plist-ats-arbitrary-loads | iOS | NSAllowsArbitraryLoads non è abilitato per la produzione | Sì |
ios/plist-launch-storyboard | iOS | La schermata di lancio è dichiarata | Sì |
ios/plist-orientations-multitasking | iOS | Impostazioni di orientamento / multitasking sono coerenti | Sì |
ios/plist-orientations-present | iOS | UISupportedInterfaceOrientations è dichiarato | Sì |
ios/plist-display-name | iOS | Il nome di visualizzazione è impostato | Sì |
ios/plist-background-modes-sanity | iOS | I valori di UIBackgroundModes sembrano validi | Sì |
ios/xcode-deployment-target-capacitor | iOS | iOS deployment target soddisfa i requisiti di Capacitor. | Sì |
ios/xcode-signing-team | iOS | La squadra di firma è impostata | Sì |
ios/xcode-bundle-id-mismatch-across-configs | iOS | L'ID del bundle è coerente tra le configurazioni di Xcode | Sì |
ios/xcode-enable-bitcode-leftover | iOS | L'eredità di ENABLE_BITCODE è eliminata | Sì |
ios/xcode-swift-version-sanity | iOS | La configurazione della versione Swift sembra sana | Sì |
ios/xcode-no-app-target | iOS | L'applicazione Xcode ha un obiettivo di applicazione | Sì |
ios/xcode-multiple-app-targets | iOS | Gli obiettivi di applicazione multipli sono gestiti intenzionalmente | Sì |
ios/entitlements-vs-profile-capability | iOS | Le entità corrispondono alle capacità del profilo | Sì |
ios/entitlements-aps-environment-vs-mode | iOS | ambiente APS corrisponde al modello di distribuzione | Sì |
ios/entitlements-associated-domains-format | iOS | Formato dei domini associati è valido | Sì |
ios/entitlements-app-groups-format | iOS | Formato dei gruppi di applicazione è valido | Sì |
ios/capacitor-server-url-shipped | iOS | server.url non viene lasciato come endpoint di caricamento live o shell remoto per le costruzioni di store | Sì |
ios/capacitor-server-cleartext | iOS | server.cleartext non è abilitato per la produzione | Sì |
ios/capacitor-allow-navigation-wildcard | iOS | server.allowNavigation non è un wildcard generale | Sì |
ios/pods-not-installed | iOS | CocoaPods Pods / workspace sono presenti quando si utilizzano Pods | Sì |
ios/pods-lock-missing | iOS | Podfile.lock blocca le versioni del pod | Sì |
ios/pods-capacitor-missing | iOS | Il Podfile collega Capacitor | Sì |
ios/spm-package-resolved-missing | iOS | Il Package.resolved di SPM è presente | Sì |
ios/spm-capacitor-dependency-missing | iOS | Il Package.swift dichiara Capacitor | Sì |
ios/appicon-empty-or-placeholder | iOS | L'app iconset esiste e non è vuoto | Sì |
ios/appicon-referenced-file-missing | iOS | Esistono file icon Contents.json sul disco | Sì |
ios/appicon-marketing-missing | iOS | Esiste un'icona di marketing 1024×1024 | Sì |
ios/spm-deployment-target-consistency | iOS | La destinazione di distribuzione SPM è coerente | Sì |
Android
Sezione intitolata “Android”| Id | Piattaforme | Cosa controlla | Applicazione graduale |
|---|---|---|---|
android/keystore-opens | android | Verifica la presenza di un certificato Android non scaduto | — |
android/keystore-expiry | android | Certificato di firma Android non è scaduto | — |
android/cordova-vars-present | android | Il certificato di firma Android non è scaduto | — |
android/gradle-props-heuristics | android | Proprietà di gradle.properties per problemi di build comuni | — |
android/play-sa-json | android | Il file JSON del servizio account è presente quando configurato | — |
android/flavor-exists | android | Il sapore del prodotto richiesto esiste | — |
android/agp8-package-attr | android | Il sapore del prodotto richiesto esiste | — |
android/manifest-well-formed | android | AndroidManifest.xml analizza | — |
android/manifest-tag-typo | android | Il file AndroidManifest.xml si esegue correttamente | — |
android/manifest-namespace-uri | android | Gli errori di ortografia dei tag del manifesto comuni | — |
android/manifest-missing-prefix | android | Attributi Android utilizzano il prefisso android: | — |
android/manifest-exported-missing | android | android:esportato è impostato dove richiesto | — |
android/manifest-multiple-uses-sdk | android | Solo un elemento utilizza-sdk | — |
android/manifest-duplicate-component | android | Solo un elemento uses-__CAPGO_KEEP_0__ | — |
android/manifest-unique-permission | android | Nessun componente duplicato | — |
android/manifest-hardcoded-debuggable | android | I permessi personalizzati sono unici | — |
android/manifest-mock-location | android | ACCESS_MOCK_LOCATION non spedito | — |
android/manifest-exported-unprotected | android | La posizione di mock non viene spedita | — |
android/manifest-query-all-packages | android | Componenti esportati sono protetti | — |
android/manifest-deeplink-valid | android | Intent-filters dei deeplink sembrano validi | — |
android/applicationid-present | android | I filtri di intent per il deeplink sembrano validi | — |
android/capacitor-build-gradle-applied | android | capacitor.build.gradle esiste quando applicato | — |
android/gradle-wrapper-present | android | Sono presenti file wrapper Gradle | — |
android/flavor-dimensions | android | Le dimensioni dei gusti sono dichiarate quando esistono gusti | — |
android/google-services-file | android | google-services.json presente quando il plugin viene applicato | — |
android/local-properties-committed | android | local.properties non è stato commesso con le informazioni riservate | — |
android/sdk-floors | android | min/compile/target SDK piani sembrano validi | — |
android/target-sdk-play | android | targetSdk soddisfa i requisiti di Play | — |
android/min-sdk-capacitor | android | minSdk soddisfa Capacitor requisiti | — |
android/version-fields | android | la versione del sistema operativo | — |
android/play-sa-access | android | Conto del servizio può accedere all'app (remota) | — |
Esempio: shell remoto Next.js / server.url
Esempio: shell remoto Next.js / server.urlEsempio: shell remoto Next.js / server.url server.url E' un pattern Capacitor supportato. Bandiere di prescan ios/capacitor-server-url-shipped è un modello di prescan supportato. I flag di prescan
perché spesso è un residuo di live-reload.
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-skip ios/capacitor-server-url-shippedO mantenere la visibilità come avviso:
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-warn ios/capacitor-server-url-shipped