我在gitlab ci
构建项目./gradlew assembleDebug --stacktrace
有时会抛出错误:
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
在我的本地电脑上它可以正常工作。
kotlin版本是1.2
启用了multidex
出现此错误的原因是什么?
答案 0 :(得分:88)
./gradlew clean
为我修复了同样的错误。
答案 1 :(得分:25)
对于 Cordova 开发人员,
如果您在项目中遇到此构建错误(如Pierrick Martellière的注释中的this answer所述,则在项目文件夹中使用:
cordova clean
它可以立即进行清洁和建造
答案 2 :(得分:8)
我似乎找到了解决方案。 在构建时刻,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'".
我拼错了,忘了为库删除不必要的annotationProcessor:
annotationProcessor "com.arello-mobile:moxy-compiler:$moxyVersion"
kapt "com.arello-mobile:moxy-compiler:$moxyVersion"
所以我删除了第一行。
之后我应用了kapt插件apply plugin: 'kotlin-kapt'
并在其后的代码中修复了一些构建错误。
毕竟我意识到我忘记在某些地方将compile
替换为implementation
。这很奇怪,但如果没有它,那么建设就没有用。
此更改修复了我的错误构建。
答案 3 :(得分:4)
上面的回答大多是正确的但在我的情况下,当我创建相同名称 java 和 kotlin 文件然后删除其中一个时,我会收到此异常。
解决方案是:只需构建 - >清洁项目我的项目,它的工作原理。我的项目还启用了 multiDex 。
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
}
答案 4 :(得分:4)
如上所述,@ mixel清洁可以完成工作。但作为一种不手动操作的选项,只需将gradle“clean”任务添加到app run配置中,这样它就会在启动前一直进行。对于cource来说,它可以减慢整个过程。
答案 5 :(得分:1)
配置多索引并没有为我解决这个问题。
然而,我确实提出了各种各样的解决方案。基本上它涉及在与失败的构建相同的提交上创建第二个分支的pull请求。这个拉取请求的构建成功了,然后Bitbucket认为原始拉取请求是正常的并允许我们合并,即使我们没有对该分支进行任何更改。那里有一些无法解释的怪异但技术有效。
以下是我的表现:
假设失败的分支称为bad-branch
。
我在bad-branch-copy
和bad-branch
之间的提交上创建了一个名为develop
的新分支。然后我将bad-branch
合并到bad-branch-copy
。最终结果是快进,使bad-branch-copy
最终与bad-branch
进行相同的提交。我期待一个单独的提交,所以这个结果让我感到惊讶,但无论如何我都在抓稻草,所以我继续前进。
然后我将bad-branch-copy
推送到GitHub并创建了从bad-branch-copy
到develop
的拉取请求。这触发了bad-branch-copy
上的构建 - > develop
,这是成功的。
此时,buddybuild在bad-branch-copy
上展示了成功的构建 - > develop
仍然显示失败{ - 1}} - > bad-branch
。但是,Bitbucket在develop
的拉取请求上展示了成功的构建。是的,没错:buddybuild显示失败但Bitbucket说没关系。
然后我们能够合并bad-branch
拉取请求,并且一切都很好。请不要问我为什么,我不会回答。 :)
我认为用
完成同样的事情bad-branch
然后为bad-build-copy创建一个pull请求。
答案 6 :(得分:1)
通过关闭并重新启动Android Studio,我能够解决问题。也许甚至一个Rebuild Project也会这样做(虽然没试过)。
答案 7 :(得分:0)
解决这个问题的方法是手动手动添加所有冲突的文件。例如,在我的gradle文件中,我有:
implementation 'com.android.support:support-compat:27.1.1'
它用红色加下划线。我徘徊在线上,android工作室说使用较低版本的另一个文件存在冲突。错误类似于
come.android.support:support-annotations:26.0.1与27.1.1冲突/混合版本。
它给了我文件的名称,我手动添加了相应的版本,所以它们都匹配
compile 'com.android.support:support-annotations:27.1.1'
compile 'com.android.support:support-compat:27.1.1'
compile 'com.android.support:support-core-ui:27.1.1'
compile 'com.android.support:animated-vector-drawable:27.1.1'
compile 'com.android.support:appcompat-v7:27.1.1'
compile 'com.android.support:design:27.1.1'
答案 8 :(得分:0)
当前的解决方案都不适合我,只需禁用Instant Run
即可解决此问题。
答案 9 :(得分:0)
当前使用的是 Android Studio 3.3.2 ,我只是禁用了即时运行,并且运行正常。
答案 10 :(得分:0)
简单解决方案
用于离子和Cordove项目
cordova clean
答案 11 :(得分:0)
以上解决方案是正确的。但是,就我而言,由于 classNotFound 引发了错误。但我只需要修复 AndroidManifest.xml。例如,检查是否存在未正确定义的应用程序名称。
答案 12 :(得分:-4)
请在这里找到这个问题的解决方案,
404