Comprobaciones de prescan de construcción
Copie una línea de comando 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 prescaneo que detecta problemas de credenciales, proyecto 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. Prefiere ignorar los IDs individuales de verificación en lugar de desactivar toda la escaneo.
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 independientes en build prescan:
npx @capgo/cli@latest build prescan <appId> --platform ios \ --skip ios/capacitor-server-url-shipped \ --warn ios/capacitor-server-cleartextUnknown check ids fail fast with a clear error.
Evita el uso excesivo de escapes globales
Escapadas globales (utilízalas con moderación)| Flag | Bandera |
|---|---|
--no-prescan | Saltarse la escaneo completa |
--prescan-ignore-fatal (or --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 verificaciones restantes. Utilice las sobrescrituras por verificación cuando solo discrepe con una regla.
Ver catálogo
Ver catálogo de verificacionesSección titulada “Ver catálogo de verificaciones” --prescan-skip / --prescan-warn.
Usar el id exacto en Significa que la detección es solo informativa hasta 2026-08-14, entonces puede bloquear las compilaciones.
Compartido
Título de la sección “Compartido”| Id | Plataformas | ¿Qué verifica? | Aplicar gradualmente |
|---|---|---|---|
shared/apikey-permission | ios, android | API key can request native builds | — |
shared/app-exists | ios, android | Existe un id de aplicación y es visible para la clave API | — |
shared/credentials-saved | ios, android | Los credenciales de iOS/Android se guardan localmente | — |
shared/cap-sync-stale | ios, android | Actividades web construidas y Capacitor plugins sincronizados | — |
shared/node-linker-layout | ios, android | La estructura de node_modules funciona con Capacitor rutas nativas | — |
shared/bundle-id-consistency | ios, android | El appId de Capacitor coincide con el id de paquete nativo / applicationId | — |
| Id | Plataformas | ¿Qué se verifica? | Cumplimiento gradual |
|---|---|---|---|
ios/p12-opens | ios | iOS .p12 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 provisión no ha expirado | — |
ios/profile-bundle-match | ios | Provisioning profile bundle id matches the app | — |
ios/profile-type-vs-mode | ios | Tipo de perfil coincide con 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 claves de versión / identidad requeridas. | — |
ios/asc-key-valid | iOS | App Store Connect API campos de la clave 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 | La pantalla de arranque está declarada | Sí |
ios/plist-orientations-multitasking | iOS | Las configuraciones de orientación y multitarea son consistentes | Sí |
ios/plist-orientations-present | iOS | UISupportedInterfaceOrientations está declarado | Sí |
ios/plist-display-name | iOS | El nombre de la pantalla está configurado | Sí |
ios/plist-background-modes-sanity | iOS | Los valores de UIBackgroundModes parecen válidos | Sí |
ios/xcode-deployment-target-capacitor | iOS | iOS deployment target cumple 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 id 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 correcta | 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 múltiples objetivos de aplicación | Sí |
ios/entitlements-vs-profile-capability | iOS | Permisos coinciden con 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 Grupos de Aplicación es válido | Sí |
ios/capacitor-server-url-shipped | ios | La URL del servidor no se deja como un punto de conexión de recompilación remota / consola para ediciones de tienda | Sí |
ios/capacitor-server-cleartext | ios | server.cleartext is not enabled for production | Sí |
ios/capacitor-allow-navigation-wildcard | ios | El texto claro del servidor no está habilitado para producción | Sí |
ios/pods-not-installed | ios | No se permite la navegación del servidor como un wildcard generalizado | Sí |
ios/pods-lock-missing | ios | Podfile.lock fija versiones de pods | Sí |
ios/pods-capacitor-missing | ios | Podfile conecta Capacitor | Sí |
ios/spm-package-resolved-missing | ios | SPM Package.resolved está presente | Sí |
ios/spm-capacitor-dependency-missing | ios | Package.swift declara Capacitor | Sí |
ios/appicon-empty-or-placeholder | iOS | Existe AppIcon.appiconset y no está vacío | Sí |
ios/appicon-referenced-file-missing | iOS | Existen archivos de icono en Contents.json en disco | Sí |
ios/appicon-marketing-missing | iOS | Existe icono de marketing de 1024×1024 | Sí |
ios/spm-deployment-target-consistency | iOS | El objetivo de despliegue de SPM es consistente | Sí |
Android
Sección titulada “Android”| Id | Plataformas | ¿Qué verifica? | Aplicar gradualmente |
|---|---|---|---|
android/keystore-opens | android | El keystore de Android se abre con las contraseñas proporcionadas | — |
android/keystore-expiry | android | La certificación de firma de Android no ha expirado | — |
android/cordova-vars-present | android | cordova.variables.gradle está presente después de sincronizar con Capgo | — |
android/gradle-props-heuristics | android | Heurísticas de gradle.properties para comunes errores de compilación | — |
android/play-sa-json | android | El archivo JSON de servicio de Play está presente cuando está configurado | — |
android/flavor-exists | android | El producto de sabor solicitado existe | — |
android/agp8-package-attr | android | El paquete de manifiesto atributo package= eliminado para AGP 8+ | — |
android/manifest-well-formed | android | AndroidManifest.xml se parsea correctamente | — |
android/manifest-tag-typo | android | Tipos comunes de etiquetas de manifiesto | — |
android/manifest-namespace-uri | android | xmlns:android URI de espacio de nombres es correcto | — |
android/manifest-missing-prefix | android | Las atributos de Android utilizan la prefija android: | — |
android/manifest-exported-missing | android | android:exported se establece donde es necesario | — |
android/manifest-multiple-uses-sdk | android | Solo se utiliza un elemento uses-sdk | — |
android/manifest-duplicate-component | android | No hay 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 | ACCESS_MOCK_LOCATION no se envía | — |
android/manifest-exported-unprotected | android | Los componentes exportados están protegidos | — |
android/manifest-query-all-packages | android | Justificación de QUERY_ALL_PACKAGES | — |
android/manifest-deeplink-valid | android | Los intent-filters de deeplink parecen válidos | — |
android/applicationid-present | android | Se declara 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 de wrapper de Gradle | — |
android/flavor-dimensions | android | Se declaran dimensiones de sabores cuando existen sabores | — |
android/google-services-file | android | google-services.json está presente cuando se aplica el plugin | — |
android/local-properties-committed | android | local.properties no está comprometido con secretos | — |
android/sdk-floors | android | min/compilar/directorio SDK pisos parecen válidos | — |
android/target-sdk-play | android | targetSdk cumple los requisitos de Play | — |
android/min-sdk-capacitor | android | minSdk cumple los requisitos de Capacitor | — |
android/version-fields | android | versionCode / versionName están presentes | — |
android/play-sa-access | android | El servicio de Play puede acceder a la aplicación (remoto) | — |
Ejemplo: remoto Next.js / shell de servidor.url
Sección titulada “Ejemplo: remoto Next.js / shell de servidor.url”Enviar un shell nativo que carga una producción server.url es un patrón Capacitor admitido. Marcadores de prescan ios/capacitor-server-url-shipped porque a menudo es un resto de live-reload.
Aceptar sin deshabilitar otras comprobaciones:
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-skip ios/capacitor-server-url-shippedO mantener la visibilidad como advertencia:
npx @capgo/cli@latest build request <appId> --platform ios \ --prescan-warn ios/capacitor-server-url-shipped