Back to list
CANTAGESTUDIO

flutter-obfuscate-docs

by CANTAGESTUDIO

Flutter Desktop texture atlas editor for game development

2🍴 0📅 Jan 7, 2026

SKILL.md


name: flutter-obfuscate-docs description: "[Flutter] Flutter code obfuscation guide. Build commands, symbol files, stack trace deobfuscation, and limitations. (project)"

Flutter Code Obfuscation

What is Obfuscation?

Replaces function/class names with obscure symbols to make reverse engineering harder.

Warning: Obfuscation only renames symbols - it does NOT encrypt resources or provide strong security. Never store secrets in the app.


Supported Platforms

PlatformBuild Targets
Androidaar, apk, appbundle
iOSios, ios-framework, ipa
Desktoplinux, macos, macos-framework, windows
WebNot supported (uses minification instead)

Build with Obfuscation

Basic Command

flutter build <target> \
  --obfuscate \
  --split-debug-info=<symbols-directory>

Examples

# Android APK
flutter build apk --obfuscate --split-debug-info=out/android

# Android App Bundle
flutter build appbundle --obfuscate --split-debug-info=out/android

# iOS
flutter build ios --obfuscate --split-debug-info=out/ios

# iOS IPA
flutter build ipa --obfuscate --split-debug-info=out/ios

# macOS
flutter build macos --obfuscate --split-debug-info=out/macos

# Windows
flutter build windows --obfuscate --split-debug-info=out/windows

# Linux
flutter build linux --obfuscate --split-debug-info=out/linux

Important: Backup the generated symbol files!


Symbol Files

Generated in <symbols-directory>:

out/android/
├── app.android-arm.symbols
├── app.android-arm64.symbols
└── app.android-x64.symbols

Always backup these files - required for crash report deobfuscation.


Deobfuscate Stack Traces

Command

flutter symbolize -i <stack-trace-file> -d <symbols-file>

Example

# Save crash stack trace to file
echo "crash stack trace content" > crash.txt

# Deobfuscate
flutter symbolize -i crash.txt -d out/android/app.android-arm64.symbols

Generate Obfuscation Map

Creates JSON mapping of original → obfuscated names:

flutter build apk \
  --obfuscate \
  --split-debug-info=out/android \
  --extra-gen-snapshot-options=--save-obfuscation-map=out/android/map.json

Output (map.json):

["MaterialApp", "ex", "Scaffold", "ey", "MyWidget", "ez", ...]

Limitations

Code That Will Break

// BAD: Runtime type checking fails after obfuscation
expect(foo.runtimeType.toString(), equals('Foo')); // ❌

// BAD: Type name comparison
if (widget.runtimeType.toString() == 'MyWidget') { } // ❌

What's NOT Obfuscated

  • Enum names (remain unchanged)
  • String literals
  • Asset paths

Quick Reference

TaskCommand
Build obfuscated APKflutter build apk --obfuscate --split-debug-info=out/android
Build obfuscated IPAflutter build ipa --obfuscate --split-debug-info=out/ios
Deobfuscate crashflutter symbolize -i crash.txt -d app.android-arm64.symbols
Generate mapAdd --extra-gen-snapshot-options=--save-obfuscation-map=map.json
Check optionsflutter build <target> -h

Workflow Summary

1. Build with --obfuscate --split-debug-info=<dir>
2. Backup symbol files (*.symbols)
3. Distribute obfuscated app
4. When crash occurs: flutter symbolize -i <crash> -d <symbols>

Official Docs

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon