Zum Inhalt springen

Build-Vorabprüfungen erstellen

Bevor Capgo Cloud Build Ihr Projekt hochlädt, läuft der CLI eine Vorabscannung die lokale Probleme bei den Anmeldeinformationen, dem Projekt und der Speicher-Konfiguration erkennt.

Sie läuft auch standalone:

Terminal-Fenster
npx @capgo/cli@latest build prescan <appId> --platform ios

Es gibt 80 Überprüfungen heute. Es ist besser, einzelne Überprüfungs-IDs zu ignorieren, als die ganze Scannung abzustellen.

Terminalfenster
# 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

Standalone-Aliase aktiviert build prescan:

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

Unbekannte Check-IDs scheitern schnell mit einer klaren Fehlermeldung.

Globale Escape-Sequenzen (verwenden Sie sie sparsam)

Abschnitt mit dem Titel “Globale Ausnahmen (seltene Verwendung)”
FlaggeWirkung
--no-prescanDen gesamten Scan überspringen
--prescan-ignore-fatal oder --ignore-fatal auf build prescan)Scan durchführen, Bericht drucken, nie blockieren
--fail-on-warningsWarnungen als fatal behandeln (CI)

--no-prescan und --prescan-ignore-fatal Verstecken oder umgehen alle Übrigen Prüfungen. Verwenden Sie stattdessen pro-Prüfungs-Überprüfungen, wenn Sie nur mit einer Regel nicht einverstanden sind.

Verwenden Sie den genauen ID --prescan-skip / --prescan-warn.

Schrittweise durchsetzen bezeichnet, dass der Befund nur informell ist, bis 2026-08-14dann kann es die Builds blockieren.

IDPlattformenWas es überprüftSchrittweise durchsetzen
shared/apikey-permissioniOS, AndroidAPI-Schlüssel kann native Builds anfordern
shared/app-existsiOS, AndroidApp-ID existiert und ist für den API-Schlüssel sichtbar
shared/credentials-savediOS, AndroidFür iOS/Android sind die erforderlichen Anmeldeinformationen lokal gespeichert
shared/cap-sync-staleiOS, AndroidWeb-Assets wurden erstellt und Capacitor-Plugins wurden synchronisiert
shared/node-linker-layoutiOS, AndroidDie node_modules-Struktur funktioniert mit Capacitor-Pfaden für native Apps
shared/bundle-id-consistencyiOS, AndroidCapacitor-App-ID entspricht dem native Bundle-ID / applicationId
IdPlattformenWas es überprüftSchrittweise durchsetzen
ios/p12-opensiosiOS-Zertifikat .p12 öffnet sich mit der bereitgestellten Passwort
ios/p12-expiryiosiOS-Zertifikat ist nicht abgelaufen
ios/profile-expiryiosProvisionierungsprofil ist nicht abgelaufen
ios/profile-bundle-matchiOSDie Provisionierungsprofil-UUID entspricht der App
ios/profile-type-vs-modeiOSDas Profiltyp entspricht der App-Store- / Ad-hoc-Modus
ios/cert-profile-pairingiOSDas Zertifikat ist im Provisionierungsprofil eingebettet
ios/targets-coverediOSAlle iOS-Ziele haben ein Provisionierungsprofil
ios/infoplist-sanityiOSInfo.plist enthält die erforderlichen Version / Identitäts-Schlüssel
ios/asc-key-validiOSApp Store Connect API Schlüsselfelder sehen valid aus
ios/asc-key-accessiOSASC API Schlüssel kann auf die App (remote) zugreifen
ios/plist-bundle-id-formatiOSDie CFBundleIdentifier-Formatierung ist gültigJa
ios/plist-version-short-formatiOSDie CFBundleShortVersionString-Formatierung ist gültigJa
ios/plist-version-build-formatiOSDie CFBundleVersion-Formatierung ist gültigJa
ios/plist-encryption-complianceiOSITSAppUsesNonExemptEncryption ist deklariertJa
ios/plist-ats-arbitrary-loadsiOSNSAllowsArbitraryLoads ist für die Produktion nicht aktiviertJa
ios/plist-launch-storyboardiOSDie Startbildschirm-Deklaration ist vorhandenJa
ios/plist-orientations-multitaskingiOSDie Orientierung- und Multitasking-Einstellungen sind konsistentJa
ios/plist-orientations-presentiOSUISupportedInterfaceOrientations ist deklariertJa
ios/plist-display-nameiOSDer Anzeigename ist gesetztJa
ios/plist-background-modes-sanityiOSDie UIBackgroundModes-Werte sehen gültig ausJa
ios/xcode-deployment-target-capacitoriOSDas iOS-Deploymentziel erfüllt die Anforderungen von CapacitorJa
ios/xcode-signing-teamiOSSignier-Team ist konfiguriertJa
ios/xcode-bundle-id-mismatch-across-configsiOSBundle-Id ist konsistent über Xcode-KonfigurationenJa
ios/xcode-enable-bitcode-leftoveriOSENABLE_BITCODE-Überbleibsel werden entferntJa
ios/xcode-swift-version-sanityiOSSwift-Version-Einstellung sieht vernünftig ausJa
ios/xcode-no-app-targetiOSXcode-Projekt hat eine AnwendungszielJa
ios/xcode-multiple-app-targetsiOSMehrere App-Ziele werden absichtlich behandeltJa
ios/entitlements-vs-profile-capabilityiOSZugriffsrechte passen zu ProfilfähigkeitenJa
ios/entitlements-aps-environment-vs-modeiOSaps-Umgebung passt sich zum Verteilungsmodus anJa
ios/entitlements-associated-domains-formatiOSDie Domains-Format ist gültigJa
ios/entitlements-app-groups-formatiOSDas App-Gruppen-Format ist gültigJa
ios/capacitor-server-url-shippediOSserver.url wird nicht als Live-Reload- oder Remote-Shell-Endpunkt für Store-Builds belassenJa
ios/capacitor-server-cleartextiOSserver.cleartext ist für die Produktion nicht aktiviertJa
ios/capacitor-allow-navigation-wildcardiOSserver.allowNavigation ist kein allgemeiner WildcardJa
ios/pods-not-installediOSCocoaPods Pods / workspace sind vorhanden, wenn Pods verwendet werdenJa
ios/pods-lock-missingiOSPodfile.lock piniert Pod-VersionenJa
ios/pods-capacitor-missingiOSPodfile verbindet CapacitorJa
ios/spm-package-resolved-missingiOSSPM Paket.resolved ist vorhandenJa
ios/spm-capacitor-dependency-missingiOSPackage.swift deklariert CapacitorJa
ios/appicon-empty-or-placeholderiOSAppIcon.appiconset existiert und ist nicht leerJa
ios/appicon-referenced-file-missingiOSInhalt.json-Icon-Dateien existieren auf der FestplatteJa
ios/appicon-marketing-missingiOS1024×1024 Marketing-Icon existiertJa
ios/spm-deployment-target-consistencyiOSSPM-Deployziel ist konsistentJa
IDPlattformenWas es überprüftSchrittweise durchsetzen
android/keystore-opensAndroidAndroid-Sicherheitsdatei öffnet sich mit den bereitgestellten Passwörtern
android/keystore-expiry__CAPGO_KEEP_0__Android-Zertifikat ist nicht abgelaufen
android/cordova-vars-present__CAPGO_KEEP_0__cordova.variables.gradle ist nach cap-Synchronisierung vorhanden
android/gradle-props-heuristics__CAPGO_KEEP_0__Gradle-Eigenschaftenheuristiken für häufige Buildfehler
android/play-sa-json__CAPGO_KEEP_0__Play-Dienstkonten-JSON ist vorhanden, wenn konfiguriert
android/flavor-exists__CAPGO_KEEP_0__Angeforderte Produktflavor existiert
android/agp8-package-attr__CAPGO_KEEP_0__Manifest Paket-attribute entfernt für AGP 8+
android/manifest-well-formedAndroidAndroidManifest.xml wird geparst
android/manifest-tag-typoAndroidGemeinsame Manifest-Tagschreibfehler
android/manifest-namespace-uriAndroidxmlns:android ist der richtige Namensraum-URI
android/manifest-missing-prefixAndroidAndroid-Attribute verwenden den Prefix android:
android/manifest-exported-missingAndroidandroid:exported wird an den erforderlichen Stellen gesetzt
android/manifest-multiple-uses-sdkAndroidNur ein sdk-Element wird verwendet
android/manifest-duplicate-componentandroidKeine duplizierten Komponenten
android/manifest-unique-permissionandroidBenutzerdefinierte Berechtigungen sind einzigartig
android/manifest-hardcoded-debuggableandroiddebuggable=true wird nicht verschickt
android/manifest-mock-locationandroidACCESS_MOCK_LOCATION wird nicht verschickt
android/manifest-exported-unprotectedandroidExportierte Komponenten sind geschützt
android/manifest-query-all-packagesandroidQUERY_ALL_PACKAGES Rechtfertigung
android/manifest-deeplink-validandroidDeeplink-Intent-Filter sehen gültig aus
android/applicationid-presentandroidDie Anwendung-ID wird in app/build.gradle deklariert
android/capacitor-build-gradle-appliedandroidcapacitor.build.gradle existiert, wenn angewendet
android/gradle-wrapper-presentandroidGradle-Wrapper-Dateien sind vorhanden
android/flavor-dimensionsandroidSchmackenabmessungen werden deklariert, wenn Schmacken existieren
android/google-services-fileandroidgoogle-services.json ist vorhanden, wenn Plugin angewendet wird
android/local-properties-committedAndroidlocal.properties enthält keine geheimen Daten, da diese nicht committet werden
android/sdk-floorsAndroidMindest-, Kompilier- und Zielversionen SDK sehen gültig aus
android/target-sdk-playAndroidZiel-SDK-Version erfüllt Play-Anforderungen
android/min-sdk-capacitorAndroidMindest-SDK-Version erfüllt Capacitor Anforderungen
android/version-fieldsAndroidversionCode / versionName sind vorhanden
android/play-sa-accessAndroidDienstkontoinhaber kann auf die App zugreifen (remote)

Die Lieferung eines nativen Shells, der eine Produktionsumgebung lädt server.url ist ein unterstütztes Capacitor-Muster. Prescan-Flags ios/capacitor-server-url-shipped weil es oft ein Live-Reload-Ableger ist.

Bekräftigen Sie es ohne andere Überprüfungen zu deaktivieren:

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

Oder behalten Sie die Sichtbarkeit als Warnung:

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