__CAPGO_KEEP_1__

构建预扫描检查

在 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 隐藏或绕过 所有 其余检查。使用每个检查的覆盖代替,当您只与一个规则不一致时。

使用完全相同的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-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 格式有效
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多个应用程序目标是故意处理的
ios/entitlements-vs-profile-capabilityios特权匹配配置文件能力
ios/entitlements-aps-environment-vs-modeiosaps-environment 与发布模式匹配
ios/entitlements-associated-domains-formatios域名格式为 Associated Domains 有效
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

ID
平台它检查什么逐渐强制Android
android/keystore-opensandroidAndroid.keystore使用提供的密码打开
android/keystore-expiry__CAPGO_KEEP_0__Android
android/cordova-vars-presentAndroid签名证书未过期android
android/gradle-props-heuristicscordova.variables.gradle在cap同步后存在android
android/play-sa-jsongradle.properties对常见构建错误的heuristicsandroid
android/flavor-exists当配置时,Play服务帐户JSON存在android
android/agp8-package-attr请求的产品风味存在Manifest 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安卓当存在flavor时才会声明flavor维度
android/google-services-file安卓Google 服务文件存在于插件应用时
android/local-properties-committedAndroid本地 properties 文件不包含敏感信息
android/sdk-floorsAndroid最小/编译/目标 SDK 层面看起来有效
android/target-sdk-playAndroid目标 SDK 满足 Play Store 要求
android/min-sdk-capacitorAndroid最小 SDK 满足 Capacitor 要求
android/version-fieldsAndroidversionCode / versionName 都存在
android/play-sa-accessAndroidPlay 服务账户可以访问应用 (远程)

示例:远程 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
相关