Pembangunan periksa pra

Periksa konfigurasi build

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

Prescan ini 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 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 dikenal gagal dengan cepat dengan pesan kesalahan yang jelas.

FlagPengaruh
--no-prescanLebihkan seluruh sken
--prescan-ignore-fatal (atau --ignore-fatal pada build prescan)Sken, cetak laporan, tidak pernah blokir
--fail-on-warningsTangani peringatan sebagai fatal (CI)

--no-prescan dan --prescan-ignore-fatal sembunyikan atau lewati semua periksaan 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 berupa informasi 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 pemasangan iOS terbuka dengan kata sandi yang disediakanโ€”
ios/p12-expiryiOSSertifikat pemasangan iOS tidak kedaluwarsaโ€”
ios/profile-expiryiOSProfil pemasangan tidak kedaluwarsaโ€”
ios/profile-bundle-matchiOSID bundle profil provisioning aplikasi sesuaiโ€”
ios/profile-type-vs-modeiOSJenis profil sesuai dengan mode app_store / ad_hoc aplikasiโ€”
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 App Store Connect API aplikasi terlihat validโ€”
ios/asc-key-accessiOSASC API dapat mengakses aplikasi (jarak jauh)โ€”
ios/plist-bundle-id-formatiOSFormat CFBundleIdentifier validYa
ios/plist-version-short-formatiOSFormat CFBundleShortVersionString validYa
ios/plist-version-build-formatiOSFormat CFBundleVersion validYa
ios/plist-encryption-complianceiOSAplikasi Menggunakan Enkripsi Non-Exempt yang DideklarasikanYa
ios/plist-ats-arbitrary-loadsiosNSAllowsArbitraryLoads tidak diaktifkan untuk produksiYa
ios/plist-launch-storyboardiosLayar Peluncuran DideklarasikanYa
ios/plist-orientations-multitaskingiosPengaturan Orientasi / Multitasking KonsistenYa
ios/plist-orientations-presentiosUISupportedInterfaceOrientasi yang DideklarasikanYa
ios/plist-display-nameiosNama Tampilan DitetapkanYa
ios/plist-background-modes-sanityiosNilai UIBackgroundModes terlihat validYa
ios/xcode-deployment-target-capacitoriosTarget Pengiriman iOS memenuhi persyaratan CapacitorYa
ios/xcode-signing-teamiosTim pengembang tanda tangan telah ditetapkanYa
ios/xcode-bundle-id-mismatch-across-configsiOSID aplikasi kemas konsisten di konfigurasi XcodeYa
ios/xcode-enable-bitcode-leftoveriOSSisa ENABLE_BITCODE dihapusYa
ios/xcode-swift-version-sanityiOSPengaturan versi Swift terlihat wajarYa
ios/xcode-no-app-targetiOSProject Xcode memiliki target aplikasiYa
ios/xcode-multiple-app-targetsiOSBanyak target aplikasi dihandle secara sengajaYa
ios/entitlements-vs-profile-capabilityiOSEntitlements cocok dengan kemampuan profilYa
ios/entitlements-aps-environment-vs-modeiOSaps-environment cocok dengan mode distribusiYa
ios/entitlements-associated-domains-formatiOSFormat Domain 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 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-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 dicekMengenakan 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 masalah konstruksi umumโ€”
android/play-sa-jsonandroidJSON akun layanan Play ada ketika dikonfigurasiโ€”
android/flavor-existsandroidRasa produk flavor yang diminta adaโ€”
android/agp8-package-attrandroidPaket Manifest atribut dihapus untuk AGP 8+โ€”
android/manifest-well-formedAndroidAndroidManifest.xml diprosesโ€”
android/manifest-tag-typoAndroidKasus kesalahan tag manifest umumโ€”
android/manifest-namespace-uriAndroidURI namespace xmlns:android 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 justifikasiโ€”
android/manifest-deeplink-validandroidTautan deep melihat 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-fileandroidada google-services.json ketika plugin diterapkanโ€”
android/local-properties-committedandroidlocal.properties tidak dikomitkan bersama 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-fieldsandroidversiCode / versiNama adaโ€”
android/play-sa-accessandroidAkun layanan dapat mengakses aplikasi (remote)โ€”

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

Tetapkan peringatan tanpa menonaktifkan periksa 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