Flutter代码混淆

总结:打包时增加一个--obfuscate 字段就行,flutter在打包时会根据android和iOS的配置自动进行代码混淆

打包命令

  • --obfuscate 启用代码混淆
  • --split-debug-info=./build 是将调试信息(生成的符号映射文件)放到build下
  • --release 构建release版本
shell 复制代码
flutter build apk --release --obfuscate --split-debug-info=./build
shell 复制代码
flutter build ipa --release --obfuscate --split-debug-info=./build

android配置

android/app/build.gradle

  • 在release中新增混淆规则
  • minifyEnabled: 是否开启了代码混淆功能,会对应用程序的代码进行优化和缩减,以减小 APK 的大小并提高安全性
  • shrinkResources:是否删除未使用的资源文件
  • proguardFiles:配置混合规则
  • proguard-android-optimize.txt 是 Android SDK(proguard)提供的一个默认配置文件,还有一个常用的配置文件是:proguard-android.txt
  • proguard-android-optimize.txt 启用更多的优化策略,减少 APK 大小并进行代码优化。
  • proguard-android.txt 只是基本的混淆和压缩功能,不需要额外的优化。
kotlin 复制代码
buildTypes {
    release {
        ....
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debug{
       ....
    }
}
  • 新增混淆配置文件proguard-rules.pro
  • ignorewarnings:该规则会忽略任何警告信息。即使ProGuard/R8在混淆过程中发现一些潜在问题或警告,也不会阻止构建过程。
  • -keep class 保持某些包或类不被混淆
kotlin 复制代码
# Flutter Obfuscation
-ignorewarnings
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.embedding.** { *; }
-keep class io.flutter.embedding.engine.** { *; }
-keep class io.flutter.embedding.android.** { *; }
-keep class io.flutter.embedding.engine.plugins.** { *; }
-keep class io.flutter.plugin.common.** { *; }
-keep class io.flutter.plugin.platform.** { *; }
  • 上传调试文件(可选)
    • google play上架使用,否则会有警告:此 App Bundle 包含原生代码,您尚未上传调试符号文件
arduino 复制代码
  defaultConfig {
        ...
        ndk {
            debugSymbolLevel 'SYMBOL_TABLE'
        }
        ....
    }

iOS配置

  • Xcode 打开代码,OTHER_SWIFT_FLAGS 增加-D DART_OBFUSCATION宏
相关推荐
半摆烂日常3 小时前
低代码平台API对接实践:接口鉴权与数据同步的完整实现
android·低代码·rxjava
事圆则缓3 小时前
volatile 使用场景全解析:它能保证什么,又解决不了什么
android
蒲公英内测分发4 小时前
智能投影仪参加海外展会,未上架的 Android 配套 App 怎么让客户限时试用?
android
ii_best4 小时前
按键精灵手机端开发安卓版实战:手写一个可最小化、可拖动的「运行日志悬浮窗」(附完整 源码 + 踩坑记录)
android·ios·智能手机·自动化·ai编程·按键精灵
终端安全笔记4 小时前
安卓做 MDM 管控,先分清三种注册入口
android·安全·智能手机
乌萨达6 小时前
手机模拟器安卓怎么用?电脑安装应用、玩手游与账号同步指南
android·智能手机·电脑·雷电模拟器
美狐美颜SDK开放平台6 小时前
Android与iOS直播APP美颜有什么区别?视频美颜SDK开发详解
android·ios·音视频·视频美颜sdk
律宏阔8 小时前
Flutter Riverpod 3:统一打印 Provider 错误与自动重试日志
前端·flutter
春猿火8 小时前
某市-2026【网安·论道】misc-afterimage_note-wp
android
m0_738185829 小时前
Flutter 鸿蒙化实战:flutter_exif_plugin 适配 OpenHarmony,图片 EXIF 读写
flutter·华为·harmonyos·鸿蒙