Verifica construcción prescan
Copia 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 los IDs de verificación individuales en lugar de desactivar la escaneo completo.
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 pie de página habilitado 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 | Effecto |
|---|---|
--no-prescan | Saltar el escaneo completo |
--prescan-ignore-fatal o --ignore-fatal en build prescan) | Ejecutar escaneo, imprimir informe, nunca bloquear |
--fail-on-warnings | Considerar advertencias como fatales (CI) |
--no-prescan y --prescan-ignore-fatal ocultar o saltar todos los controles restantes. Utiliza sobrescripciones por control en lugar de esto cuando solo estás en desacuerdo con una regla.
Ver catálogo
Sección titulada “Ver catálogo”Utilice el id exacto en --prescan-skip / --prescan-warn.
Aplicar gradualmente significa que la búsqueda es información hasta que 2026-08-14, entonces puede bloquear las compilaciones.
Compartido
Sección titulada “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 está 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 configuración de provisionamiento coincide con la aplicación | — |
ios/profile-type-vs-mode | ios | El tipo de perfil coincide con el modo app_store / ad_hoc de la aplicación | — |
ios/cert-profile-pairing | ios | El certificado está integrado en el perfil de configuración de provisionamiento | — |
ios/targets-covered | ios | Todos los objetivos de iOS tienen un perfil de configuración de provisionamiento | — |
ios/infoplist-sanity | ios | El archivo Info.plist tiene las claves de versión y identidad requeridas | — |
ios/asc-key-valid | ios | Las claves de la clave de App Store Connect API parecen válidas | — |
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 / multitasking 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 la interfaz de usuario | 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 ENABLE_BITCODE sobrante | 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 una aplicación objetivo | Sí |
ios/xcode-multiple-app-targets | ios | Se manejan intencionalmente múltiples objetivos de aplicación | Sí |
ios/entitlements-vs-profile-capability | ios | Las entidades de permiso 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 | server.url no se deja como un punto de conexión de recarga en vivo / consola remota para compilaciones de tienda | Sí |
ios/capacitor-server-cleartext | ios | server.cleartext no está habilitado 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 fija 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 de manera gradual |
|---|---|---|---|
android/keystore-opens | Android | El keystore de Android se abre con las contraseñas proporcionadas | — |
android/keystore-expiry | android | El certificado de firma de Android no ha expirado | — |
android/cordova-vars-present | android | cordova.variables.gradle está presente después de sincronizar cap | — |
android/gradle-props-heuristics | android | Heurísticas de gradle.properties para problemas de compilación comunes | — |
android/play-sa-json | android | El archivo JSON de cuenta de servicio de Play está presente cuando está configurado | — |
android/flavor-exists | android | El producto flavor solicitado existe | — |
android/agp8-package-attr | android | El paquete de manifiesto attribute= eliminado para AGP 8+ | — |
android/manifest-well-formed | Android | AndroidManifest.xml se parsea | — |
android/manifest-tag-typo | Android | Tipos de etiquetas de manifiesto comunes | — |
android/manifest-namespace-uri | Android | El URI de espacio de nombres android: es correcto | — |
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 se permite un elemento sdk | — |
android/manifest-duplicate-component | android | No se permiten componentes duplicados | — |
android/manifest-unique-permission | android | Los 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 deeplinks de la intención-filtro 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 | Se encuentran 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 una caja nativa 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