Требуется запутывание - приложение флаттера знает имена своих функций, которые можно показать с помощью класса StackTrace Дартса.Есть протестированная поддержка для запутывания.Чтобы включить его:
для Android :
Добавить в файл [ProjectRoot]/android/gradle.properties
:
extra-gen-snapshot-options=--obfuscate
для iOS:
Сначала отредактируйте [FlutterRoot]/packages/flutter_tools/bin/xcode_backend.sh
:
Найдите вызов build aot
и добавьте к нему флаг,
${extra_gen_snapshot_options_or_none}
, определенный как:
local extra_gen_snapshot_options_or_none=""
if [[ -n "$EXTRA_GEN_SNAPSHOT_OPTIONS" ]]; then
extra_gen_snapshot_options_or_none="--extra-gen-snapshot-options=$EXTRA_GEN_SNAPSHOT_OPTIONS"
fi
Чтобы применить ваши изменения, в [FlutterRoot] запустите
git commit -am "Enable obfuscation on iOS"
flutter
(Запуск «флаттера» после коммита перестраивает инструменты флаттера.)
Далее, в вашем проекте добавьте следующее к[ProjectRoot]/ios/Flutter/Release.xcconfig
file:
EXTRA_GEN_SNAPSHOT_OPTIONS=--obfuscate
PS: еще не пробовал флаг --save-obfuscation-map, упомянутый в https://github.com/dart-lang/sdk/issues/30524
Опять запутывание isn't очень хорошо проверено , как упомянуто @ mraleph.