Flutter 使用代码混淆构建签名的 apk 或 appbundle

Posted

技术标签:

【中文标题】Flutter 使用代码混淆构建签名的 apk 或 appbundle【英文标题】:Flutter build signed apk or appbundle with code obfuscation 【发布时间】:2022-01-16 12:33:42 【问题描述】:

我正在寻找一种方法来混淆我的 android APK/AppBundle,然后我找到了this command:

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

但它没有密钥库信息,因此我无法在 Google Play 控制台上发布此文件。然后,我找到了this post 用于使用密钥构建应用程序,但它没有使用混淆。

那么,如何使用 Dart 代码混淆构建我的应用的发布版本?

【问题讨论】:

【参考方案1】:

混淆代码:我们有 2 个级别来混淆您的代码:

对本机代码(Java、Kotlin)进行混淆处理,此配置将位于 gradle 文件中。你可以阅读更多:

https://developer.android.com/studio/build/shrink-code

混淆 Dart 代码。 (与您的命令相同)

https://docs.flutter.dev/deployment/obfuscate

您可以混淆原生代码和 Dart 代码。

APK 的构建版本。

如果您没有密钥库来签署应用程序,您可以使用本指南创建它:

https://developer.android.com/studio/publish/app-signing

【讨论】:

“但它没有密钥库信息,因此我无法在 Google Play 控制台上发布此文件。” -> 你可以创建一个新的。如果您已经拥有它,请在signingConfigs 上配置gradle。 (在我的附加链接中)。 - “但它不使用混淆。” -> 因为他们使用 GUI。在 gradle 上发布的配置键之后。你可以运行上面的命令。 是的,it 的意思是 command 而不是 me。我说的是命令。该命令不允许我输入密钥库信息。 抱歉,我不理解您评论的第二部分。你可以编辑你的帖子来解释它。 您可以在 gradle 上配置密钥库信息。你可以试试这个指南***.com/questions/18328730/… 谢谢,这就是我想要的。我会为此投票赞成你的帖子:)

以上是关于Flutter 使用代码混淆构建签名的 apk 或 appbundle的主要内容,如果未能解决你的问题,请参考以下文章

初见Flutter!框架简单介绍以及构建可发布的签名Apk包

android + scala + 混淆代码

proguard applymapping - mapping.txt 的更改不适用于下一个构建签名的 apk

从 Android Studio 构建替代 buildType 时,ProGuard 不会混淆

如何检查 APK 是不是已签名或“调试构建”?

反编译flutter release apk。在哪里可以找到源代码?