빌드 전 검사 확인
설치 단계와 이 플러그인의 전체 마크다운 가이드를 포함한 설정 지시서를 복사하세요.
클라우드 빌드가 프로젝트를 업로드하기 전에 Capgo이 실행되며, CLI은 로컬에서 자격 증명, 프로젝트 및 스토어 구성 문제를 잡아내는 prescan 개별 체크 아이디를 무시하는 것보다 전체 스캔을 끄는 것보다 더 좋습니다.
개별 체크 아이디를 무시
npx @capgo/cli@latest build prescan <appId> --platform ios클립보드에 복사 80 오늘은
체크가 있습니다. 개별 체크 아이디를 무시하는 것보다 전체 스캔을 끄는 것보다 더 좋습니다.
특정 체크를 무시# 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-separatednpx @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__CAPGO_KEEP_0__ build prescan:
npx @capgo/cli@latest build prescan <appId> --platform ios \ --skip ios/capacitor-server-url-shipped \ --warn ios/capacitor-server-cleartext__CAPGO_KEEP_1__
__CAPGO_KEEP_7__
__CAPGO_KEEP_8__| Flag | Effect |
|---|---|
--no-prescan | Skip the entire scan |
--prescan-ignore-fatal (또는 --ignore-fatal on build prescan) | 스캔 실행, 리포트 출력, 블록하지 않음 |
--fail-on-warnings | CI에서 경고를 치명적인 것으로 처리 |
--no-prescan and --prescan-ignore-fatal 숨기거나 우회 모두 남은 체크를 모두 숨기고, 한 체크에 대한 오버라이드만 사용할 수 있습니다.
체크 카탈로그
Catalog 확인하기정확한 id를 사용하세요 --prescan-skip / --prescan-warn.
강제 적용 강제 적용은 정보만 제공할 때까지 2026-08-14이후 빌드 차단합니다.
공유
공유| ID | 플랫폼 | 검사하는 내용 | 강제 적용 |
|---|---|---|---|
shared/apikey-permission | iOS, Android | API 키는 네이티브 빌드를 요청할 수 있습니다 | — |
shared/app-exists | ios, android | API 키가 앱 아이디를 가지고 있으며 보이게 됩니다 | — |
shared/credentials-saved | ios, android | iOS/Android 인증 정보는 로컬에 저장됩니다 | — |
shared/cap-sync-stale | ios, android | 웹 자산이 빌드되고 Capacitor 플러그인이 동기화됩니다 | — |
shared/node-linker-layout | ios, android | node_modules 레이아웃은 Capacitor 네이티브 경로와 호환됩니다 | — |
shared/bundle-id-consistency | ios, android | Capacitor 앱 아이디는 네이티브 번들 아이디 / 애플리케이션 아이디와 일치합니다 | — |
iOS
iOS| 식별자 | 플랫폼 | 체크하는 것 | 점진적 강제 |
|---|---|---|---|
ios/p12-opens | iOS | iOS .p12 파일이 제공된 비밀번호로 열립니다. | — |
ios/p12-expiry | iOS | iOS 인증서가 만료되지 않았습니다. | — |
ios/profile-expiry | iOS | 배포 프로파일이 만료되지 않았습니다. | — |
ios/profile-bundle-match | iOS | __CAPGO_KEEP_0__ | — |
ios/profile-type-vs-mode | iOS | __CAPGO_KEEP_0__ | — |
ios/cert-profile-pairing | iOS | __CAPGO_KEEP_0__ | — |
ios/targets-covered | iOS | iOS 앱에 프로비저닝 프로파일이 모두 설정되어 있습니다. | — |
ios/infoplist-sanity | iOS | Info.plist에 필요한 버전 / 식별자 키가 있습니다. | — |
ios/asc-key-valid | iOS | App Store Connect API 키 필드가 유효합니다. | — |
ios/asc-key-access | iOS | API 키는 앱 (remote) 에 접근할 수 있습니다. | — |
ios/plist-bundle-id-format | iOS | CFBundleIdentifier 형식이 유효합니다. | 예 |
ios/plist-version-short-format | iOS | CFBundleShortVersionString 형식이 유효합니다. | 예 |
ios/plist-version-build-format | iOS | CFBundleVersion 형식이 유효합니다. | 예 |
ios/plist-encryption-compliance | iOS | ITSAppUsesNonExemptEncryption이 선언되었습니다. | Yes |
ios/plist-ats-arbitrary-loads | iOS | NSAllowsArbitraryLoads이 프로덕션에서 사용되지 않습니다. | Yes |
ios/plist-launch-storyboard | iOS | 시작 화면이 선언되었습니다. | Yes |
ios/plist-orientations-multitasking | iOS | 정렬/멀티태스킹 설정이 일관적입니다. | Yes |
ios/plist-orientations-present | iOS | UISupportedInterfaceOrientations이 선언되었습니다. | Yes |
ios/plist-display-name | iOS | 표시 이름이 설정되었습니다. | Yes |
ios/plist-background-modes-sanity | iOS | UIBackgroundModes의 값이 유효합니다. | Yes |
ios/xcode-deployment-target-capacitor | iOS | iOS 배포 대상이 Capacitor 요구 사항을 충족합니다. | Yes |
ios/xcode-signing-team | iOS | 인증 팀이 설정되었습니다. | Yes |
ios/xcode-bundle-id-mismatch-across-configs | iOS | Bundle ID는 Xcode 설정에서 일관적입니다. | Yes |
ios/xcode-enable-bitcode-leftover | iOS | ENABLE_BITCODE의 잔여물이 제거됩니다. | Yes |
ios/xcode-swift-version-sanity | iOS | Swift 버전 설정이 정상적입니다. | Yes |
ios/xcode-no-app-target | iOS | Xcode 프로젝트에는 애플리케이션 대상이 있습니다. | Yes |
ios/xcode-multiple-app-targets | iOS | 다중 앱 대상이 의도적으로 처리됩니다. | Yes |
ios/entitlements-vs-profile-capability | iOS | 특권이 프로파일 가능성과 일치합니다. | Yes |
ios/entitlements-aps-environment-vs-mode | iOS | aps-environment가 배포 모드와 일치합니다. | Yes |
ios/entitlements-associated-domains-format | iOS | 연관된 도메인 형식이 유효합니다. | Yes |
ios/entitlements-app-groups-format | ios | 앱 그룹 형식이 유효합니다. | Yes |
ios/capacitor-server-url-shipped | ios | 스토어 빌드용으로 라이브 리로드 / 원격 셸 엔드포인트로 남겨둘 수 없습니다. server.url | Yes |
ios/capacitor-server-cleartext | ios | 프로덕션용으로 server.cleartext가 활성화되어서는 안 됩니다. | Yes |
ios/capacitor-allow-navigation-wildcard | ios | server.allowNavigation은 전체적인 와일드카드가 아니어야 합니다. | Yes |
ios/pods-not-installed | ios | CocoaPods Pods / workspace는 Pods가 사용될 때 존재합니다. | Yes |
ios/pods-lock-missing | ios | Podfile.lock은 pod 버전을 고정합니다. | Yes |
ios/pods-capacitor-missing | ios | Podfile은 Capacitor을 연결합니다. | Yes |
ios/spm-package-resolved-missing | ios | SPM Package.resolved은 존재합니다. | Yes |
ios/spm-capacitor-dependency-missing | iOS | Capacitor을 Package.swift에 선언합니다. | Yes |
ios/appicon-empty-or-placeholder | iOS | AppIcon.appiconset이 존재하고 비어있지 않습니다. | Yes |
ios/appicon-referenced-file-missing | iOS | Contents.json 아이콘 파일이 디스크에 존재합니다. | Yes |
ios/appicon-marketing-missing | iOS | 1024×1024 마케팅 아이콘을 찾을 수 있습니다. | Yes |
ios/spm-deployment-target-consistency | iOS | SPM 배포 대상이 일관적입니다. | Yes |
안드로이드
안드로이드| ID | 플랫폼 | 무엇을 확인합니까? | 강제 적용을 점진적으로 |
|---|---|---|---|
android/keystore-opens | 안드로이드 | 안드로이드 키스토어는 제공된 비밀번호로 열립니다. | — |
android/keystore-expiry | 안드로이드 | 안드로이드 서명 인증서는 만료되지 않았습니다. | — |
android/cordova-vars-present | 안드로이드 | cordova.variables.gradle은 cap sync 후에 존재합니다. | — |
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를 분석합니다. | — |
android/manifest-tag-typo | 안드로이드 | Common manifest 태그 오류 | — |
android/manifest-namespace-uri | 안드로이드 | xmlns:android 네임스페이스 URI는 올바릅니다. | — |
android/manifest-missing-prefix | 안드로이드 | Android 특성은 android: 접두사를 사용합니다. | — |
android/manifest-exported-missing | 안드로이드 | android:exported는 필요할 때 설정됩니다. | — |
android/manifest-multiple-uses-sdk | 안드로이드 | 사용하는 sdk 요소는 하나만 사용됩니다. | — |
android/manifest-duplicate-component | 안드로이드 | 중복된 컴포넌트가 없습니다 | — |
android/manifest-unique-permission | 안드로이드 | 사용자 지정 권한은 고유합니다 | — |
android/manifest-hardcoded-debuggable | 안드로이드 | debuggable=true가 배포되지 않습니다 | — |
android/manifest-mock-location | 안드로이드 | ACCESS_MOCK_LOCATION이 배포되지 않습니다 | — |
android/manifest-exported-unprotected | 안드로이드 | 내보낸 컴포넌트는 보호됩니다 | — |
android/manifest-query-all-packages | 안드로이드 | QUERY_ALL_PACKAGES의 정당성 | — |
android/manifest-deeplink-valid | android | Deep Link Intent 필터가 유효합니다 | — |
android/applicationid-present | android | applicationId는 app/build.gradle에서 선언됩니다 | — |
android/capacitor-build-gradle-applied | android | capacitor.build.gradle이 적용되었을 때 존재합니다 | — |
android/gradle-wrapper-present | android | Gradle Wrapper 파일이 존재합니다 | — |
android/flavor-dimensions | android | 플레이버드 차원은 플레버드가 존재할 때 선언됩니다 | — |
android/google-services-file | android | google-services.json이 플러그인이 적용되었을 때 존재합니다 | — |
android/local-properties-committed | 안드로이드 | __CAPGO_KEEP_0__에 대한 비밀을 포함하지 않도록 local.properties가 커밋되지 않았습니다. | — |
android/sdk-floors | 안드로이드 | SDK 층의 최소/컴파일/타겟 설정이 유효합니다. | — |
android/target-sdk-play | 안드로이드 | Play 요구 사항을 충족하는 targetSdk가 있습니다. | — |
android/min-sdk-capacitor | 안드로이드 | Capacitor 요구 사항을 충족하는 minSdk가 있습니다. | — |
android/version-fields | 안드로이드 | versionCode / versionName이 존재합니다. | — |
android/play-sa-access | 안드로이드 | Play 서비스 계정은 앱에 대한 원격 접근이 가능합니다. | — |
__CAPGO_KEEP_0__ : 원격 Next.js / 서버 URL 셸 예시
원격 Next.js / 서버 URL 셸 예시생산 환경에서 로드하는 네이티브 셸을 배송하는 것은 지원되는 __CAPGO_KEEP_0__ 패턴입니다. server.url is a supported Capacitor pattern. Prescan flags ios/capacitor-server-url-shipped 이것은 종종 라이브 리로드의 잔여물입니다.
다른 체크를 비활성화하지 않고 이를 인식합니다.
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