web-dev-qa-db-fra.com

Comment obscurcir les applications Flutter?

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é.

16
Ehud Banunu

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.

13
Ehud Banunu

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.

1