Android 支持 Multidex 仍然会产生 'over than 64K methods in main-dex file' 错误
Android support Multidex still generates the 'over than 64K methods in main-dex file' error
我是一名仍然支持 minSdk 19 的 Android 开发人员,并且遇到了 Maindex 不符合 main-dex 文件中请求的 类 的问题。即使按照 'Enable multidex' 开发人员页面上的推荐步骤进行操作,错误仍然存在。我可以做些什么来支持 main-dex 文件中的更多方法,或者更好地在文件之间划分它们?
我已按照 https://developer.android.com/studio/build/multidex 页面中建议的步骤进行操作。在 Gradle 文件中,我实现了 'com.android.support:multidex:1.0.3' 依赖项。我的应用程序扩展自 MultiDexApplication。
主要问题可能是已经迁移到 AndroidX,因此应用程序导入 androidx.multidex.MultiDexApplication 库而不是导入在依赖项中实现的支持库。
在 build.gradle(Module:App) 文件中(仅突出显示重要部分)
...
dexOptions {
jumboMode true
}
...
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
...
multiDexEnabled true
multiDexKeepProguard file('multidex-config.txt')
}
...
dependencies {
...
implementation "com.android.support:multidex:1.0.3"
...
}
在申请文件中:
import androidx.multidex.MultiDexApplication;
...
public class MainApplication extends MultiDexApplication...
预期的是,通过尝试,这些方法将适合 dex 文件。但是,尝试构建 APK 时错误仍然存在:
Error: null, Cannot fit requested classes in the main-dex file (# methods: 66064 > 65536)
根据 documentation,您的 multidex-config 中必须包含您想要保留的 classes。
分析您的 APK 并检查主 dex 文件中包含的 classes 和方法,并检查导致达到 64K 限制的软件包。
确保您没有将整个项目保存在 multidex-config 文件中。
如果您使用广泛的包过滤器,文档中给出的示例可能会产生误导:
-保持 class com.example.** { *; }
尽量只保留必要的包:
-保留 class com.example.YOUR-PACKAGE** { *; }
我是一名仍然支持 minSdk 19 的 Android 开发人员,并且遇到了 Maindex 不符合 main-dex 文件中请求的 类 的问题。即使按照 'Enable multidex' 开发人员页面上的推荐步骤进行操作,错误仍然存在。我可以做些什么来支持 main-dex 文件中的更多方法,或者更好地在文件之间划分它们?
我已按照 https://developer.android.com/studio/build/multidex 页面中建议的步骤进行操作。在 Gradle 文件中,我实现了 'com.android.support:multidex:1.0.3' 依赖项。我的应用程序扩展自 MultiDexApplication。
主要问题可能是已经迁移到 AndroidX,因此应用程序导入 androidx.multidex.MultiDexApplication 库而不是导入在依赖项中实现的支持库。
在 build.gradle(Module:App) 文件中(仅突出显示重要部分)
...
dexOptions {
jumboMode true
}
...
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
...
multiDexEnabled true
multiDexKeepProguard file('multidex-config.txt')
}
...
dependencies {
...
implementation "com.android.support:multidex:1.0.3"
...
}
在申请文件中:
import androidx.multidex.MultiDexApplication;
...
public class MainApplication extends MultiDexApplication...
预期的是,通过尝试,这些方法将适合 dex 文件。但是,尝试构建 APK 时错误仍然存在:
Error: null, Cannot fit requested classes in the main-dex file (# methods: 66064 > 65536)
根据 documentation,您的 multidex-config 中必须包含您想要保留的 classes。
分析您的 APK 并检查主 dex 文件中包含的 classes 和方法,并检查导致达到 64K 限制的软件包。
确保您没有将整个项目保存在 multidex-config 文件中。
如果您使用广泛的包过滤器,文档中给出的示例可能会产生误导:
-保持 class com.example.** { *; }
尽量只保留必要的包:
-保留 class com.example.YOUR-PACKAGE** { *; }