Verifica prescan de construcción
Copie un prompt de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Antes de que Capgo Cloud Build suba su proyecto, el CLI ejecuta un escaneo previo que detecta problemas de credenciales, proyectos y configuración de almacenamiento localmente.
También se ejecuta de forma independiente:
npx @capgo/cli@latest build prescan <appId> --platform iosHay 80 verificaciones hoy. Es preferible ignorar IDs de verificación individuales en lugar de desactivar la escaneo completa.
Ignorar verificaciones específicas
Sección titulada “Ignorar verificaciones específicas”# 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 de ejecución independiente activado build prescan:
npx @capgo/cli@latest build prescan <appId> --platform ios \ --skip ios/capacitor-server-url-shipped \ --warn ios/capacitor-server-cleartextLos identificadores de verificación desconocidos fallan rápidamente con un error claro.
Escape global (utilízalo con moderación)
Sección titulada “Escapadas globales (utilízalas con moderación)”| Bandera | Efecto |
|---|---|
--no-prescan | Saltar la escaneo completo |
--prescan-ignore-fatal o --ignore-fatal en build prescan) | Ejecutar escaneo, imprimir informe, nunca bloquear |
--fail-on-warnings | Tratar advertencias como fatales (CI) |
--no-prescan y --prescan-ignore-fatal ocultar o saltar todos los controles restantes. Utilice sobrescripciones por control en lugar de esto cuando solo discrepe con una regla.
Ver catálogo
Título de la sección “Ver catálogo”Utilice el id exacto en --prescan-skip / --prescan-warn.
Aplicar gradualmente significa que el resultado es solo información hasta que 2026-08-14entonces puede bloquear la compilación.
Compartido
Título de la sección “Compartido”| Id | Plataformas | Qué verifica | Aplicar gradualmente |
|---|---|---|---|
shared/apikey-permission | ios, android | API puede solicitar compilaciones nativas | — |
shared/app-exists | ios, android | El identificador de la aplicación existe y es visible para la clave API | — |
shared/credentials-saved | ios, android | Los credenciales de iOS/Android requeridas se guardan localmente | — |
shared/cap-sync-stale | ios, android | Los activos web se construyen y se sincronizan los plugins Capacitor | — |
shared/node-linker-layout | ios, android | La estructura de node_modules funciona con los caminos nativos Capacitor | — |
shared/bundle-id-consistency | ios, android | El appId de Capacitor coincide con el identificador de paquete nativo / applicationId | — |
| Id | Plataformas | ¿Qué verifica? | Aplicar gradualmente |
|---|---|---|---|
ios/p12-opens | ios | El archivo .p12 de iOS se abre con la contraseña proporcionada | — |
ios/p12-expiry | ios | El certificado de firma de iOS no ha expirado | — |
ios/profile-expiry | ios | El perfil de configuración de iOS no ha expirado | — |
ios/profile-bundle-match | ios | El identificador de paquete del perfil de provisión coincide con la aplicación | — |
ios/profile-type-vs-mode | ios | El tipo de perfil coincide con el modo app_store / ad_hoc | — |
ios/cert-profile-pairing | ios | El certificado está integrado en el perfil de provisión | — |
ios/targets-covered | ios | Todos los objetivos de iOS tienen un perfil de provisión | — |
ios/infoplist-sanity | ios | Info.plist tiene las claves de versión / identidad requeridas | — |
ios/asc-key-valid | ios | Los campos de la clave API de App Store Connect parecen válidos | — |
ios/asc-key-access | ios | La clave ASC API puede acceder a la aplicación (remota) | — |
ios/plist-bundle-id-format | ios | El formato de CFBundleIdentifier es válido | Sí |
ios/plist-version-short-format | ios | El formato de CFBundleShortVersionString es válido | Sí |
ios/plist-version-build-format | ios | El formato de CFBundleVersion es válido | Sí |
ios/plist-encryption-compliance | ios | Se declara ITSAppUsesNonExemptEncryption | Sí |
ios/plist-ats-arbitrary-loads | ios | No se habilita NSAllowsArbitraryLoads para producción | Sí |
ios/plist-launch-storyboard | ios | Se declara pantalla de arranque | Sí |
ios/plist-orientations-multitasking | ios | Los ajustes de orientación / multitarea son consistentes | Sí |
ios/plist-orientations-present | ios | Se declara la interfaz de orientación de la UI | Sí |
ios/plist-display-name | ios | Se ha establecido el nombre de visualización | Sí |
ios/plist-background-modes-sanity | ios | Los valores de UIBackgroundModes parecen válidos | Sí |
ios/xcode-deployment-target-capacitor | ios | El objetivo de despliegue de iOS cumple con los requisitos de Capacitor | Sí |
ios/xcode-signing-team | ios | El equipo de firmas está configurado | Sí |
ios/xcode-bundle-id-mismatch-across-configs | ios | El identificador de paquete es consistente en las configuraciones de Xcode | Sí |
ios/xcode-enable-bitcode-leftover | ios | Se elimina el resto de ENABLE_BITCODE | Sí |
ios/xcode-swift-version-sanity | ios | La configuración de la versión de Swift parece razonable | Sí |
ios/xcode-no-app-target | ios | El proyecto de Xcode tiene un objetivo de aplicación | Sí |
ios/xcode-multiple-app-targets | ios | Se manejan intencionalmente varios objetivos de aplicación | Sí |
ios/entitlements-vs-profile-capability | ios | Las facultades de entitlements coinciden con las capacidades del perfil | Sí |
ios/entitlements-aps-environment-vs-mode | ios | aps-environment coincide con el modo de distribución | Sí |
ios/entitlements-associated-domains-format | ios | El formato de Dominios Asociados es válido | Sí |
ios/entitlements-app-groups-format | ios | El formato de App Groups es válido | Sí |
ios/capacitor-server-url-shipped | ios | No se deja server.url como un punto de conexión de carga dinámica / consola remota para compilaciones de tienda | Sí |
ios/capacitor-server-cleartext | ios | No se habilita server.cleartext para producción | Sí |
ios/capacitor-allow-navigation-wildcard | ios | server.allowNavigation no es un wildcard general | Sí |
ios/pods-not-installed | ios | Los CocoaPods Pods / workspace están presentes cuando se utilizan Pods | Sí |
ios/pods-lock-missing | ios | El archivo Podfile.lock pincha versiones de pods | Sí |
ios/pods-capacitor-missing | ios | El archivo Podfile configura Capacitor | Sí |
ios/spm-package-resolved-missing | ios | El paquete SPM Package.resolved está presente | Sí |
ios/spm-capacitor-dependency-missing | ios | Package.swift declara Capacitor | Sí |
ios/appicon-empty-or-placeholder | ios | El archivo AppIcon.appiconset existe y no está vacío | Sí |
ios/appicon-referenced-file-missing | ios | Los archivos de icono de Contents.json existen en el disco | Sí |
ios/appicon-marketing-missing | ios | icono de marketing de 1024×1024 existe | Sí |
ios/spm-deployment-target-consistency | iOS | El objetivo de despliegue de SPM es consistente | Sí |
| Id | Plataformas | ¿Qué verifica? | Aplicar gradualmente |
|---|---|---|---|
android/keystore-opens | Android | El keystore de Android se abre con las contraseñas proporcionadas | — |
android/keystore-expiry | __CAPGO_KEEP_0__ | El certificado de firma de Android no ha expirado | — |
android/cordova-vars-present | __CAPGO_KEEP_0__ | Se encuentra el archivo cordova.variables.gradle después de sincronizar cap | — |
android/gradle-props-heuristics | __CAPGO_KEEP_0__ | Heurísticas de gradle.properties para problemas de compilación comunes | — |
android/play-sa-json | __CAPGO_KEEP_0__ | Se encuentra el archivo JSON de servicio de Play cuando está configurado | — |
android/flavor-exists | __CAPGO_KEEP_0__ | El sabor del producto solicitado existe | — |
android/agp8-package-attr | __CAPGO_KEEP_0__ | El paquete de manifiesto attribute= eliminado para AGP 8+ | — |
android/manifest-well-formed | android | Se parsea AndroidManifest.xml | — |
android/manifest-tag-typo | android | Tipos de etiquetas de manifiesto comunes | — |
android/manifest-namespace-uri | android | La URI de espacio de nombres android:android es correcta | — |
android/manifest-missing-prefix | android | Las atributos de Android utilizan la prefija android: | — |
android/manifest-exported-missing | android | Se establece android:exported donde es necesario | — |
android/manifest-multiple-uses-sdk | android | Solo un elemento sdk se utiliza | — |
android/manifest-duplicate-component | android | No se permiten componentes duplicados | — |
android/manifest-unique-permission | android | Las permisos personalizados son únicos | — |
android/manifest-hardcoded-debuggable | android | debuggable=true no se envía | — |
android/manifest-mock-location | android | No se envía ACCESS_MOCK_LOCATION | — |
android/manifest-exported-unprotected | android | Los componentes exportados están protegidos | — |
android/manifest-query-all-packages | android | QUERY_ALL_PACKAGES justificación | — |
android/manifest-deeplink-valid | android | Los intent-filters de deeplink parecen válidos | — |
android/applicationid-present | android | Se ha declarado la aplicaciónId en app/build.gradle | — |
android/capacitor-build-gradle-applied | android | capacitor.build.gradle existe cuando se aplica | — |
android/gradle-wrapper-present | android | Están presentes los archivos del wrapper de Gradle | — |
android/flavor-dimensions | android | Se han declarado las dimensiones de sabor cuando existen sabores | — |
android/google-services-file | android | google-services.json presente cuando se aplica el plugin | — |
android/local-properties-committed | android | local.properties no está comprometido con secretos | — |
android/sdk-floors | android | min/compile/target SDK pisos parecen válidos | — |
android/target-sdk-play | android | targetSdk cumple con los requisitos de Play | — |
android/min-sdk-capacitor | android | minSdk cumple con Capacitor requisitos | — |
android/version-fields | android | versionCode / versionName están presentes | — |
android/play-sa-access | android | La cuenta de servicio de Play puede acceder a la aplicación (remota) | — |
Ejemplo: shell de Next.js remoto / server.url
Sección titulada “Ejemplo: shell de Next.js remoto / server.url”Enviar un shell nativo que carga una producción server.url es un patrón Capacitor admitido. Las banderas de prescan ios/capacitor-server-url-shipped porque a menudo es un resto de live-reload en vivo.
Reconózcalo sin deshabilitar otras comprobaciones:
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-skip ios/capacitor-server-url-shippedO mantener la visibilidad como una advertencia:
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-warn ios/capacitor-server-url-shipped