GOOGLE PLAY STORE
“I built my app with AI. Google Play rejected my first upload.”
Before: “signed in debug mode”, then “use a different package name”, then “Version code 1 has already been used” — one rejection at a time.
With ShipDoctor: scan lists them all at once. fix --bundle-id sets up release signing and a unique package name, and tells you the one keytool command to run.
XCODE · APPLE
“It runs on my iPhone. Xcode Archive fails.”
Before: running from Xcode uses development signing. An App Store archive needs a distribution certificate, a team on every target and a profile per extension.
With ShipDoctor: fix --team sets the team on every target. log explains certificate/profile errors step by step.
APPLE APP STORE
“App Store Connect rejected my build.”
Before: an email with ITMS-91053 or ITMS-90683 and a guideline number.
With ShipDoctor: scan catches missing privacy manifests and purpose strings before you upload, and fix adds them. Already waiting in review? No tool can speed up Apple’s queue, but you can make sure it doesn’t come back rejected.
GOOGLE PLAY STORE
“Google Play says my update doesn’t support 16 KB pages.”
Before: the warning names no library.
With ShipDoctor: aab names the unaligned .so file, so you upgrade the one dependency that ships it.
BUILD SCRIPTS · CI
“My AI-written build script works on my Mac and breaks in CI.”
Before: “bad interpreter: ^M”, “No such module”, or an iOS job on a Linux runner.
With ShipDoctor: scan checks your .sh and CI files. fix repairs line endings, adds set -e, switches to the .xcworkspace and moves iOS jobs to macOS. Hard-coded passwords are flagged for you to rotate, never silently edited.