wiki de Flutter mentionne que l'obfuscation est un opt-in en mode release.
Et pourtant, la commande flutter build n'a pas d'option pertinente - voir:flutter help -v build apk
Est-ce que j'ai râté quelque chose?
Ont-ils fait de l'obfuscation la valeur par défaut?
L'obscurcissement est-il même pertinent pour le flottement?
Tout pointeur à ce sujet serait très apprécié.
L'obscurcissement est nécessaire - une application Flutter connaît ses noms de fonction, qui peuvent être affichés en utilisant la classe StackTrace de Dart. Il y a un support sous-testé pour l'obfuscation. Pour l'activer:
Pour Android :
Ajouter au fichier [ProjectRoot]/Android/gradle.properties
:
extra-gen-snapshot-options=--obfuscate
Pour iOS:
Tout d'abord, modifiez [FlutterRoot]/packages/flutter_tools/bin/xcode_backend.sh
:
Localisez le build aot
appeler et y ajouter un indicateur,
${extra_gen_snapshot_options_or_none}
défini comme:
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
Pour appliquer vos modifications, dans [FlutterRoot], exécutez
git commit -am "Enable obfuscation on iOS"
flutter
(L'exécution de "flutter" après la validation reconstruit les outils de flutter.)
Ensuite, dans votre projet, ajoutez le suivant à [ProjectRoot]/ios/Flutter/Release.xcconfig
fichier:
EXTRA_GEN_SNAPSHOT_OPTIONS=--obfuscate
PS: Je n'ai pas essayé le drapeau --save-obfuscation-map mentionné à https://github.com/Dart-lang/sdk/issues/30524
Encore une fois, l'obscurcissement n'est pas très bien testé , comme mentionné par @mraleph.
Pour le moment, l'obscurcissement n'est pas directement exposé via la CLI Flutter.
Vous pouvez essayer de passer explicitement des arguments au gen_snapshot
comme ça:
flutter build --extra-gen-snapshot-options=--obfuscate,--save-obfuscation-map=build/symbols.json --release
Remarque: cette prise en charge de l'obscurcissement n'est pas très bien testée et pourrait ne pas fonctionner pour le moment.