Troubleshooting
The failures that actually happen
Every page here explains one error: what it means, why it happens, and how to know before a build rather than forty minutes into one. No sign-up, no gate.
iOS
Provisioning profile doesn't include signing certificateWhy an iOS provisioning profile stops matching your distribution certificate, how to inspect the certificate list embedded in a .mobileprovision, and the regeneration order that fixes it permanently.Your provisioning profile or distribution certificate has expiredWhat expires when in iOS code signing, what happens to apps already in the App Store (nothing), the order to renew in, and how to be told before it happens again.altool: Unable to authenticateWhy altool rejects a valid App Store Connect API key: the filename convention, the exact directory it searches, and the issuer ID versus key ID confusion.Distribution certificate hasn’t been imported successfullyThe three real causes: a .p12 exported without its private key, a missing Apple WWDR intermediate certificate, and OpenSSL 3 refusing the cipher Keychain Access exports with.No signing certificate “iOS Distribution” foundXcode is looking in a keychain that does not contain a usable distribution identity. The difference between a certificate and an identity, and why this fails on CI but not locally.
Android
Google Play API: 403 “The caller does not have permission”The Play Developer API 403, not the Play Console login 403. The full permission chain from Google Cloud service account to app-level grant, and why it can still fail for a day after you fix it.Version code N has already been used. Try another version code.Why Play refuses a version code forever, the three reasons yours did not increment, and how to stop hitting this permanently.Your app bundle is signed with the wrong keyThe upload key versus app signing key distinction that causes almost every case, how to check which key signed your artifact, and how to reset a lost upload key.