Administrar actualizaciones en tiempo real para tu aplicación __CAPGO_KEEP_1__ sin tener que recargar la tienda...

Realizar comprobaciones de prescan

Antes de Capgo Cloud Build sube su proyecto, el CLI ejecuta un prescan que detecta problemas de credenciales, proyectos y configuración de almacenamiento localmente.

También se ejecuta de forma independiente:

Ventana de terminal
npx @capgo/cli@latest build prescan <appId> --platform ios

Hay 80 verificaciones hoy. Es preferible ignorar IDs de verificación individuales en lugar de desactivar la escaneo completo.

Ventana de terminal
# 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

Alias de pie de página habilitado build prescan:

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

Los identificadores de verificación desconocidos fallan rápidamente con un error claro.

BanderaEfecto
--no-prescanSaltar la escaneo completo
--prescan-ignore-fatal (o --ignore-fatal en build prescan)Ejecutar escaneo, imprimir informe, nunca bloquear
--fail-on-warningsTratar advertencias como fatales (CI)

--no-prescan y --prescan-ignore-fatal ocultar o bypassar todos verificaciones restantes. Utilice sobrescripciones por verificación en lugar de cuando solo discrepe con una regla.

Utilice el id exacto en --prescan-skip / --prescan-warn.

Aplicar gradualmente significa que la búsqueda es información hasta que 2026-08-14 , luego puede bloquear los builds.

IdPlataformasQué verificaAplicar gradualmente
shared/apikey-permissionios, androidLa clave API puede solicitar compilaciones nativas
shared/app-existsios, androidEl identificador de la aplicación existe y es visible para la clave API
shared/credentials-savedios, androidSe almacenan localmente las credenciales de iOS/Android obligatorias
shared/cap-sync-staleios, androidSe construyen activos web y se sincronizan plugins Capacitor
shared/node-linker-layoutios, androidLa estructura de node_modules funciona con rutas nativas Capacitor
shared/bundle-id-consistencyios, androidLa clave Capacitor appId coincide con el identificador de paquete nativo / aplicaciónId
IdPlataformas¿Qué verifica?Aplicar gradualmente
ios/p12-opensiosEl archivo .p12 de iOS se abre con la contraseña proporcionada
ios/p12-expiryiosEl certificado de firma de iOS no ha expirado
ios/profile-expiryiosEl perfil de configuración de iOS no ha expirado
ios/profile-bundle-matchiosEl identificador de paquete de perfil de configuración coincide con la aplicación
ios/profile-type-vs-modeiosEl tipo de perfil coincide con el modo app_store / ad_hoc
ios/cert-profile-pairingiosEl certificado está integrado en el perfil de configuración
ios/targets-coverediosTodos los objetivos de iOS tienen un perfil de configuración
ios/infoplist-sanityiosInfo.plist tiene claves de versión / identidad requeridas
ios/asc-key-validiosLos campos de la clave API de App Store Connect parecen válidos
ios/asc-key-accessiosLa clave API ASC puede acceder a la aplicación (remota)
ios/plist-bundle-id-formatiosEl formato de CFBundleIdentifier es válido
ios/plist-version-short-formatiosEl formato de CFBundleShortVersionString es válido
ios/plist-version-build-formatiosEl formato de CFBundleVersion es válido
ios/plist-encryption-complianceiosSe declara ITSAppUsesNonExemptEncryption
ios/plist-ats-arbitrary-loadsiosNSAllowsArbitraryLoads no está habilitado para producción
ios/plist-launch-storyboardiosLa pantalla de arranque está declarada
ios/plist-orientations-multitaskingiosLos ajustes de orientación / multitasking son consistentes
ios/plist-orientations-presentiosUISupportedInterfaceOrientations está declarada
ios/plist-display-nameiosEl nombre de la interfaz de usuario está configurado
ios/plist-background-modes-sanityiosLos valores de UIBackgroundModes parecen válidos
ios/xcode-deployment-target-capacitoriosEl objetivo de despliegue de iOS cumple con los requisitos de Capacitor
ios/xcode-signing-teamiosEl equipo de firma está configurado
ios/xcode-bundle-id-mismatch-across-configsiosEl identificador de paquete es consistente en las configuraciones de Xcode
ios/xcode-enable-bitcode-leftoveriosSe elimina el resto de ENABLE_BITCODE
ios/xcode-swift-version-sanityiosLa configuración de versión de Swift parece razonable
ios/xcode-no-app-targetiosEl proyecto de Xcode tiene un objetivo de aplicación
ios/xcode-multiple-app-targetsiosSe manejan intencionalmente varios objetivos de aplicación
ios/entitlements-vs-profile-capabilityiosCoinciden las entidades con las capacidades del perfil
ios/entitlements-aps-environment-vs-modeiosaps-environment coincide con el modo de distribución
ios/entitlements-associated-domains-formatiosEl formato de Dominios asociados es válido
ios/entitlements-app-groups-formatiosEl formato de App Groups es válido
ios/capacitor-server-url-shippediosserver.url no se deja como un punto de conexión de reinicio remoto / consola para compilaciones de tienda
ios/capacitor-server-cleartextiosserver.cleartext no está habilitado para producción
ios/capacitor-allow-navigation-wildcardiosserver.allowNavigation no es un wildcard general
ios/pods-not-installediosLos CocoaPods Pods / workspace están presentes cuando se utilizan Pods
ios/pods-lock-missingiosEl Podfile.lock pincha versiones de pod
ios/pods-capacitor-missingiosEl Podfile conecta Capacitor
ios/spm-package-resolved-missingiosEl Package.resolved de SPM está presente
ios/spm-capacitor-dependency-missingiosPackage.swift declara Capacitor
ios/appicon-empty-or-placeholderiosAppIcon.appiconset existe y no está vacío
ios/appicon-referenced-file-missingiosLos archivos de icono de Contents.json existen en disco
ios/appicon-marketing-missingiosEl icono de marketing de 1024×1024 existe
ios/spm-deployment-target-consistencyiosEl objetivo de despliegue de SPM es consistente
IdPlataformas¿Qué verifica?Aplicar gradualmente
android/keystore-opensandroidEl keystore de Android se abre con las contraseñas proporcionadas
android/keystore-expiryandroidEl certificado de firma Android no ha expirado
android/cordova-vars-presentandroidSe encuentra presente cordova.variables.gradle después de sincronizar cap
android/gradle-props-heuristicsandroidHeurísticas de gradle.properties para problemas de compilación comunes
android/play-sa-jsonandroidSe encuentra presente el archivo JSON de servicio de Play cuando está configurado
android/flavor-existsandroidExiste el producto flavor solicitado
android/agp8-package-attrandroidSe ha eliminado el atributo de paquete del archivo Manifest para AGP 8+
android/manifest-well-formedandroidAndroidManifest.xml parsea
android/manifest-tag-typoandroidTipos de etiquetas de manifest comunes
android/manifest-namespace-uriandroidLa URI de namespace xmlns:android está correcta
android/manifest-missing-prefixandroidLas atributos de Android utilizan la prefija android:
android/manifest-exported-missingandroidSe establece android:exported donde es necesario
android/manifest-multiple-uses-sdkandroidSolo se utiliza un elemento uses-sdk
android/manifest-duplicate-componentandroidNo hay componentes duplicados
android/manifest-unique-permissionandroidLas permisos personalizados son únicos
android/manifest-hardcoded-debuggableandroiddebuggable=true no se envía
android/manifest-mock-locationandroidACCESS_MOCK_LOCATION no se envía
android/manifest-exported-unprotectedandroidLos componentes exportados están protegidos
android/manifest-query-all-packagesandroidLa justificación de QUERY_ALL_PACKAGES
android/manifest-deeplink-validandroidLos filtros de intención de Deeplink parecen válidos
android/applicationid-presentandroidEl identificador de la aplicación se declara en app/build.gradle
android/capacitor-build-gradle-appliedandroidcapacitor.build.gradle existe cuando se aplica
android/gradle-wrapper-presentandroidEstán presentes los archivos del wrapper de Gradle
android/flavor-dimensionsandroidSe declaran dimensiones de sabores cuando existen sabores
android/google-services-fileandroidEstá presente google-services.json cuando se aplica el plugin
android/local-properties-committedandroidLas propiedades locales no se han comprometido con secretos
android/sdk-floorsandroidLas min/compilación de la plataforma objetivo SDK parece válida
android/target-sdk-playandroidLa plataforma objetivo cumple con los requisitos de Play
android/min-sdk-capacitorandroidLa plataforma mínima cumple con los requisitos de Capacitor
android/version-fieldsandroidEstán presentes el código de versión y el nombre de la versión
android/play-sa-accessandroidEl servicio de Play puede acceder a la aplicación (remoto)

Example: terminal de Next.js remoto / shell de servidor

Sección titulada “Example: terminal de Next.js remoto / shell de servidor”

Enviar un shell nativo que carga una producción server.url es un patrón de Capacitor admitido. Se prescan flags ios/capacitor-server-url-shipped porque a menudo es un resto de live-reload.

Reconozca sin deshabilitar otras comprobaciones:

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

O mantener la visibilidad como advertencia:

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