D8 DexMergerTransform:基于gitlab-ci的flaky android构建

时间:2018-01-06 16:37:16

标签: android gitlab-ci

几天后,我看到我的GitLab CI系统出现了片状 有时构建会因此错误而失败:

Caused by: com.android.build.api.transform.TransformException: java.lang.IllegalArgumentException
    at com.android.build.gradle.internal.transforms.DexMergerTransform.transform(DexMergerTransform.java:230)

然后,当我重试一次或两次构建时,它可以工作。

我知道,这可能很难回答,所以请添加一些评论,我可以尝试的内容或您需要的其他信息(遗憾的是项目不是开源的):欢迎所有评论/想法。 /> 以下是我想到的一些想法:

  1. 可能这是由内存不足引起的(它是一个非常大的多模块构建)
  2. 可能是构建的时间问题
  3. 可能是D8 Dexer中的错误
  4. 更多信息:

    • 构建没有做任何花哨的东西(android UI测试等) 它只执行./gradlew assembleDebug
    • com.android.tools.build:gradle 3.0.1
    • CompileSdkVersion:26

    以下是构建日志的一些相关部分:

    > com.android.build.api.transform.TransformException: java.lang.IllegalArgumentException
    
    * Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':m10_android_apk:transformDexArchiveWithDexMergerForRelease'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
    
    Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.IllegalArgumentException
        at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
        at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:213)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    
    Caused by: com.android.build.api.transform.TransformException: java.lang.IllegalArgumentException
        at com.android.build.gradle.internal.transforms.DexMergerTransform.transform(DexMergerTransform.java:230)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:222)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:218)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
        ... 116 more
    Caused by: java.lang.IllegalArgumentException
        at com.android.tools.r8.utils.ThreadUtils.getExecutorService(ThreadUtils.java:40)
        at com.android.tools.r8.D8.runForTesting(D8.java:150)
        at com.android.tools.r8.D8.run(D8.java:71)
        at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:73)
        at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:97)
        at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:35)
    

0 个答案:

没有答案