Android & iOS build error fixes
81 errors that stop React Native, Expo and native apps from building or reaching Google Play and the App Store — what each one means and exactly how to fix it.
$ npx releasemedic log build.logPaste or pipe any failed Gradle, Xcode, CocoaPods, fastlane or EAS log, or a store rejection email — ReleaseMedic finds the real error for you.
iOS / Xcode
- Provisioning profile does not contain your signing certificate
- A target has no development team
- No provisioning profile for this bundle ID
- Profile belongs to a different bundle ID (usually an extension)
- Distribution certificate missing from this Mac
- Keychain is locked (typical in CI / SSH)
- Pods out of sync
- CocoaPods cannot resolve a pod version
- Header/module not found
- A build script phase failed (often the JS bundle step)
- Two build steps output the same file
- Linker cannot find symbols
- Command Line Tools point to the wrong place
- Privacy manifest missing a required-reason API
- Missing Info.plist purpose string
- Built with an outdated Xcode/SDK
- Build number already used
- App icon has transparency
- Pods resource script is stale
- JavaScript bundle was not built into the app
- Archive built, but exporting the .ipa failed
- Xcode cannot reach your Apple Developer account
- Certificate limit reached
- CocoaPods installed for the wrong CPU (Apple Silicon)
- Terminal encoding is not UTF-8
- CocoaPods is not installed
- Upload rejected: invalid signature or profile
- Push notification entitlement missing
- App icon set missing or misconfigured
- iPad orientation / multitasking settings invalid
- A third-party SDK has no privacy manifest
- Framework contains simulator architectures
- Xcode cannot find Node
- Bundle script calls 'expo export:embed' but the Expo CLI is not available
- A build script could not find a file it needs (usually sentry-cli or node)
- Swift code in a library failed to compile
- Missing dSYM warning (not the reason an upload fails)
- A framework still contains bitcode
Android / Gradle
- Release keystore file not found
- Wrong keystore password
- Bundle signed with a different key than Play expects
- Uploaded a debug-signed bundle
- versionCode already used
- targetSdkVersion too low for Play
- Native libraries are not 16 KB page-aligned
- Android SDK not found
- Wrong Java (JDK) version
- Duplicate classes from two dependencies
- Gradle ran out of memory
- Library missing namespace (AGP 8+)
- compileSdk too low for a dependency
- Installed app was signed with a different key
- Dex method limit / merge failure
- Foreground service permission not declared in Play Console
- Background location policy rejection
- Privacy policy / Data safety problem
- Package name already used
- 64-bit requirement not met
- JAVA_HOME points nowhere
- JavaScript bundle step failed (Android release)
- Gradle could not download dependencies
- The gradlew script is outdated or damaged
- JavaScript bundle step failed (Android release)
- Gradle ran out of stack space
- An image or resource file is invalid
- Android resource linking failed
- Native (C++) build failed
- Two libraries ship the same native .so file
- A library failed to compile
- A build.gradle file has an error
- Autolinking got text that is not JSON
- Broken symbolic link in node_modules
- A dependency could not be processed (wrong or incompatible version)
- The uploaded build is debuggable
- A permission is declared twice with different maxSdkVersion