跳过内容

构建预扫描检查

在 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快速失败并显示明确的错误。

全局转义(谨慎使用)

标题:全局转义(谨慎使用)
FlagEffect
--no-prescanSkip the entire scan
--prescan-ignore-fatal (or --ignore-fatal on build prescan)Run scan, print report, never block
--fail-on-warningsTreat warnings as fatal (CI)

--no-prescan and --prescan-ignore-fatal hide or bypass all remaining checks. Use per-check overrides instead when you only disagree with one rule.

Check catalog

《检查目录》

使用完全相同的id --prescan-skip / --prescan-warn.

逐步强制 表示找到的是信息性结果,直到 2026-08-14,然后它可以阻止构建。

Id平台它检查什么逐步强制
shared/apikey-permissionios, androidAPI key 可以请求原生构建
shared/app-existsios, androidAPI key 有 App id 并且可见
shared/credentials-savedios, android保存本地的 iOS/Android 凭证是必需的
shared/cap-sync-staleios, androidWeb 资产构建并且 Capacitor 插件同步
shared/node-linker-layoutios, androidnode_modules 布局与 Capacitor 原生路径兼容
shared/bundle-id-consistencyios, androidCapacitor appId 与原生 bundle id / applicationId 匹配

iOS

iOS
Id平台检查内容逐步强制
ios/p12-opensiOS使用提供的密码打开iOS .p12文件
ios/p12-expiryiOS签名证书未过期iOS的分发配置文件未过期
ios/profile-expiry__CAPGO_KEEP_0____CAPGO_KEEP_1__
ios/profile-bundle-match__CAPGO_KEEP_2__Provisioning profile bundle id matches the app
ios/profile-type-vs-modeiosProfile type matches app_store / ad_hoc mode
ios/cert-profile-pairingiosCertificate is embedded in the provisioning profile
ios/targets-coverediosAll iOS targets have a provisioning profile
ios/infoplist-sanityiosInfo.plist has required version / identity keys
ios/asc-key-validiosApp Store Connect API key fields look valid
ios/asc-key-accessiosAPI
ios/plist-bundle-id-format可以通过 (远程) 访问应用iOSCFBundleIdentifier 格式正确
ios/plist-version-short-formatiOSCFBundleShortVersionString 格式正确
ios/plist-version-build-formatiOSCFBundleVersion 格式正确
ios/plist-encryption-complianceiOS、ITSAppUsesNonExemptEncryption 已声明
ios/plist-ats-arbitrary-loadsiosNSAllowsArbitraryLoads 在生产环境中未启用
ios/plist-launch-storyboardios启动屏幕已声明
ios/plist-orientations-multitaskingios方向/多任务设置一致
ios/plist-orientations-presentiosUISupportedInterfaceOrientations 已声明
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有意为之处理多个app目标
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 / remote shell 端点以便于商店构建
ios/capacitor-server-cleartextiosserver.cleartext 在生产环境中不应启用
ios/capacitor-allow-navigation-wildcardiosserver.allowNavigation 不应作为通配符
ios/pods-not-installedios使用 Pods 时 CocoaPods Pods / workspace 会出现
ios/pods-lock-missingiosPodfile.lock 会锁定 pod 的版本
ios/pods-capacitor-missingiosPodfile 会连接 Capacitor
ios/spm-package-resolved-missingiosSPM Package.resolved 会出现Yes
ios/spm-capacitor-dependency-missingiOSPackage.swift声明了CapacitorYes
ios/appicon-empty-or-placeholderiOSAppIcon.appiconset存在且不为空Yes
ios/appicon-referenced-file-missingiOSContents.json图标文件存在于磁盘上Yes
ios/appicon-marketing-missingiOS1024×1024的营销图标存在
ios/spm-deployment-target-consistencyiosSPM 部署目标一致
Id平台它检查什么逐渐强制
android/keystore-opensandroid使用提供的密码打开 Android 密钥库
android/keystore-expiry安卓安卓签名证书未过期
android/cordova-vars-present安卓cordova.variables.gradle存在于cap同步后
android/gradle-props-heuristics安卓gradle.properties对常见构建错误的猜测
android/play-sa-json安卓配置了Play服务账户JSON时存在
android/flavor-exists安卓请求的产品风味存在
android/agp8-package-attr安卓AGP 8+后Manifest包名属性被移除
android/manifest-well-formed安卓AndroidManifest.xml解析
android/manifest-tag-typo安卓常见的Android清单标签错误
android/manifest-namespace-uri安卓xmlns:android命名空间URI正确
android/manifest-missing-prefix安卓Android属性使用android:前缀
android/manifest-exported-missing安卓android:exported在需要的地方设置
android/manifest-multiple-uses-sdk安卓只有一个uses-sdk元素
android/manifest-duplicate-component__CAPGO_KEEP_0__不允许重复组件
android/manifest-unique-permission__CAPGO_KEEP_0__自定义权限是独特的
android/manifest-hardcoded-debuggable__CAPGO_KEEP_0__debuggable=true 不会被发布
android/manifest-mock-location__CAPGO_KEEP_0__ACCESS_MOCK_LOCATION 不会被发布
android/manifest-exported-unprotected__CAPGO_KEEP_0__导出的组件是受保护的
android/manifest-query-all-packages__CAPGO_KEEP_0__QUERY_ALL_PACKAGES 的合理化
android/manifest-deeplink-validandroidDeeplink intent-filters look valid
android/applicationid-presentandroidapplicationId is declared in app/build.gradle
android/capacitor-build-gradle-appliedandroidcapacitor.build.gradle exists when applied
android/gradle-wrapper-presentandroidGradle wrapper files are present
android/flavor-dimensionsandroidFlavor dimensions are declared when flavors exist
android/google-services-fileandroidgoogle-services.json present when plugin applied
android/local-properties-committedandroid本地 properties 文件未包含机密信息
android/sdk-floorsandroidmin/compile/target SDK 层面看起来有效
android/target-sdk-playandroidtargetSdk 满足 Play 要求
android/min-sdk-capacitorandroidminSdk 满足 Capacitor 要求
android/version-fieldsandroidversionCode / versionName 有值
android/play-sa-accessandroidPlay 服务帐户可以访问应用 (远程)

标题:示例:远程 Next.js / server.url shell server.url is a supported Capacitor pattern. Prescan flags ios/capacitor-server-url-shipped 是一个受支持的 __CAPGO_KEEP_0__ 模式。

预扫描标志

因为它经常是 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
相关内容