Saltare al contenuto

Esegui controlli di prescan

Prima di Capgo Cloud Build carica il tuo progetto, il CLI esegue una prescan che individua problemi di credenziali, progetto e configurazione di archiviazione localmente.

Esegue anche in modo autonomo:

Finestra del terminale
npx @capgo/cli@latest build prescan <appId> --platform ios

Ci sono 80 controlli oggi. È preferibile ignorare gli ID dei controlli individuali piuttosto che disabilitare tutta la scansione.

Finestra del terminale
# 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-separated
npx @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-loads

Alias standalone abilitati build prescan:

Finestra del terminale
npx @capgo/cli@latest build prescan <appId> --platform ios \
--skip ios/capacitor-server-url-shipped \
--warn ios/capacitor-server-cleartext

I codici di controllo sconosciuti falliscono rapidamente con un chiaro errore.

BandieraEffetto
--no-prescanSaltare l'intero scan
--prescan-ignore-fatal (o --ignore-fatal su build prescan)Eseguire lo scan, stampare il report, mai bloccare
--fail-on-warningsConsiderare le avvertenze come fatali (CI)

--no-prescan e --prescan-ignore-fatal nascondere o bypassare tutti i controlli rimanenti. Utilizzare gli override per controllo al posto di questo quando si disaccorda solo con una regola.

Usa l'id esatto in --prescan-skip / --prescan-warn.

Applica gradualmente significa che la scoperta è informatica fino a 2026-08-14, poi può bloccare le compilazioni.

IdPiattaformeCosa controllaApplica gradualmente
shared/apikey-permissionios, androidLa chiave API può richiedere costruzioni native
shared/app-existsios, androidL'ID dell'app esiste e è visibile alla chiave API
shared/credentials-savedios, androidI credenziali iOS/Android richiesti sono salvati localmente
shared/cap-sync-staleios, androidGli asset web sono stati costruiti e i plugin Capacitor sono sincronizzati
shared/node-linker-layoutios, androidLa struttura di node_modules funziona con le percorsi native Capacitor
shared/bundle-id-consistencyios, androidL'ID dell'app Capacitor corrisponde all'ID pacchetto nativo / applicationId
IdPiattaformeCosa controllaApplicazione graduale
ios/p12-opensiosCertificato .p12 iOS apre con la password fornita
ios/p12-expiryCertificato di firma iOS non è scadutoProfilo di provisioning iOS non è scaduto
ios/profile-expiryiosiOS
ios/profile-bundle-matchiOSIl bundle id del profilo di provisioning corrisponde all'app
ios/profile-type-vs-modeiosIl tipo di profilo corrisponde al modello app_store / ad_hoc
ios/cert-profile-pairingiosLa certificazione è incorporata nel profilo di provisioning
ios/targets-coverediosTutti i target iOS hanno un profilo di provisioning
ios/infoplist-sanityiosInfo.plist contiene chiavi versione / identità richieste
ios/asc-key-validiosI campi chiave di App Store Connect API sembrano validi
ios/asc-key-accessiosL'ASC API chiave può accedere all'applicazione (remota)
ios/plist-bundle-id-formatiosIl formato di CFBundleIdentifier è valido
ios/plist-version-short-formatiosIl formato di CFBundleShortVersionString è valido
ios/plist-version-build-formatiosIl formato di CFBundleVersion è valido
ios/plist-encryption-complianceiosÈ dichiarato ITSAppUsesNonExemptEncryption
ios/plist-ats-arbitrary-loadsiosNSAllowsArbitraryLoads non è abilitato per la produzione
ios/plist-launch-storyboardiosLo schermo di lancio è dichiarato
ios/plist-orientations-multitaskingiosImpostazioni orientamento/multitasking sono coerenti
ios/plist-orientations-presentiosUISupportedInterfaceOrientations è dichiarato
ios/plist-display-nameiosIl nome di visualizzazione è impostato
ios/plist-background-modes-sanityiosI valori di UIBackgroundModes sembrano validi
ios/xcode-deployment-target-capacitoriosL'obiettivo di distribuzione iOS soddisfa i requisiti di Capacitor
ios/xcode-signing-teamiosIl team di firma è impostatoSi
ios/xcode-bundle-id-mismatch-across-configsiosL'ID del bundle è coerente tra le configurazioni di XcodeSi
ios/xcode-enable-bitcode-leftoveriosÈ rimossa la residua di ENABLE_BITCODESi
ios/xcode-swift-version-sanityiosLa configurazione della versione Swift sembra sanaSi
ios/xcode-no-app-targetiosProgetto Xcode ha un obiettivo di applicazione
ios/xcode-multiple-app-targetsiosIl targeting di applicazioni multiple viene gestito intenzionalmente
ios/entitlements-vs-profile-capabilityiosI diritti di entitlement corrispondono alle capacità del profilo
ios/entitlements-aps-environment-vs-modeiosaps-environment corrisponde al modello di distribuzione
ios/entitlements-associated-domains-formatiosIl formato dei domini associati è valido
ios/entitlements-app-groups-formatiosLa formattazione di App Groups è valida
ios/capacitor-server-url-shippediosserver.url non lascia il / endpoint di caricamento remoto live per le costruzioni di store
ios/capacitor-server-cleartextiosserver.cleartext non è abilitato per la produzione
ios/capacitor-allow-navigation-wildcardiosserver.allowNavigation non è un wildcard a strisce per tutti
ios/pods-not-installediosSono presenti CocoaPods Pods / workspace quando si utilizzano Pods
ios/pods-lock-missingiosPodfile.lock blocca le versioni dei pod
ios/pods-capacitor-missingiosPodfile gestisce Capacitor
ios/spm-package-resolved-missingiosSPM Package.resolved è presente
ios/spm-capacitor-dependency-missingiosPackage.swift dichiara Capacitor
ios/appicon-empty-or-placeholderiosL'app iconset esiste e non è vuota
ios/appicon-referenced-file-missingiosI file icon di Contents.json esistono sul disco
ios/appicon-marketing-missingiosL'icona di marketing 1024×1024 esiste
ios/spm-deployment-target-consistencyiosIl target di distribuzione SPM è coerente
IdPiattaformeCosa controllaApplica gradualmente
android/keystore-opensandroidLa chiave di Android apre con le password fornite
android/keystore-expirylingua AndroidLa certificazione di firma Android non è scaduta
android/cordova-vars-presentlingua AndroidIl file cordova.variables.gradle è presente dopo la sincronizzazione di Capgo
android/gradle-props-heuristicslingua AndroidLe heuristichè per i problemi di build comuni nel file gradle.properties
android/play-sa-jsonlingua AndroidLa chiave JSON del servizio Play è presente quando configurata
android/flavor-existslingua AndroidIl flavor del prodotto richiesto esiste
android/agp8-package-attrlingua AndroidL'attributo package del manifesto è stato rimosso per AGP 8+
android/manifest-well-formedandroidIl file AndroidManifest.xml viene elaborato
android/manifest-tag-typoandroidTipi di tag manifest comuni
android/manifest-namespace-uriandroidL'URI di namespace xmlns:android è corretto
android/manifest-missing-prefixandroidLe proprietà Android utilizzano il prefisso android:
android/manifest-exported-missingandroidLa proprietà android:exported è impostata dove richiesto
android/manifest-multiple-uses-sdkandroidSolo un elemento uses-sdk è utilizzato
android/manifest-duplicate-componentAndroidNo componenti duplicati
android/manifest-unique-permissionAndroidI permessi personalizzati sono unici
android/manifest-hardcoded-debuggableAndroiddebuggable=true non viene spedito
android/manifest-mock-locationAndroidACCESS_MOCK_LOCATION non viene spedito
android/manifest-exported-unprotectedAndroidI componenti esportati sono protetti
android/manifest-query-all-packagesAndroidGiustificazione di QUERY_ALL_PACKAGES
android/manifest-deeplink-validandroidI link di intent-filters di Deeplink sembrano validi
android/applicationid-presentandroidL'ID dell'applicazione è dichiarato in app/build.gradle
android/capacitor-build-gradle-appliedandroidcapacitor.build.gradle esiste quando viene applicato
android/gradle-wrapper-presentandroidSono presenti i file del wrapper Gradle
android/flavor-dimensionsandroidLe dimensioni dei gusti sono dichiarate quando esistono gusti
android/google-services-fileandroidgoogle-services.json è presente quando viene applicato il plugin
android/local-properties-committedAndroidIl file local.properties non è stato commesso con le informazioni segrete.
android/sdk-floorsAndroidI min/compile/target SDK piani sembrano validi.
android/target-sdk-playAndroidI requisiti di targetSdk sono soddisfatti da Play.
android/min-sdk-capacitorAndroidI requisiti di minSdk sono soddisfatti da Capacitor.
android/version-fieldsAndroidI valori di versionCode e versionName sono presenti.
android/play-sa-accessAndroidL'account dei servizi di Play può accedere all'applicazione (remota).

Esempio: shell remoto Next.js / server.url shell

Esempio: shell remoto Next.js / server.url shell

Inviare un shell nativo che carica una produzione server.url è un pattern Capacitor supportato. I flag di pre-scans ios/capacitor-server-url-shipped perché spesso è un residuo di live-reload.

Riconosciarlo senza disabilitare altre verifiche:

Fermata del terminale
npx @capgo/cli@latest build request <appId> --platform ios \
--prescan-skip ios/capacitor-server-url-shipped

O mantieni la visibilità come avviso:

Fermata del terminale
npx @capgo/cli@latest build request <appId> --platform ios \
--prescan-warn ios/capacitor-server-url-shipped