欢迎您光临深圳塔灯网络科技有限公司!
电话图标 余先生:13699882642

网站百科

为您解码网站建设的点点滴滴

Flutter中的代码混淆

发表日期:2018-08 文章编辑:小灯 浏览次数:3202

  原文链接: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.debugminifyEnabled true useProguard trueproguardFiles 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 

本页内容由塔灯网络科技有限公司通过网络收集编辑所得,所有资料仅供用户学习参考,本站不拥有所有权,如您认为本网页中由涉嫌抄袭的内容,请及时与我们联系,并提供相关证据,工作人员会在5工作日内联系您,一经查实,本站立刻删除侵权内容。本文链接:https://www.dengtar.com/17671.html
相关APP开发
    SQL执行错误,请检查