Build-Vorabprüfungen erstellen
Eine Setup-Vorlage mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin kopieren.
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:
npx @capgo/cli@latest build prescan <appId> --platform iosEs gibt 80 Überprüfungen heute. Es ist besser, einzelne Überprüfungs-IDs zu ignorieren, als die ganze Scannung abzustellen.
Ignorieren Sie bestimmte Überprüfungen
Abschnitt mit dem Titel „Ignorieren Sie bestimmte Überprüfungen“# 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-loadsStandalone-Aliase aktiviert build prescan:
npx @capgo/cli@latest build prescan <appId> --platform ios \ --skip ios/capacitor-server-url-shipped \ --warn ios/capacitor-server-cleartextUnbekannte Check-IDs scheitern schnell mit einer klaren Fehlermeldung.
Globale Escape-Sequenzen (verwenden Sie sie sparsam)
Abschnitt mit dem Titel “Globale Ausnahmen (seltene Verwendung)”| Flagge | Wirkung |
|---|---|
--no-prescan | Den gesamten Scan überspringen |
--prescan-ignore-fatal oder --ignore-fatal auf build prescan) | Scan durchführen, Bericht drucken, nie blockieren |
--fail-on-warnings | Warnungen 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.
Katalog überprüfen
Abschnitt mit dem Titel „Katalog überprüfen“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.
Gemeinsam
Abschnitt mit dem Titel „Gemeinsam“| ID | Plattformen | Was es überprüft | Schrittweise durchsetzen |
|---|---|---|---|
shared/apikey-permission | iOS, Android | API-Schlüssel kann native Builds anfordern | — |
shared/app-exists | iOS, Android | App-ID existiert und ist für den API-Schlüssel sichtbar | — |
shared/credentials-saved | iOS, Android | Für iOS/Android sind die erforderlichen Anmeldeinformationen lokal gespeichert | — |
shared/cap-sync-stale | iOS, Android | Web-Assets wurden erstellt und Capacitor-Plugins wurden synchronisiert | — |
shared/node-linker-layout | iOS, Android | Die node_modules-Struktur funktioniert mit Capacitor-Pfaden für native Apps | — |
shared/bundle-id-consistency | iOS, Android | Capacitor-App-ID entspricht dem native Bundle-ID / applicationId | — |
| Id | Plattformen | Was es überprüft | Schrittweise durchsetzen |
|---|---|---|---|
ios/p12-opens | ios | iOS-Zertifikat .p12 öffnet sich mit der bereitgestellten Passwort | — |
ios/p12-expiry | ios | iOS-Zertifikat ist nicht abgelaufen | — |
ios/profile-expiry | ios | Provisionierungsprofil ist nicht abgelaufen | — |
ios/profile-bundle-match | iOS | Die Provisionierungsprofil-UUID entspricht der App | — |
ios/profile-type-vs-mode | iOS | Das Profiltyp entspricht der App-Store- / Ad-hoc-Modus | — |
ios/cert-profile-pairing | iOS | Das Zertifikat ist im Provisionierungsprofil eingebettet | — |
ios/targets-covered | iOS | Alle iOS-Ziele haben ein Provisionierungsprofil | — |
ios/infoplist-sanity | iOS | Info.plist enthält die erforderlichen Version / Identitäts-Schlüssel | — |
ios/asc-key-valid | iOS | App Store Connect API Schlüsselfelder sehen valid aus | — |
ios/asc-key-access | iOS | ASC API Schlüssel kann auf die App (remote) zugreifen | — |
ios/plist-bundle-id-format | iOS | Die CFBundleIdentifier-Formatierung ist gültig | Ja |
ios/plist-version-short-format | iOS | Die CFBundleShortVersionString-Formatierung ist gültig | Ja |
ios/plist-version-build-format | iOS | Die CFBundleVersion-Formatierung ist gültig | Ja |
ios/plist-encryption-compliance | iOS | ITSAppUsesNonExemptEncryption ist deklariert | Ja |
ios/plist-ats-arbitrary-loads | iOS | NSAllowsArbitraryLoads ist für die Produktion nicht aktiviert | Ja |
ios/plist-launch-storyboard | iOS | Die Startbildschirm-Deklaration ist vorhanden | Ja |
ios/plist-orientations-multitasking | iOS | Die Orientierung- und Multitasking-Einstellungen sind konsistent | Ja |
ios/plist-orientations-present | iOS | UISupportedInterfaceOrientations ist deklariert | Ja |
ios/plist-display-name | iOS | Der Anzeigename ist gesetzt | Ja |
ios/plist-background-modes-sanity | iOS | Die UIBackgroundModes-Werte sehen gültig aus | Ja |
ios/xcode-deployment-target-capacitor | iOS | Das iOS-Deploymentziel erfüllt die Anforderungen von Capacitor | Ja |
ios/xcode-signing-team | iOS | Signier-Team ist konfiguriert | Ja |
ios/xcode-bundle-id-mismatch-across-configs | iOS | Bundle-Id ist konsistent über Xcode-Konfigurationen | Ja |
ios/xcode-enable-bitcode-leftover | iOS | ENABLE_BITCODE-Überbleibsel werden entfernt | Ja |
ios/xcode-swift-version-sanity | iOS | Swift-Version-Einstellung sieht vernünftig aus | Ja |
ios/xcode-no-app-target | iOS | Xcode-Projekt hat eine Anwendungsziel | Ja |
ios/xcode-multiple-app-targets | iOS | Mehrere App-Ziele werden absichtlich behandelt | Ja |
ios/entitlements-vs-profile-capability | iOS | Zugriffsrechte passen zu Profilfähigkeiten | Ja |
ios/entitlements-aps-environment-vs-mode | iOS | aps-Umgebung passt sich zum Verteilungsmodus an | Ja |
ios/entitlements-associated-domains-format | iOS | Die Domains-Format ist gültig | Ja |
ios/entitlements-app-groups-format | iOS | Das App-Gruppen-Format ist gültig | Ja |
ios/capacitor-server-url-shipped | iOS | server.url wird nicht als Live-Reload- oder Remote-Shell-Endpunkt für Store-Builds belassen | Ja |
ios/capacitor-server-cleartext | iOS | server.cleartext ist für die Produktion nicht aktiviert | Ja |
ios/capacitor-allow-navigation-wildcard | iOS | server.allowNavigation ist kein allgemeiner Wildcard | Ja |
ios/pods-not-installed | iOS | CocoaPods Pods / workspace sind vorhanden, wenn Pods verwendet werden | Ja |
ios/pods-lock-missing | iOS | Podfile.lock piniert Pod-Versionen | Ja |
ios/pods-capacitor-missing | iOS | Podfile verbindet Capacitor | Ja |
ios/spm-package-resolved-missing | iOS | SPM Paket.resolved ist vorhanden | Ja |
ios/spm-capacitor-dependency-missing | iOS | Package.swift deklariert Capacitor | Ja |
ios/appicon-empty-or-placeholder | iOS | AppIcon.appiconset existiert und ist nicht leer | Ja |
ios/appicon-referenced-file-missing | iOS | Inhalt.json-Icon-Dateien existieren auf der Festplatte | Ja |
ios/appicon-marketing-missing | iOS | 1024×1024 Marketing-Icon existiert | Ja |
ios/spm-deployment-target-consistency | iOS | SPM-Deployziel ist konsistent | Ja |
Android
Titel: Android| ID | Plattformen | Was es überprüft | Schrittweise durchsetzen |
|---|---|---|---|
android/keystore-opens | Android | Android-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-formed | Android | AndroidManifest.xml wird geparst | — |
android/manifest-tag-typo | Android | Gemeinsame Manifest-Tagschreibfehler | — |
android/manifest-namespace-uri | Android | xmlns:android ist der richtige Namensraum-URI | — |
android/manifest-missing-prefix | Android | Android-Attribute verwenden den Prefix android: | — |
android/manifest-exported-missing | Android | android:exported wird an den erforderlichen Stellen gesetzt | — |
android/manifest-multiple-uses-sdk | Android | Nur ein sdk-Element wird verwendet | — |
android/manifest-duplicate-component | android | Keine duplizierten Komponenten | — |
android/manifest-unique-permission | android | Benutzerdefinierte Berechtigungen sind einzigartig | — |
android/manifest-hardcoded-debuggable | android | debuggable=true wird nicht verschickt | — |
android/manifest-mock-location | android | ACCESS_MOCK_LOCATION wird nicht verschickt | — |
android/manifest-exported-unprotected | android | Exportierte Komponenten sind geschützt | — |
android/manifest-query-all-packages | android | QUERY_ALL_PACKAGES Rechtfertigung | — |
android/manifest-deeplink-valid | android | Deeplink-Intent-Filter sehen gültig aus | — |
android/applicationid-present | android | Die Anwendung-ID wird in app/build.gradle deklariert | — |
android/capacitor-build-gradle-applied | android | capacitor.build.gradle existiert, wenn angewendet | — |
android/gradle-wrapper-present | android | Gradle-Wrapper-Dateien sind vorhanden | — |
android/flavor-dimensions | android | Schmackenabmessungen werden deklariert, wenn Schmacken existieren | — |
android/google-services-file | android | google-services.json ist vorhanden, wenn Plugin angewendet wird | — |
android/local-properties-committed | Android | local.properties enthält keine geheimen Daten, da diese nicht committet werden | — |
android/sdk-floors | Android | Mindest-, Kompilier- und Zielversionen SDK sehen gültig aus | — |
android/target-sdk-play | Android | Ziel-SDK-Version erfüllt Play-Anforderungen | — |
android/min-sdk-capacitor | Android | Mindest-SDK-Version erfüllt Capacitor Anforderungen | — |
android/version-fields | Android | versionCode / versionName sind vorhanden | — |
android/play-sa-access | Android | Dienstkontoinhaber kann auf die App zugreifen (remote) | — |
Beispiel: remote Next.js / server.url shell
Abschnitt mit dem Titel „Beispiel: remote Next.js / server.url shell“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:
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-skip ios/capacitor-server-url-shippedOder behalten Sie die Sichtbarkeit als Warnung:
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-warn ios/capacitor-server-url-shipped