颤振项目超出.dex方法参考计数限制

cre*_*not 7 android flutter

为什么Flutter项目在其文件中超过64K方法引用.dex

我想知道这可能是什么原因:
在一个相当小的 Flutter项目中我使用了13个插件.如果没有Multidex,Android构建将失败,因为它大大超出了方法参考限制.

是否有任何技巧(例如Gradle相关)允许缩小方法引用计数,因为我认为这样的项目不应超过限制?
(如果你想进一步了解为什么我觉得这很奇怪,请看一下这个问题的旧版本)

小智 25

我有同样的问题,并修复对我来说是增加了minSdkVersionapp/build.bradle这样的

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        minSdkVersion 21 // change this to 21
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
Run Code Online (Sandbox Code Playgroud)


Nip*_*pun 14

如果您使用的minSdkVersion少于 21 个,您可以执行以下操作来启用 multidex。在您的应用级别 build.gradle 更改如下:

  1. 添加multiDexEnabled truedefaultConfig
defaultConfig {
    minSdkVersion 15 
    targetSdkVersion 28
    ...
    multiDexEnabled true
}
Run Code Online (Sandbox Code Playgroud)
  1. 添加多索引依赖
dependencies {
    ...
    implementation 'androidx.multidex:multidex:2.0.1'
}
Run Code Online (Sandbox Code Playgroud)

您可以参考了解更多信息。


Mah*_*ahi 10

在您的android/app/build文件中minsdkversion,将defautConfig下的从 16 增加到 21 。有些人甚至将它增加到 28,但它在 21 时对我有用。这是git 上问题的链接

编辑: multiDexEnabled: true也适用于相同defautConfig下的一些。


小智 5

在build.gradle的defaultConfig下添加multiDexEnabled true

    minSdkVersion 16
    targetSdkVersion 30
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
    multiDexEnabled true
}
Run Code Online (Sandbox Code Playgroud)


Jas*_*ngh 3

使用 ProGuard在编译时消除未使用的类。这将大大减少您的方法数量。

您需要调整 ProGuard 规则才能与 Flutter 配合使用,如Flutter 文档所述(此处)