跳过内容

构建预扫描检查

在 Capgo Cloud Build 上传您的项目之前,CLI 运行一个 预扫描 它捕获本地的凭证、项目和存储配置问题。

它也可以独立运行:

终端窗口
npx @capgo/cli@latest build prescan <appId> --platform ios

今天有 80 检查。建议忽略单个检查 ID 而不是关闭整个扫描。

终端窗口
# 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

独立别名开启 build prescan:

终端窗口
npx @capgo/cli@latest build prescan <appId> --platform ios \
--skip ios/capacitor-server-url-shipped \
--warn ios/capacitor-server-cleartext

未知检查ID快速失败并显示明确的错误。

全局转义(尽量少用)

全球转义(谨慎使用)
标志效果
--no-prescan跳过整个扫描
--prescan-ignore-fatal--ignore-fatalbuild prescan)运行扫描,打印报告,不阻止
--fail-on-warnings将警告视为致命(CI)

--no-prescan--prescan-ignore-fatal 隐藏或绕过 所有 其余检查。使用每个检查的覆盖代替,当您只与一个规则不一致时。

使用exact id --prescan-skip / --prescan-warn.

逐步强制 表示发现仅为信息性,直到 2026-08-14然后它可以阻止构建。

ID平台它检查什么逐步强制
shared/apikey-permissioniOS, AndroidAPI key 可以请求本机构建
shared/app-existsiOS, AndroidApp ID 存在且可见于 API key
shared/credentials-savediOS, Android保存本地的必需 iOS/Android 凭证
shared/cap-sync-staleiOS, AndroidWeb 资产构建并 Capacitor 插件同步
shared/node-linker-layoutiOS, Androidnode_modules 布局与 Capacitor 本机路径兼容
shared/bundle-id-consistencyiOS, AndroidCapacitor App ID 与本机包 ID / applicationId 匹配

iOS

iOS
Id平台检查内容逐步强制
ios/p12-opensios使用提供的密码打开iOS .p12文件
ios/p12-expiryiosiOS签名证书未过期
ios/profile-expiryios配额文件未过期
ios/profile-bundle-matchiOS签名配置文件包 ID 与应用匹配
ios/profile-type-vs-modeiOS签名配置文件类型与应用 Store / ad_hoc 模式匹配
ios/cert-profile-pairingiOS签名配置文件中包含证书
ios/targets-coverediOS所有 iOS 目标都有签名配置文件
ios/infoplist-sanityiOSInfo.plist 中包含必需的版本 / 身份证键
ios/asc-key-validiOSApp Store Connect API 键字段看起来有效
ios/asc-key-accessiOSASC API 可以访问应用(远程)
ios/plist-bundle-id-formatiOSCFBundleIdentifier 格式有效Yes
ios/plist-version-short-formatiOSCFBundleShortVersionString 格式有效Yes
ios/plist-version-build-formatiOSCFBundleVersion 格式有效Yes
ios/plist-encryption-complianceiOS是否声明了ITSAppUsesNonExemptEncryption
ios/plist-ats-arbitrary-loadsiosNSAllowsArbitraryLoads在生产环境中未启用
ios/plist-launch-storyboardios是否声明了启动屏幕
ios/plist-orientations-multitaskingios是否设备方向和多任务设置一致
ios/plist-orientations-presentios支持的界面方向是声明的
ios/plist-display-nameios显示名称已设置
ios/plist-background-modes-sanityiosUIBackgroundModes 值看起来是有效的
ios/xcode-deployment-target-capacitoriosiOS 部署目标满足 Capacitor 的要求
ios/xcode-signing-teamios签名团队已设置
ios/xcode-bundle-id-mismatch-across-configsiosXcode配置中Bundle id一致
ios/xcode-enable-bitcode-leftoveriosENABLE_BITCODE残余项已删除
ios/xcode-swift-version-sanityiosSwift版本设置看起来正常
ios/xcode-no-app-targetiosXcode 项目有一个应用程序目标
ios/xcode-multiple-app-targetsios多个应用程序目标是故意处理的
ios/entitlements-vs-profile-capabilityios权利匹配配置文件能力
ios/entitlements-aps-environment-vs-modeiosaps-environment 与发布模式匹配
ios/entitlements-associated-domains-formatios域名格式是有效的
ios/entitlements-app-groups-formatiosApp Groups 格式是有效的
ios/capacitor-server-url-shippediosserver.url 不应作为 live-reload 或远程 shell 端点保留
ios/capacitor-server-cleartextiosserver.cleartext 在生产环境中不应启用
ios/capacitor-allow-navigation-wildcardiosserver.allowNavigation 不是通用允许导航
ios/pods-not-installediosCocoaPods Pods / workspace 在使用 Pods 时存在
ios/pods-lock-missingiosPodfile.lock 固定 pod 版本
ios/pods-capacitor-missingiosPodfile 配置了 Capacitor
ios/spm-package-resolved-missingiosSPM Package.resolved存在
ios/spm-capacitor-dependency-missingiosPackage.swift声明了Capacitor
ios/appicon-empty-or-placeholderiosAppIcon.appiconset存在且不为空
ios/appicon-referenced-file-missingiosContents.json图标文件存在于磁盘上
ios/appicon-marketing-missingios1024×1024的营销图标存在
ios/spm-deployment-target-consistencyiosSPM的部署目标一致

Android

Android
ID平台它检查什么逐步强制
android/keystore-opensandroid__CAPGO_KEEP_0__
android/keystore-expiryAndroid.keystoreAndroid签名证书未过期
android/cordova-vars-presentAndroidcap sync后cordova.variables.gradle存在
android/gradle-props-heuristicsAndroidgradle.properties的常见构建问题
android/play-sa-jsonAndroid配置了Play服务帐号的JSON文件存在
android/flavor-existsandroid请求的产品风味存在
android/agp8-package-attrandroidManifest package= 属性已移除(AGP 8+)
android/manifest-well-formedAndroidAndroidManifest.xml 解析
android/manifest-tag-typoAndroid常见的清单标签错误
android/manifest-namespace-uriAndroidxmlns:android 命名空间 URI 正确
android/manifest-missing-prefixAndroidAndroid 属性使用 android: 前缀
android/manifest-exported-missingAndroidandroid:exported 在需要时已设置
android/manifest-multiple-uses-sdkAndroid仅允许一个使用sdk元素
android/manifest-duplicate-componentandroid不允许重复组件
android/manifest-unique-permissionandroid自定义权限是独一无二的
android/manifest-hardcoded-debuggableandroiddebuggable=true 不会被分发
android/manifest-mock-locationandroidACCESS_MOCK_LOCATION 不会被分发
android/manifest-exported-unprotectedandroid导出的组件是受保护的
android/manifest-query-all-packagesandroidQUERY_ALL_PACKAGES 说明
android/manifest-deeplink-valid安卓deeplink意图过滤器看起来有效
android/applicationid-present安卓在app/build.gradle中声明了applicationId
android/capacitor-build-gradle-applied安卓capacitor.build.gradle存在时才会应用
android/gradle-wrapper-present安卓存在Gradle包装文件
android/flavor-dimensions安卓当存在多个口味时才会声明口味维度
android/google-services-file安卓google-services.json存在于插件应用时
android/local-properties-committed安卓local.properties不包含敏感信息
android/sdk-floors安卓最小/编译/目标SDK楼层看起来有效
android/target-sdk-play安卓目标Sdk满足Play要求
android/min-sdk-capacitor安卓最小Sdk满足Capacitor要求
android/version-fields安卓versionCode/versionName存在
android/play-sa-access安卓Play 服务账号可以访问应用 (远程)

示例:远程 Next.js / server.url shell

标题:示例:远程 Next.js / server.url shell

将一个本地 shell 发送到生产环境 server.url 这是一个支持的 Capacitor 模式。 Prescan flags ios/capacitor-server-url-shipped 因为它经常是 live-reload 的遗留问题。

确认它而不禁用其他检查:

终端窗口
npx @capgo/cli@latest build request <appId> --platform ios \
--prescan-skip ios/capacitor-server-url-shipped

或保持可见性作为一个警告:

终端窗口
npx @capgo/cli@latest build request <appId> --platform ios \
--prescan-warn ios/capacitor-server-url-shipped