Dart代码混淆

代码混淆是修改应用程序的二进制文件以使其更难被人类理解的过程。混淆会在编译后的 Dart 代码中隐藏函数和类名称,将每个符号替换为另一个符号。

Flutter 的代码混淆仅适用于release版本。

请注意,混淆代码不会加密资源,也不会防止逆向工程。它只会重命名名称更晦涩的符号。

支持的target

  • aar
  • apk
  • appbundle
  • ios
  • ios-framework
  • ipa
  • linux
  • macos
  • macos-framework
  • windows

Web 应用程序不支持混淆。可以缩小 Web 应用程序,从而提供类似的结果。当构建 Flutter 网络应用程序的发布版本时,网络编译器会缩小该应用程序。

混淆

flutter build apk --obfuscate --split-debug-info=/<project-name>/<directory>

混淆二进制文件后,保存符号文件。如果想要对堆栈跟踪进行去混淆处理,就需要这个符号文件。

在发布模式下使用带有 --obfuscate 和 --split-debug-info 选项的 flutter build 命令。 --split-debug-info 选项指定 Flutter 输出调试文件的目录。 在混淆的情况下,它输出一个符号映射。

--split-debug-info 选项也可以在没有 --obfuscate 的情况下使用,以提取 Dart 程序符号,减少代码大小。

读取混淆的堆栈

找到匹配的符号文件。例如,Android arm64 设备的崩溃需要 app.android-arm64.symbols。

向 flutter symbolize 命令提供堆栈跟踪(存储在文件中)和符号文件。例如:

flutter symbolize -i <stack trace file> -d out/android/app.android-arm64.symbols

Dart代码混淆的更多相关文章

  1. 【Android】Android Studio 进行代码混淆,打包release APK

    整了一天,感觉坑挺多. 1. 选择如图中的选项Android Studio进行签名打包: 2. 填写APP对应的信息:(最好用个文本记下来放在项目中同步给Team) - Key store path: ...

  2. ProGuard代码混淆技术详解

    前言     受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI ...

  3. Android Studio代码混淆插件

    之前给公司的App添加代码混淆,在代码的混淆过程也遇到了不少的问题,再加上最近学习了一下Android Studio插件的开发,所以就开发一个代码混淆插件方便项目的代码混淆. 截图 第三方库列表清单 ...

  4. 77.Android之代码混淆

    转载:http://www.jianshu.com/p/7436a1a32891 简介 作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使 ...

  5. Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)

    第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. ...

  6. 推荐一个C#代码混淆器 .NET Reactor【转】

    C#的代码辛苦写出来之后,一个反射工具,就可以完全显露出来. 当然,在做项目时,这个功能还不错.因为我就曾在一个项目上使用C#,没有进行任何混淆.结果在项目二年多之后,需要做一些调整,自己保存的源代码 ...

  7. Android代码混淆官方实现方法

    首先查看一下 “project.properties” 这个文件: # This file is automatically generated by Android Tools.# Do not m ...

  8. android 常用第三方包的代码混淆

    首先在:project.properties 文件下,启动代码混淆 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:pro ...

  9. Android 代码混淆 防止反编译

    为了防止代码被反编译,因此需要加入混淆.混淆也可以通过第三方进行apk混淆,也可以用android中的proguard进行混淆. 混淆步骤: 1.配置混淆文件,名字可以随意,在这里使用proguard ...

  10. Android 编程下的代码混淆

    什么是代码混淆 Java 是一种跨平台的.解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中.由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名.方法名,并且通 ...

随机推荐

  1. iOS中在导航条设置搜索框使用小结

    最近在项目开发中用到了搜索框,一般是设置在列表顶部或者导航条上.下面说一下在导航条上使用搜索框的思路,刚开始是直接将CCSearchBar添加到导航条,在viewWillDisappear设置隐藏,在 ...

  2. element的upload 图片上传主函数

    /** 图片上传 */ async UploadImage (event, file, filelist) { // 清空坐标 this.formModel.ITEM_XY = [0, 0] this ...

  3. Nuxt.js 应用中的 restart 事件钩子详解

    title: Nuxt.js 应用中的 restart 事件钩子详解 date: 2024/10/14 updated: 2024/10/14 author: cmdragon excerpt: re ...

  4. linux 基础(3)基本文件操作

    目录的基本操作 在 linux 文件系统里,以斜杠 / 开头的路径是绝对路径,从根目录开始寻找:其他的路径则都是相对路径,从当前目录(working directory)开始寻找. 相对目录中常用的符 ...

  5. 乐观锁CAS

    在 Java 中,我们可以使用 synchronized 关键字和 CAS 来实现加锁效果. 悲观锁: 对于悲观锁来说,它总是认为每次访问共享资源时会发生冲突,所以必须对每次数据操作加上锁,以保证临界 ...

  6. Python 潮流周刊#74:创下吉尼斯世界记录的 Python 编程课(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. 3.21 Linux PATH环境变量及作用(初学者必读)

    在讲解 PATH 环境变量之前,首先介绍一下 which 命令,它用于查找某个命令所在的绝对路径.例如: [root@localhost ~]# which rm /bin/rm [root@loca ...

  8. Docker启动的centos容器使用systemctl功能

    Failed to get D-Bus connection: Operation not permitted 错误的解决办法 # 启动的时候用如下命令 docker run --privileged ...

  9. 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现九

    一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...

  10. 记录java接口自动化模板优化

    项目路径说明 内容优化 优化内容 1.自动生成的测试报告集成至项目中,可直接通过项目访问测试报告(之前生成测试报告位于项目外,需要手动打开) 优化效果: 2.后续会增加allure测试报告集成使用(实 ...