Lebih cepat ke konten

Periksa konfigurasi build

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

Juga menjalankan secara mandiri:

Tampilan 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 cek tidak dikenal gagal dengan cepat dengan pesan kesalahan yang jelas.

PilihEfek
--no-prescanLebihkan Skan Seluruhnya
--prescan-ignore-fatal atau --ignore-fatal Pada build prescan)Skan, cetak laporan, tidak pernah blokir
--fail-on-warningsTangani peringatan sebagai fatal (CI)

--no-prescan dan --prescan-ignore-fatal sembunyikan atau lewati semua periksa lainnya. Gunakan pengaturan per-periksaan jika Anda hanya tidak setuju dengan satu aturan.

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

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

IdPlatformApa yang diperiksaMengenakan secara bertahap
shared/apikey-permissioniOS, AndroidKunci API dapat meminta bangun nativeโ€”
shared/app-existsiOS, AndroidAplikasi id ada dan terlihat untuk kunci APIโ€”
shared/credentials-savediOS, AndroidKredensial iOS/Android yang diperlukan disimpan secara lokalโ€”
shared/cap-sync-staleiOS, AndroidAset web dibangun dan plugin Capacitor disinkronkanโ€”
shared/node-linker-layoutiOS, AndroidTata letak node_modules bekerja dengan jalur native Capacitorโ€”
shared/bundle-id-consistencyiOS, AndroidID aplikasi Capacitor sesuai dengan ID paket native / applicationIdโ€”
IdPlatformApa yang dicekMenggunakan secara bertahap
ios/p12-opensiosSertifikat pribadi iOS terbuka dengan kata sandi yang disediakanโ€”
ios/p12-expiryiosSertifikat tanda tangan iOS tidak kedaluwarsaโ€”
ios/profile-expiryiosProfil pengaturan tidak kedaluwarsaโ€”
ios/profile-bundle-matchiOSID bundle profil provisioning sesuai dengan aplikasiโ€”
ios/profile-type-vs-modeiOSJenis profil sesuai dengan mode app_store / ad_hocโ€”
ios/cert-profile-pairingiOSSertifikat terintegrasi dalam profil provisioningโ€”
ios/targets-coverediOSSemua target iOS memiliki profil provisioningโ€”
ios/infoplist-sanityiOSInfo.plist memiliki kunci versi / identitas yang diperlukanโ€”
ios/asc-key-validiOSKunci API App Store Connect terlihat validโ€”
ios/asc-key-accessiOSASC API dapat mengakses aplikasi (jarak jauh)โ€”
ios/plist-bundle-id-formatiOSFormat CFBundleIdentifier adalah validYa
ios/plist-version-short-formatiOSFormat CFBundleShortVersionString adalah validYa
ios/plist-version-build-formatiOSFormat CFBundleVersion adalah validYa
ios/plist-encryption-complianceiOSApa itu ITSAppUsesNonExemptEncryption yang dideklarasikan?Ya
ios/plist-ats-arbitrary-loadsiosNSAllowsArbitraryLoads tidak diaktifkan untuk produksiYa
ios/plist-launch-storyboardiosApakah layar peluncuran dideklarasikan?Ya
ios/plist-orientations-multitaskingiosKonfigurasi orientasi / multitasking konsisten?Ya
ios/plist-orientations-presentiosOrientasi Antarmuka yang Dapat Dibantu oleh UI telah DideklarasikanYa
ios/plist-display-nameiosNama Tampilan telah DitetapkanYa
ios/plist-background-modes-sanityiosNilai Mode Latar Belakang UI terlihat SahYa
ios/xcode-deployment-target-capacitoriosTarget Pengembangan iOS memenuhi persyaratan CapacitorYa
ios/xcode-signing-teamiosTim pengembang yang menandatangani telah ditetapkanYa
ios/xcode-bundle-id-mismatch-across-configsiOSID aplikasi kemas konsisten di konfigurasi XcodeYa
ios/xcode-enable-bitcode-leftoveriOSENABLE_BITCODE yang tersisa dihapusYa
ios/xcode-swift-version-sanityiOSPengaturan versi Swift terlihat seimbangYa
ios/xcode-no-app-targetiOSProjek Xcode memiliki target aplikasiYa
ios/xcode-multiple-app-targetsiosDitangani sengaja beberapa target aplikasiYa
ios/entitlements-vs-profile-capabilityiosAutorisasi sesuai dengan kemampuan profilYa
ios/entitlements-aps-environment-vs-modeiosaps-environment sesuai dengan mode distribusiYa
ios/entitlements-associated-domains-formatiosFormat Domain yang terkait adalah validYa
ios/entitlements-app-groups-formatiOSFormat App Groups adalah validYa
ios/capacitor-server-url-shippediOSserver.url tidak dibiarkan sebagai endpoint reload hidup / shell remote untuk pembangunan tokoYa
ios/capacitor-server-cleartextiOSserver.cleartext tidak diaktifkan untuk produksiYa
ios/capacitor-allow-navigation-wildcardiOSserver.allowNavigation bukanlah wildcard umumYa
ios/pods-not-installediOSPods CocoaPods / workspace ada saat menggunakan PodsYa
ios/pods-lock-missingiOSPenguncian versi pod ada di Podfile.lockYa
ios/pods-capacitor-missingiOSPodfile menghubungkan CapacitorYa
ios/spm-package-resolved-missingiOSPaket SPM Resolved adaYa
ios/spm-capacitor-dependency-missingiOSPaket Swift menyatakan 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 pengiriman SPM konsistenYa
IDPlatformApa yang diperiksaMengenakan secara bertahap
android/keystore-opensandroidAndroid keystore dibuka dengan kata sandi yang disediakanโ€”
android/keystore-expiryandroidSertifikat tanda tangan Android tidak kedaluwarsaโ€”
android/cordova-vars-presentandroidcordova.variables.gradle ada setelah cap sinkronisasiโ€”
android/gradle-props-heuristicsandroidHeuristik gradle.properties untuk gangguan konstruksi umumโ€”
android/play-sa-jsonandroidJSON akun layanan Play ada ketika dikonfigurasiโ€”
android/flavor-existsandroidRasa produk flavor yang diminta adaโ€”
android/agp8-package-attrandroidManifest package= atribut dihapus untuk AGP 8+โ€”
android/manifest-well-formedAndroidAndroidManifest.xml diprosesโ€”
android/manifest-tag-typoAndroidKasus umum tanda tag manifestโ€”
android/manifest-namespace-uriAndroidxmlns:android URI namespace benarโ€”
android/manifest-missing-prefixAndroidAtribut Android menggunakan prefix android: โ€”
android/manifest-exported-missingAndroidandroid:exported diatur di mana diperlukanโ€”
android/manifest-multiple-uses-sdkAndroidHanya satu elemen 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 yang diekspor dilindungiโ€”
android/manifest-query-all-packagesandroidQUERY_ALL_PACKAGES justificationโ€”
android/manifest-deeplink-validandroidIntent penerapan deeplink tampak validโ€”
android/applicationid-presentandroidID aplikasi telah dideklarasikan di app/build.gradleโ€”
android/capacitor-build-gradle-appliedandroidcapacitor.build.gradle ada ketika diterapkanโ€”
android/gradle-wrapper-presentandroidFile wrapper Gradle adaโ€”
android/flavor-dimensionsandroidDimensi rasa memiliki deklarasi ketika rasa adaโ€”
android/google-services-fileandroidada google-services.json ketika plugin diterapkanโ€”
android/local-properties-committedandroidlocal.properties tidak dikomitkan dengan rahasiaโ€”
android/sdk-floorsandroidtingkat min/compile/target SDK terlihat validโ€”
android/target-sdk-playandroidtargetSdk memenuhi persyaratan Playโ€”
android/min-sdk-capacitorandroidminSdk memenuhi Capacitor persyaratanโ€”
android/version-fieldsandroidversionCode / versionName adaโ€”
android/play-sa-accessandroidAkun layanan dapat mengakses aplikasi (remote)โ€”

Menyebarkan shell native yang memuat produksi server.url adalah pola Capacitor yang didukung. Flag prescan ios/capacitor-server-url-shipped karena sering kali merupakan sisa reload hidup.

Konfirmasinya tanpa menonaktifkan cek lainnya:

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

atau tetapkan visibilitas sebagai peringatan:

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