当前位置: 首页 > 知识库问答 >
问题:

如何使用Proguard缩小颤振应用程序?

李辉
2023-03-14

我已经做了一个颤振应用。发布的apk大约为14MB。我搜索了一些方法来缩小这个范围,并发现了以下内容:https://flutter.io/android-release/#enabling-前卫

但我的问题是,我怎样才能知道我在步骤1中使用的所有附加库?是否有任何命令可以了解它们,或者只是我添加到pubspec中的所有依赖项。yaml

我需要如何在这个文件/android/app/proguard rules中实现它们。pro

共有3个答案

柯宜年
2023-03-14

如果您使用的是firebase,请参阅使用带有firebase Auth的ProGuard进行颤振构建崩溃

接下来,您需要考虑pubspec.yaml中的依赖关系您可以立即忽略任何纯Dart包-您只是在寻找插件。在这些插件中,您只对那些利用现有库的插件感兴趣。您可能已经将这些添加到gradle中。这些是你需要防止名字缩短的。

最简单的方法可能只是尝试一下,看看在NoClassDefFoundError中会弹出什么包名,然后不断地迭代添加它们。

正如雷米所说,你的收获将是微乎其微的,所以它真的值得你这么做。在即将发布的版本中,您应该会看到APK大小的一些改进。

鞠鸿雪
2023-03-14

我将把这个答案留在这里,作为任何必须处理这个问题并遇到这个问题的可怜灵魂的补充。

从2021年12月起,用最新的Android SDK、Studio和Frutter版本,如果你尝试做<代码> UpEuthGuor真的它将不起作用,因为它已经过时了。可悲的是,Gradle不会告诉你这些,相反,你会得到这样一个错误:

A problem occurred evaluating project ':app'.

> No signature of method: build_7cqkbrda1q788z3b02yxbvrx9.android() is applicable for argument types: (build_7cqkbrda1q788z3b02yxbvrx9$_run_closure2) values: [build_7cqkbrda1q788z3b02yxbvrx9$_run_closure2@41108b15]

如你所见,这完全是胡言乱语,没有用。秘诀是根本不使用useProGuard。默认情况下,Flutter设置为使用R8,现在在Android系统上处理缩小。

这里有一篇关于这个的so帖子供参考: Gradle: DSL元素“useProGuard”已经过时,很快就会被删除

江子石
2023-03-14

首先,我们将在构建文件中启用收缩和模糊处理。找到位于/android/app//code>文件夹内的build.gradle文件,并以粗体添加行

android {

    ...

    buildTypes {

        release {

            signingConfig signingConfigs.debug     

            minifyEnabled true
            useProguard true

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

        }
    }
}

接下来,我们将创建一个将保留整个Flutter包装器代码的配置。创建/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 app,我在谷歌上搜索了如何更改应用程序的名称,找到了这个答案。但是我不能从清单文件中更改应用程序的名称。最初是。我将其更改为,它给出了错误 如何重置此错误并更改名称?

  • 我正试图从Flatter网站上消化以下信息。 Flutter如何在Android上运行我的代码? 引擎的C和C代码是用Android的NDK编译的。Dart代码(SDK和您的)是提前(AOT)编译到本机、ARM和x86库中的。这些库包含在一个“runner”Android项目中,整个项目都内置在一个APK中。启动时,应用程序将加载颤振库。任何呈现、输入或事件处理等都被委托给编译的flatter和应

  • 我如何以编程方式关闭一个Flutter应用程序?我尝试弹出唯一的屏幕,但结果是黑屏。

  • 将颤振集成到主机应用程序(docs)时,有几种方法可以实现,其中一种(最简单的)方法是通过颤振活动类在新活动中打开颤振。这样地: 传统上,对于Flutter侧的Android风格窗口,我们创建带有后退按钮的AppBar。 此AppBar后退按钮和Android系统后退按钮的行为必须相同:按下后退按钮时,前台活动必须关闭(完成)。 目前系统后退按钮确实关闭了,但如何从flutters AppBar后

  • 像这样的东西 如何检查flutter应用程序是否运行在调试或发布模式?