Debug builds run fine, but release builds fail with 'keystore was tampered with' on Android or 'no matching provisioning profile' on iOS.

Verify the keystore credentials and the provisioning profile or certificate exactly match the app's bundle identifier and are correctly referenced in the build configuration.

Step-by-Step Guide

1

For Android, confirm the keystore path and passwords in key.properties match the actual signing file

2

Check storePassword and keyPassword carefully for typos or trailing spaces

3

Update the keystore reference in build.gradle if the file was moved

4

For iOS, open Xcode's Signing & Capabilities tab and check the Team and bundle identifier

5

Verify the provisioning profile hasn't expired in the Apple Developer account

6

Use automatic signing in Xcode where possible to avoid manual profile mismatches

7

For Flutter, run flutter build appbundle --release and flutter build ipa --release separately and read the full output

8

Confirm the applicationId/bundle ID matches exactly what's registered in Play Console / App Store Connect

Found an issue with this solution?

Related Topics

android keystore backup best practicesios provisioning profile expiredflutter release build vs debug