Flutter中的代码混淆

作者: 吉原拉面 | 来源:发表于2018-08-21 15:01 被阅读323次

  原文链接:https://github.com/flutter/flutter/wiki/Obfuscating-Dart-Code

  以下内容均来自Flutter Github官方Wiki。

  代码混淆可以隐藏你的Dart代码中的函数和类名,让反编译App变得困难。
  注:Dart的混淆还没有经过完全的测试,如果发现问题请到GitHub上提 issue 。关于混淆的问题,还可以参考 Stack Overflow 上的这个问题。
  Flutter中的混淆配置其实是在Android和iOS端分别配置的。

Android

  在<ProjectRoot>/android/gradle.properties文件中添加如下代码:

extra-gen-snapshot-options=--obfuscate

  默认情况下,Flutter不会混淆或者缩减Android host,如果你使用了第三方的Java或者Android库,那么你可能需要减小APK体积,或者防止你的App被反编译。

  • Step 1:配置Proguard文件
    新建/android/app/proguard-rules.pro文件,然后添加如下配置:
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }

上面的配置只保护Flutter库,其他额外的库(比如Firebase)需要你自己添加配置。

  • Step 2:
    打开/android/app/build.gradle文件,定位到buildTypes处,在release配置中将minifiyEnableduseProguard标志设为true,同时还需要指向Step1中创建的ProGuard文件:
android {

    ...

    buildTypes {

        release {

            signingConfig signingConfigs.debug

            minifyEnabled true
            useProguard true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }
    }
}

注意混淆和缩减无用代码会加长App的编译时间。

iOS

  • Step 1:修改 "build aot"
    <ProjectRoot>/packages/flutter_tools/bin/xcode_backend.sh文件中添加build aotflag:
${extra_gen_snapshot_options_or_none}

然后定义这个flag:

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
  • Step 2:应用你的修改
    在你的App的根目录下运行以下两条命令:
git commit -am "Enable obfuscation on iOS"
flutter
  • Step 3:更改release配置
    <ProjectRoot>/ios/Flutter/Release.xcconfig中添加下面这行:
EXTRA_GEN_SNAPSHOT_OPTIONS=--obfuscate

相关文章

  • flutter ios 代码混淆 ipa 制作

    一些app不适合发布在应用商店,那flutter 如何构建ipa呢。 代码混淆 flutter的代码混淆就是混淆代...

  • Flutter中的代码混淆

      原文链接:https://github.com/flutter/flutter/wiki/Obfuscatin...

  • Flutter 混淆打包以及一些注意事项

    混淆Dart代码 Flutter 1.16.2 以上默认支持混淆,不需要特殊设置,只需要在构建命令后面加上 具体可...

  • Android 代码混淆

    代码混淆的作用 代码混淆主要作用是使代码在编译过程中让原本方便阅读的代码进行一定规则的混淆和对代码进行一定量的优化...

  • Android中的代码混淆

    混淆规则 因为Android是使用Java开发的,所以开发者可以使用ProGuard对代码进行混淆。SDK已经集成...

  • Android项目的代码混淆

    代码混淆: 代码混淆有两种重要功能。其一,混淆代码。其二,优化代码。有的混淆是根据自己写得代码有关,需要根据异常错...

  • iOS 初探代码混淆(OC)

    iOS 初探代码混淆(OC) iOS 初探代码混淆(OC)

  • ProGuard详解

    Android分享:代码混淆那些事Android代码混淆之混淆规则Android-Dev-Favorites An...

  • Android Studio代码混淆

    前言 最近两天研究了一下,如何在Android Studio中配置代码混淆,代码混淆不仅仅可以保护我们的代码,他还...

  • Flutter混合开发 - 调用iOS中的方法

    Flutter项目中,调用iOS代码步骤:(共三步) 1.flutter代码中,添加MethodChannel 2...

网友评论

    本文标题:Flutter中的代码混淆

    本文链接:https://www.haomeiwen.com/subject/ivfjiftx.html