Verifica costruzione prescan
Copia un prompt di configurazione con le istruzioni di installazione e la guida markdown completa per questo plugin.
Prima che Capgo Cloud Build carichi il tuo progetto, il CLI esegue un prescan che individua problemi di credenziali, progetto e configurazione del magazzino localmente.
Eseguibile in modo autonomo:
npx @capgo/cli@latest build prescan <appId> --platform iosSono presenti 80 controlli oggi. Preferisci ignorare gli ID dei controlli individuali piuttosto che disabilitare tutta la scansione.
Ignota specifiche verifiche
Sottosezione intitolata “Ignota 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 standalone abilitati build prescan:
npx @capgo/cli@latest build prescan <appId> --platform ios \ --skip ios/capacitor-server-url-shipped \ --warn ios/capacitor-server-cleartextIl controllo sconosciuto fallisce rapidamente con un errore chiaro.
così ogni altro controllo protegge ancora la tua build.
Sezione intitolata “Evasioni globali (utilizzarle con parsimonia)”| Bandiera | Effetto |
|---|---|
--no-prescan | Saltare lo scansionamento intero |
--prescan-ignore-fatal o --ignore-fatal su build prescan) | Eseguisci lo scansionamento, stampa il rapporto, non blocca mai |
--fail-on-warnings | Considera le avvertenze come fatali (CI) |
--no-prescan e --prescan-ignore-fatal nascondi o bypassa tutti gli altri controlli. Utilizza le sovrapposizioni per-check al posto di questo quando disaccordi solo con una regola.
Esegui il catalogo
Sezione intitolata “Esegui il catalogo”Usa l'id esatto in --prescan-skip / --prescan-warn.
Applica gradualmente significa che la scoperta è di sola informazione fino a 2026-08-14quindi può bloccare le costruzioni.
Condiviso
Sezione intitolata “Condiviso”| Id | Piattaforme | Cosa controlla | Applica gradualmente |
|---|---|---|---|
shared/apikey-permission | iOS, Android | API può richiedere costruzioni native | — |
shared/app-exists | iOS, Android | L'ID dell'app esiste e è visibile per la chiave API | — |
shared/credentials-saved | iOS, Android | I credenziali richiesti per iOS/Android sono salvate localmente | — |
shared/cap-sync-stale | iOS, Android | Gli asset web sono stati costruiti e i plugin Capacitor sono sincronizzati | — |
shared/node-linker-layout | iOS, Android | La struttura dei moduli node funziona con le vie native Capacitor | — |
shared/bundle-id-consistency | iOS, Android | L'ID dell'app Capacitor corrisponde all'ID del pacchetto nativo / applicationId | — |
| Id | Piattaforme | Cosa controlla | Applicazione graduale |
|---|---|---|---|
ios/p12-opens | ios | Il certificato di firma iOS .p12 si apre con la password fornita | — |
ios/p12-expiry | ios | Il certificato di firma iOS non è scaduto | — |
ios/profile-expiry | ios | Il profilo di provisioning iOS non è scaduto | — |
ios/profile-bundle-match | iOS | Il bundle ID 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 | Il file Info.plist contiene le chiavi di versione e identità richieste | — |
ios/asc-key-valid | iOS | I campi chiave di App Store Connect API sembrano validi | — |
ios/asc-key-access | iOS | L'ASC API chiave può accedere all'applicazione (remota) | — |
ios/plist-bundle-id-format | iOS | Il formato di CFBundleIdentifier è valido | Sì |
ios/plist-version-short-format | iOS | Il formato di CFBundleShortVersionString è valido | 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 | Le impostazioni dell'orientamento / multitasking sono coerenti | Sì |
ios/plist-orientations-present | ios | UISupportedInterfaceOrientazioni è dichiarata | 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 | Il target di distribuzione iOS soddisfa i requisiti di Capacitor | Sì |
ios/xcode-signing-team | ios | Il team di firma è impostato | 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 | Il residuo di ENABLE_BITCODE è eliminato | Sì |
ios/xcode-swift-version-sanity | ios | La configurazione della versione Swift sembra sensata | Sì |
ios/xcode-no-app-target | ios | Il progetto Xcode ha un obiettivo di applicazione | Sì |
ios/xcode-multiple-app-targets | ios | Gli obiettivi di applicazione multipli vengono gestiti intenzionalmente | Sì |
ios/entitlements-vs-profile-capability | ios | Le autorizzazioni corrispondono alle capacità del profilo | Sì |
ios/entitlements-aps-environment-vs-mode | ios | aps-environment corrisponde al modello di distribuzione | Sì |
ios/entitlements-associated-domains-format | ios | Il formato dei domini associati è valido | Sì |
ios/entitlements-app-groups-format | ios | Il formato dei gruppi di applicazioni è valido | Sì |
ios/capacitor-server-url-shipped | ios | server.url non viene lasciato come endpoint di caricamento dinamico / 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 divieto generale | Sì |
ios/pods-not-installed | iOS | I CocoaPods Pods / workspace sono presenti quando si utilizzano Pods | Sì |
ios/pods-lock-missing | iOS | Il file Podfile.lock blocca le versioni dei pod | Sì |
ios/pods-capacitor-missing | iOS | Il file Podfile gestisce Capacitor | Sì |
ios/spm-package-resolved-missing | iOS | Il pacchetto SPM Package.resolved è presente | Sì |
ios/spm-capacitor-dependency-missing | iOS | Il file Package.swift dichiara Capacitor | Sì |
ios/appicon-empty-or-placeholder | iOS | L'AppIcon.appiconset esiste e non è vuoto | Sì |
ios/appicon-referenced-file-missing | iOS | I file icon di Contents.json esistono sul disco | Sì |
ios/appicon-marketing-missing | iOS | Icona di marketing 1024×1024 esiste | Sì |
ios/spm-deployment-target-consistency | iOS | Il target di distribuzione SPM è coerente | Sì |
Android
Sezione intitolata “Android”| ID | Piattaforme | Cosa controlla | Esecuzione graduale |
|---|---|---|---|
android/keystore-opens | android | Il keystore Android si apre con le password fornite | — |
android/keystore-expiry | __CAPGO_KEEP_0__ | Il certificato di firma Android non è scaduto | — |
android/cordova-vars-present | __CAPGO_KEEP_0__ | Il file cordova.variables.gradle è presente dopo la sincronizzazione con cap | — |
android/gradle-props-heuristics | __CAPGO_KEEP_0__ | Le heuristici per le proprietà gradle per i comuni errori di build | — |
android/play-sa-json | __CAPGO_KEEP_0__ | Il file JSON del servizio Play è presente quando configurato | — |
android/flavor-exists | __CAPGO_KEEP_0__ | Il flavor del prodotto richiesto esiste | — |
android/agp8-package-attr | __CAPGO_KEEP_0__ | Manifesto pacchetto= attributo eliminato per AGP 8+ | — |
android/manifest-well-formed | Android | AndroidManifest.xml analizza | — |
android/manifest-tag-typo | Android | Tipi di tag manifesto comuni | — |
android/manifest-namespace-uri | Android | URI dello spazio dei nomi android è corretto | — |
android/manifest-missing-prefix | Android | Attributi Android utilizzano la prefisso android: | — |
android/manifest-exported-missing | Android | android:exported è impostato dove richiesto | — |
android/manifest-multiple-uses-sdk | Android | Solo un elemento sdk utilizzato | — |
android/manifest-duplicate-component | android | Nessun componente duplicato | — |
android/manifest-unique-permission | android | I permessi personalizzati sono unici | — |
android/manifest-hardcoded-debuggable | android | debuggable=true non distribuito | — |
android/manifest-mock-location | android | ACCESS_MOCK_LOCATION non distribuito | — |
android/manifest-exported-unprotected | android | I componenti esportati sono protetti | — |
android/manifest-query-all-packages | android | QUERY_ALL_PACKAGES giustificazione | — |
android/manifest-deeplink-valid | android | Il filtro di deeplink sembra valido | — |
android/applicationid-present | android | L'ID dell'applicazione è dichiarato in app/build.gradle | — |
android/capacitor-build-gradle-applied | android | capacitor.build.gradle esiste quando viene applicato | — |
android/gradle-wrapper-present | android | Sono presenti i file del wrapper Gradle | — |
android/flavor-dimensions | android | Il numero di dimensioni di sapore è dichiarato quando esistono sapore | — |
android/google-services-file | android | google-services.json presente quando il plugin viene applicato | — |
android/local-properties-committed | Android | local.properties non è committato con le chiavi segrete | — |
android/sdk-floors | Android | min/compile/target SDK piani sembrano validi | — |
android/target-sdk-play | Android | targetSdk soddisfa le richieste di Play | — |
android/min-sdk-capacitor | Android | minSdk soddisfa Capacitor richieste | — |
android/version-fields | Android | versionCode / versionName sono presenti | — |
android/play-sa-access | Android | L'account del servizio Play può accedere all'applicazione (remota) | — |
Esempio: shell Next.js remoto / server.url
Sezione intitolata “Esempio: shell Next.js remoto / server.url”L'invio di una shell nativa che carica una produzione server.url è un pattern di supporto Capacitor. Le flag di prescan ios/capacitor-server-url-shipped perché spesso è un residuo di live-reload lasciato.
Riconoscerlo senza disabilitare altre verifiche:
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