Lebih cepat ke konten

Periksa konfigurasi pembangunan

Sebelum Capgo Cloud Build mengunggah proyek Anda, CLI menjalankan pemeriksaan awal 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 diketahui gagal dengan cepat dengan pesan kesalahan yang jelas.

FlagPengaruh
--no-prescanLebihkan Sken Semua
--prescan-ignore-fatal atau --ignore-fatal Pada build prescan)Sken, cetak laporan, tidak pernah menghalangi
--fail-on-warningsTangani peringatan sebagai fatal (CI)

--no-prescan dan --prescan-ignore-fatal sembunyikan atau menghindari 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 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-opensiosiOS .p12 dapat dibuka dengan kata sandi yang disediakanโ€”
ios/p12-expiryiosSertifikat tanda tangan iOS tidak kadaluarsaโ€”
ios/profile-expiryiosProfil pengaturan tidak kadaluarsaโ€”
ios/profile-bundle-matchiOSID bundle profil provisioning aplikasi sesuaiโ€”
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 pengesahan telah ditetapkanYa
ios/xcode-bundle-id-mismatch-across-configsiOSID aplikasi konsisten di konfigurasi XcodeYa
ios/xcode-enable-bitcode-leftoveriOSENABLE_BITCODE yang tersisa dihapusYa
ios/xcode-swift-version-sanityiOSPengaturan versi Swift terlihat wajarYa
ios/xcode-no-app-targetiOSProjek Xcode memiliki target aplikasiYa
ios/xcode-multiple-app-targetsiosTarget aplikasi beberapa 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 SahYa
ios/entitlements-app-groups-formatiosFormat App Groups SahYa
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-installediOSPod CocoaPods / 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 terresolusi 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-consistencyiOSTujuan pengembangan SPM konsistenYa
IDPlatformApa yang dicekMenggunakan 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-typoAndroidPenyebab umum kesalahan tag manifestโ€”
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 alasanโ€”
android/manifest-deeplink-validandroidLink akses dalam aplikasi 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 telah dideklarasikan 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-fieldsandroidversiCode / versiNama hadirโ€”
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