Lompat ke konten

Melakukan periksaan prescan

Sebelum Capgo Cloud Build mengunggah proyek Anda, CLI menjalankan pemeriksaan awal yang menangkap masalah kredit, proyek, dan konfigurasi toko secara lokal.

Juga dapat dijalankan secara mandiri:

Jendela terminal
npx @capgo/cli@latest build prescan <appId> --platform ios

Ada 80 pemeriksaan hari ini. Lebih baik mengabaikan ID pemeriksaan individu daripada mematikan skenario pemeriksaan secara keseluruhan.

Jendela terminal
# 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

Alias berdiri sendiri aktif build prescan:

Jendela terminal
npx @capgo/cli@latest build prescan <appId> --platform ios \
--skip ios/capacitor-server-url-shipped \
--warn ios/capacitor-server-cleartext

ID pengecekan tidak diketahui gagal dengan pesan kesalahan yang jelas.

BenderaEfek
--no-prescanLewati skenario seluruhnya
--prescan-ignore-fatal (atau --ignore-fatal pada build prescan)Lakukan skenario, cetak laporan, tidak pernah blokir
--fail-on-warningsTangani peringatan sebagai fatal (CI)

--no-prescan dan --prescan-ignore-fatal sembunyikan atau lewati semua pemeriksaan yang tersisa. Gunakan pengaturan per-pemeriksaan jika Anda hanya tidak setuju dengan satu aturan.

Gunakan id yang tepat di --prescan-skip / --prescan-warn.

Mengenakan secara bertahap berarti temuan hanya informatif sampai 2026-08-14, kemudian dapat menghambat pembangunan.

IdPlatformApa yang dicekMengenakan secara bertahap
shared/apikey-permissionios, androidAPI dapat meminta bangunan asliβ€”
shared/app-existsios, androidID aplikasi ada dan dapat dilihat oleh API keyβ€”
shared/credentials-savedios, androidKredensial iOS/Android yang diperlukan disimpan secara lokalβ€”
shared/cap-sync-staleios, androidAset web dibangun dan Capacitor plugin disinkronkanβ€”
shared/node-linker-layoutios, androidTata letak node_modules berfungsi dengan Capacitor jalur asliβ€”
shared/bundle-id-consistencyios, androidCapacitor appId sesuai dengan ID paket asli / aplikasiIdβ€”
IdPlatformApa yang diperiksaMenerapkan secara bertahap
ios/p12-opensiOSSertifikat iOS .p12 dapat dibuka dengan kata sandi yang disediakanβ€”
ios/p12-expirySertifikat tanda tangan iOS tidak kedaluwarsaProfil pengaturan iOS tidak kedaluwarsaβ€”
ios/profile-expiryiOSiOSβ€”
ios/profile-bundle-matchiOSProfil pengaturan bundel id sesuai dengan aplikasiβ€”
ios/profile-type-vs-modeiosJenis profil sesuai dengan mode app_store / ad_hocβ€”
ios/cert-profile-pairingiosSertifikat terintegrasi dalam profil pengaturanβ€”
ios/targets-coverediosSemua target iOS memiliki profil pengaturanβ€”
ios/infoplist-sanityiosInfo.plist memiliki kunci versi / identitas yang diperlukanβ€”
ios/asc-key-validiosKunci App Store Connect API untuk aplikasi terlihat validβ€”
ios/asc-key-accessiosASC API dapat mengakses aplikasi (remote)β€”
ios/plist-bundle-id-formatiosFormat CFBundleIdentifier validYa
ios/plist-version-short-formatiosFormat CFBundleShortVersionString validYa
ios/plist-version-build-formatiosFormat CFBundleVersion validYa
ios/plist-encryption-complianceiosITSAppUsesNonExemptEncryption telah dideklarasikanYa
ios/plist-ats-arbitrary-loadsiosNSAllowsArbitraryLoads tidak diaktifkan untuk produksiYa
ios/plist-launch-storyboardiosLayar peluncuran telah dideklarasikanYa
ios/plist-orientations-multitaskingiosPengaturan orientasi / multitasking konsistenYa
ios/plist-orientations-presentiosUISupportedInterfaceOrientations telah dideklarasikanYa
ios/plist-display-nameiosNama tampilan telah ditetapkanYa
ios/plist-background-modes-sanityiosNilai UIBackgroundModes terlihat validYa
ios/xcode-deployment-target-capacitoriosTarget pengembangan iOS memenuhi persyaratan CapacitorYa
ios/xcode-signing-teamiosTim penandatangan telah ditetapkanYa
ios/xcode-bundle-id-mismatch-across-configsiosID aplikasi terkonsisten di konfigurasi XcodeYa
ios/xcode-enable-bitcode-leftoveriosSisa ENABLE_BITCODE dihapusYa
ios/xcode-swift-version-sanityiosPengaturan versi Swift terlihat wajarYa
ios/xcode-no-app-targetiosAplikasi Xcode memiliki target aplikasiYa
ios/xcode-multiple-app-targetsiosBanyak target aplikasi ditangani secara sengajaYa
ios/entitlements-vs-profile-capabilityiosEntitlements sesuai dengan kemampuan profilYa
ios/entitlements-aps-environment-vs-modeiosaps-environment sesuai dengan mode distribusiYa
ios/entitlements-associated-domains-formatiosFormat Domain Asosiasi validYa
ios/entitlements-app-groups-formatiosFormat App Groups adalah validYa
ios/capacitor-server-url-shippediosserver.url tidak dibiarkan sebagai endpoint reload / shell remote untuk build tokoYa
ios/capacitor-server-cleartextiosserver.cleartext tidak diaktifkan untuk produksiYa
ios/capacitor-allow-navigation-wildcardiosserver.allowNavigation bukanlah wildcard umumYa
ios/pods-not-installediosCocoaPods Pods / workspace ada ketika menggunakan PodsYa
ios/pods-lock-missingiosPodfile.lock memasang versi podYa
ios/pods-capacitor-missingiosPodfile menghubungkan CapacitorYa
ios/spm-package-resolved-missingiosSPM Package.resolved adaYa
ios/spm-capacitor-dependency-missingiosPackage.swift mengumumkan CapacitorYa
ios/appicon-empty-or-placeholderiosAppIcon.appiconset ada dan tidak kosongYa
ios/appicon-referenced-file-missingiosFile ikon Contents.json ada di diskYa
ios/appicon-marketing-missingiosIkon pemasaran 1024Γ—1024 adaYa
ios/spm-deployment-target-consistencyiosTarget pengembangan SPM konsistenYa
IdPlatformApa yang dicekMenggunakan secara bertahap
android/keystore-opensandroidAndroid keystore membuka dengan kata sandi yang disediakanβ€”
android/keystore-expiryAndroidCertifikasi tanda tangan Android tidak telah kedaluwarsaβ€”
android/cordova-vars-presentAndroidVariabel cordova.variables.gradle ada setelah cap sinkronβ€”
android/gradle-props-heuristicsAndroidHeuristik gradle.properties untuk gangguan konstruksi umumβ€”
android/play-sa-jsonAndroidJSON layanan Play-account ada ketika dikonfigurasiβ€”
android/flavor-existsAndroidRasa produk yang diminta adaβ€”
android/agp8-package-attrAndroidAtribut paket Manifest dihilangkan untuk AGP 8+β€”
android/manifest-well-formedBahasa AndroidAndroidManifest.xml memprosesβ€”
android/manifest-tag-typoBahasa AndroidTanda tanda manifest umum yang salahβ€”
android/manifest-namespace-uriBahasa AndroidURI namespace xmlns:android benarβ€”
android/manifest-missing-prefixBahasa AndroidAtribut Android menggunakan prefix android:β€”
android/manifest-exported-missingBahasa Androidandroid:exported ditetapkan di mana diperlukanβ€”
android/manifest-multiple-uses-sdkBahasa AndroidHanya satu elemen uses-sdk yang digunakanβ€”
android/manifest-duplicate-componentAndroidTidak ada komponen duplikatβ€”
android/manifest-unique-permissionAndroidIzin khusus adalah unikβ€”
android/manifest-hardcoded-debuggableAndroiddebuggable=true tidak dikirimkanβ€”
android/manifest-mock-locationAndroidACCESS_MOCK_LOCATION tidak dikirimkanβ€”
android/manifest-exported-unprotectedAndroidKomponen diekspor dilindungiβ€”
android/manifest-query-all-packagesAndroidAlasan QUERY_ALL_PACKAGESβ€”
android/manifest-deeplink-validandroidIntent-filter tautan Deep memanggilkan validβ€”
android/applicationid-presentandroidID aplikasi dideklarasikan di app/build.gradleβ€”
android/capacitor-build-gradle-appliedandroidcapacitor.build.gradle ada ketika diaplikasikanβ€”
android/gradle-wrapper-presentandroidFile wrapper Gradle adaβ€”
android/flavor-dimensionsandroidDimensi rasa warna dideklarasikan ketika rasa adaβ€”
android/google-services-fileandroidgoogle-services.json ada ketika plugin diaplikasikanβ€”
android/local-properties-committedandroidProperti lokal tidak dikomitkan bersama rahasiaβ€”
android/sdk-floorsandroidmin/compile/target SDK lantai terlihat validβ€”
android/target-sdk-playandroidSistem operasi target memenuhi persyaratan Playβ€”
android/min-sdk-capacitorandroidSistem operasi minimum memenuhi Capacitor persyaratanβ€”
android/version-fieldsandroidKode versi / nama versi adaβ€”
android/play-sa-accessandroidAkun layanan Play dapat mengakses aplikasi (jarak jauh)β€”

Mengirimkan shell native yang memuat produksi server.url adalah pola Capacitor yang didukung. Pilih flag prescan ios/capacitor-server-url-shipped karena sering kali merupakan sisa live-reload.

Tetapkan tanpa mengaktifkan pengecekan lainnya:

Jendela Terminal
npx @capgo/cli@latest build request <appId> --platform ios \
--prescan-skip ios/capacitor-server-url-shipped

Atau tetapkan sebagai peringatan:

Jendela Terminal
npx @capgo/cli@latest build request <appId> --platform ios \
--prescan-warn ios/capacitor-server-url-shipped