__CAPGO_KEEP_0__

构建预扫描检查

在 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-fatal 在 build prescan)运行扫描,打印报告,不阻塞
--fail-on-warnings以错误为警告(CI)

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

检查目录

检查目录

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

逐步执行 表示找到的是信息性发现,直到 2026-08-14然后它可以阻止构建。

Id平台它检查什么逐步强制
shared/apikey-permissioniOS, AndroidAPI 键可以请求本机构建—
shared/app-existsiOS, Android应用程序 Id 存在并且可见于 API 键—
shared/credentials-savediOS, Android需要保存的iOS/Android凭据保存在本地—
shared/cap-sync-staleiOS, AndroidWeb资源构建并且Capacitor插件同步—
shared/node-linker-layoutiOS, AndroidCapacitornode_modules布局与Capacitor本地路径兼容—
shared/bundle-id-consistencyiOS, AndroidCapacitorappId与native bundle id / applicationId匹配—

iOS

iOS
Id平台它检查什么逐步强制
ios/p12-opensios使用提供的密码打开iOS .p12文件—
ios/p12-expiryiosiOS签名证书未过期—
ios/profile-expiryios分发配置文件未过期—
ios/profile-bundle-matchios分发配置文件的bundle id与应用程序匹配—
ios/profile-type-vs-modeios配置文件类型与app_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 格式是有效的是
ios/plist-version-short-formatiosCFBundleShortVersionString 格式有效是
ios/plist-version-build-formatiosCFBundleVersion 格式有效是
ios/plist-encryption-complianceiosITSAppUsesNonExemptEncryption 已声明是
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-sanityiOSUI背景模式值看起来有效是
ios/xcode-deployment-target-capacitoriOSiOS部署目标满足Capacitor要求是
ios/xcode-signing-teamiOS签名团队已设置是
ios/xcode-bundle-id-mismatch-across-configsiOSbundle id在Xcode配置中一致是
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环境匹配发布模式是
ios/entitlements-associated-domains-formatiOS关联域名格式正确是
ios/entitlements-app-groups-formatiOS应用组格式正确是
ios/capacitor-server-url-shippediOS不将 server.url 留作 live-reload / 远程 shell 端点用于商店构建是
ios/capacitor-server-cleartextiOS不在生产环境中启用 server.cleartext是
ios/capacitor-allow-navigation-wildcardiOSserver.allowNavigation 不是 blanket 通配符是
ios/pods-not-installediOS当使用 Pods 时,CocoaPods 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-missingiOS内容.json图标文件存在于磁盘是
ios/appicon-marketing-missingiOS1024×1024营销图标存在是
ios/spm-deployment-target-consistencyiOSSPM部署目标一致是

安卓

安卓
平台它检查逐步强制安卓
android/keystore-opensandroid安卓签名证书未过期—
android/keystore-expiryandroid安卓—
android/cordova-vars-presentandroidcordova.variables.gradle 在 cap 同步后存在—
android/gradle-props-heuristicsandroidgradle.properties 常见构建错误规则—
android/play-sa-jsonandroidgradle.properties 中的常见构建错误规则—
android/flavor-existsandroid当配置了 Play 服务帐户时,Play 服务帐户 JSON 文件存在—
android/agp8-package-attrandroid请求的产品风味存在—
android/manifest-well-formedandroidAGP 8+ 中,Manifest 中的 package= 属性已移除(不再需要)—
android/manifest-tag-typoandroid常见的清单标签拼写错误—
android/manifest-namespace-uriandroidcontext—
android/manifest-missing-prefixandroidxmlns:android命名空间URI是正确的—
android/manifest-exported-missingandroidAndroid属性使用android:前缀—
android/manifest-multiple-uses-sdkandroid只允许使用一个sdk元素—
android/manifest-duplicate-componentandroid仅使用一个uses-__CAPGO_KEEP_0__元素—
android/manifest-unique-permissionandroid自定义权限是独特的—
android/manifest-hardcoded-debuggableandroid在Capgo的构建过程中,—
android/manifest-mock-locationandroiddebuggable=true不被发布—
android/manifest-exported-unprotectedandroidACCESS_MOCK_LOCATION不被发布—
android/manifest-query-all-packagesandroid导出的组件是受保护的—
android/manifest-deeplink-validandroidQUERY_ALL_PACKAGES的理由—
android/applicationid-presentandroidapplicationId 在 app/build.gradle 中声明—
android/capacitor-build-gradle-appliedandroidcapacitor.build.gradle存在时应用—
android/gradle-wrapper-presentandroid__CAPGO_KEEP_0__.build.gradle 存在时应用—
android/flavor-dimensionsandroidGradle 包装文件存在—
android/google-services-fileandroid产品维度声明时存在产品—
android/local-properties-committedandroidgoogle-services.json 存在时插件应用中存在,local.properties 不包含敏感信息—
android/sdk-floorsandroidmin/compile/target SDK 层面看起来有效—
android/target-sdk-playandroidcontext—
android/min-sdk-capacitorandroidminSdk 满足 Capacitor 要求—
android/version-fieldsandroidminSdk 满足 __CAPGO_KEEP_0__ 的要求—
android/play-sa-accessandroidversionCode / versionName 有值—

Play 服务账户可以访问应用(远程)

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

标题:示例:远程 Next.js / server.url shell server.url 是支持的Capacitor模式。预扫描标志 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