Obfuscation

Ship obfuscated Dart code on Android and iOS, and keep patching it.

Turn it on

  1. Set it in overpush.yaml

    obfuscate: true

    Use this setting rather than passing Flutter's own obfuscation flags yourself: OverPush needs to know, so it can obfuscate every patch the same way.

  2. Release again

    Run overpush release androidoverpush release ios. Turning obfuscation on or off makes a new release, so it goes to the store like any other.

  3. Patch as usual

    overpush patch obfuscates the patch the same way as its release. There's nothing extra to pass.

Platforms

AndroidSupported, from Mac, Windows or Linux.
iOSSupported, from Apple silicon and Intel Macs.

Reading crash reports

Stack traces from an obfuscated app show renamed symbols. The files to decode them are kept for each release and each patch, on the computer that built them. Keep them with your build artifacts, and use the ones for the release and patch the crashing device was running. OverPush.currentPatchNumber() tells you which patch that was; see Update strategies.

What's next

ConfigurationEvery option in overpush.yaml. SecurityHow patches are protected.