web-dev-qa-db-ja.com

Flutterアプリを難読化する方法は?

Flutterのwiki 難読化はリリースモードのオプトインであると記載されています。
それでも、flutter buildコマンドには関連するオプションがありません-参照:
flutter help -v build apk

ここで何か不足していますか?
難読化をデフォルトにしましたか?
難読化はフラッターにも関係がありますか?

これについてのご意見をお待ちしております。

16
Ehud Banunu

難読化が必要です。フラッターアプリは、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  

(コミット後に「フラッター」を実行するとフラッターツールが再構築されます。)

次に、プロジェクトで以下を[ProjectRoot]/ios/Flutter/Release.xcconfigファイルに追加します。

EXTRA_GEN_SNAPSHOT_OPTIONS=--obfuscate

PS: https://github.com/Dart-lang/sdk/issues/30524 に記載されている--save-obfuscation-mapフラグを試していない
繰り返しますが、難読化はうまくいきませんテスト済み 、@ mralephで言及されているように

13
Ehud Banunu

現時点では、難読化はフラッターCLIを介して直接公開されていません。

次のように、gen_snapshotに引数を明示的に渡すことができます。

flutter build --extra-gen-snapshot-options=--obfuscate,--save-obfuscation-map=build/symbols.json --release

注:難読化のサポートは十分にテストされておらず、現時点では機能しない可能性があります。

1