java.lang.IllegalStateException:Dex存档:仅为.CLASS文件设置.DEX扩展名

m.m*_*kin 40 continuous-integration android build kotlin gitlab

我在gitlab ci上构建了这个项目

./gradlew assembleDebug --stacktrace
Run Code Online (Sandbox Code Playgroud)

有时它会抛出一个错误:

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: java.lang.IllegalStateException: Dex archives: setting .DEX extension only for .CLASS files
Run Code Online (Sandbox Code Playgroud)

在我的本地电脑上它正常工作.

kotlin版本是1.2

multidex已启用

这个错误的原因是什么?

mix*_*xel 94

./gradlew clean 为我修复了同样的错误.

  • 或者在cordova项目中使用`cordova clean` (54认同)
  • 在cordova项目中使用`./platforms/android/gradlew clean` (6认同)
  • 无需清理构建和浪费时间。最好重启 Android Studio。 (2认同)

Zl3*_*l3n 45

对于Cordova开发人员,

如果您在项目中遇到此构建错误,如PierrickMartellière此答案的评论中所述,请在项目文件夹中使用:

cordova clean
Run Code Online (Sandbox Code Playgroud)

立即进行清洁和修整

  • 是的,这是Cordova项目的解决方案。您还可以通过在该命令末尾添加`android`来清理android端。 (3认同)

m.m*_*kin 9

我似乎找到了解决方案.在构建时刻,gradle正在向我显示警告:

Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.

app: 'androidProcessor' dependencies won't be recognized as kapt annotation processors. Please change the configuration name to 'kapt' for these artifacts: 'com.arello-mobile:moxy-compiler:1.5.3' and apply the kapt plugin: "apply plugin: 'kotlin-kapt'".
Run Code Online (Sandbox Code Playgroud)

我做了一个拼写错误,忘记删除库中不必要的annotationProcessor:

annotationProcessor "com.arello-mobile:moxy-compiler:$moxyVersion"
kapt "com.arello-mobile:moxy-compiler:$moxyVersion"
Run Code Online (Sandbox Code Playgroud)

所以我删除了第一行.

之后我应用了kapt插件apply plugin: 'kotlin-kapt'并在代码之后修复了一些构建错误.

毕竟我意识到我忘compileimplementation在某些地方更换.这很奇怪,但没有它,构建不起作用.

此更改修复了我的错误构建.


Sha*_*pta 5

简单的解决方案

对于离子和Cordove项目

cordova clean
Run Code Online (Sandbox Code Playgroud)