【问题标题】:React Native: com.android.build.api.transform.TransformException: Error while generating the main dex listReact Native:com.android.build.api.transform.TransformException:生成主 dex 列表时出错
【发布时间】:2018-11-05 18:54:25
【问题描述】:

我没有更改任何内容,现在我的项目无法运行。从今天早上开始,我就收到了这个错误:

  • 出了什么问题: 任务 ':app:transformClassesWithMultidexlistForDebug' 执行失败。

    com.android.build.api.transform.TransformException: 生成主 dex 列表时出错。

我已经尝试实现 multiDexEnabled。在我的 build.gradle 中,我添加了这样的 multiDexEnabled:

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId "com.myApp"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        multiDexEnabled true
        versionCode 8
        versionName "1.3"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }

这是我的依赖项

dependencies {
    implementation project(':react-native-firebase')
    implementation project(':react-native-video')
    implementation project(':react-native-vector-icons')
    implementation project(':react-native-touch-id')
    implementation project(':react-native-picker')
    implementation(project(':react-native-maps')) {
      exclude group: 'com.google.android.gms', module: 'play-services-base'
      exclude group: 'com.google.android.gms', module: 'play-services-maps'
    }
    implementation 'com.google.android.gms:play-services-base:+'
    implementation 'com.google.android.gms:play-services-maps:+'

    implementation project(':react-native-keychain')
    implementation project(':react-native-image-picker')
    implementation project(':react-native-google-analytics-bridge')
    implementation project(':react-native-device-info')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    implementation 'com.android.support:multidex:1.0.3'
    implementation "com.facebook.react:react-native:+"  // From node_modules
    implementation "com.google.firebase:firebase-core:16.0.4"
    implementation "com.google.firebase:firebase-messaging:17.3.4"
    implementation 'me.leolin:ShortcutBadger:1.1.21@aar'
}

我还将我的应用程序更改为 MultiDexApplication,如下所示:

import android.support.multidex.MultiDexApplication;

public class MainApplication extends MultiDexApplication implements ReactApplication {
...
}

这是错误的堆栈跟踪

FAILURE:构建失败并出现异常。

  • 出了什么问题: 任务 ':app:transformClassesWithMultidexlistForDebug' 执行失败。

    com.android.build.api.transform.TransformException: 生成主 dex 列表时出错。

  • 尝试: 使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

  • 例外情况是: org.gradle.api.tasks.TaskExecutionException:任务':app:transformClassesWithMultidexlistForDebug'的执行失败。 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 在 org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) 在 org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97) 在 org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87) 在 org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 在 org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 在 org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626) 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) 在 org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) 在 org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) 在 org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 原因:java.lang.RuntimeException: com.android.build.api.transform.TransformException: 生成主 dex 列表时出错。 在 com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55) 在 com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104) 在 com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212) 在 org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 在 org.gradle.api.internal.project.taskfactory.IncrementalTask​​Action.doExecute(IncrementalTask​​Action.java:46) 在 org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39) 在 org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92) ... 29 更多 原因:com.android.build.api.transform.TransformException:生成主 dex 列表时出错。 在 com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:127) 在 com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221) 在 com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217) 在 com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102) ... 41 更多 引起:com.android.builder.multidex.D8MainDexList$MainDexListException:com.android.tools.r8.errors.CompilationError:程序类型已经存在:com.google.android.gms.internal.measurement.zzsh 在 com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:87) 在 com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:114) ... 44 更多 引起:com.android.tools.r8.errors.CompilationError:程序类型已经存在:com.google.android.gms.internal.measurement.zzsh 在 com.android.tools.r8.utils.ProgramClassCollection.resolveClassConflictImpl(ProgramClassCollection.java:64) 在 com.android.tools.r8.utils.ProgramClassCollection.lambda$create$0(ProgramClassCollection.java:25) 在 com.android.tools.r8.utils.ProgramClassCollection.create(ProgramClassCollection.java:24) 在 com.android.tools.r8.graph.LazyLoadedDexApplication$Builder.build(LazyLoadedDexApplication.java:121) 在 com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:122) 在 com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:86) 在 com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:40) 在 com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:110) 在 com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:83) ... 45 更多

请帮忙,我不知道我错过了什么。 感谢您给我的任何提示。

【问题讨论】:

  • 我注意到重复的 com.google.android.gms:play-services-base 所以我删除了 1 并没有帮助
  • 尝试指定 play-services-base 和 play-services-maps 的版本,而不是使用+
  • 好的,我试过这样设置谷歌服务: implementation 'com.google.android.gms:play-services-base:16.0.1' implementation 'com.google.android.gms:play- services-maps:16.0.0' 我收到相同的错误“任务':app:transformClassesWithMultidexlistForDebug'的执行失败。”
  • 最后我的问题是firebase-core。我将所有内容都更新到了最新版本,所以现在我正在使用 com.google.firebase:firebase-core:16.0.4、com.google.firebase:firebase-messaging:17.3.4 和 com.google.gms:google-services :4.2.0 但我得到同样的错误

标签: firebase react-native firebase-cloud-messaging


【解决方案1】:

终于搞定了

app/build.gradle

    dependencies {
        implementation ("com.google.firebase:firebase-core:16.0.5")
        implementation ("com.google.firebase:firebase-messaging:17.3.4")
    ...
}

build.gradle 和

dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath 'com.google.gms:google-services:4.2.0'

我还要补充一点,https://firebase.google.com/support/release-notes/android#latest_sdk_versions 说 firebase-core 的最新版本是 16.0.4,但这对我不起作用

【讨论】:

    【解决方案2】:

    将此粘贴​​到 defaultConfig 下方的 app.gradle 中{}。它对我有用

    compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      相关资源
      最近更新 更多