一尘不染

如何混淆Flutter应用程序?

flutter

Flutter的Wiki提到混淆是发布模式的一种选择。
但是, flutter build 命令没有相关选项-请参阅:
flutter help -v build apk

我在这里想念什么吗?
他们是否将混淆设置为默认设置?
混淆甚至与颤动有关吗?

任何对此的指针将不胜感激。


阅读 1048

收藏
2020-08-13

共1个答案

一尘不染

需要进行混淆-扑扑的应用程序知道其功能名称,可以使用Dart的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

(在提交重建Flutter工具后运行“ flutter”。)

接下来,在您的项目中,将以下内容添加到[ProjectRoot]/ios/Flutter/Release.xcconfig文件中:

EXTRA_GEN_SNAPSHOT_OPTIONS=--obfuscate

PS:还没有尝试过 https://github.com/dart-
lang/sdk/issues/30524中提到的–
save-obfuscation-map标志 ,正如@mraleph所提到的
,对混淆的 测试* 还不 是很好。 *

2020-08-13