2018-06-27studio3.1.1打包配置文件实践
2018-06-27 本文已影响0人
honglei92
1.打包配置文件修改
applicationVariants.all { variant ->
variant.outputs.all { output ->
if (variant.buildType.name != "debug") {
outputFileName = "FUND_DEMO_V" +
variant.versionName + "_" +
releaseTime() + "_" +
variant.buildType.name + "_" +
variant.signingConfig.name +
".apk"
}
}
}
2遇到一个问题,可以运行run,但是release打包就报错
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: Error while generating the main dex list.
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:212)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
... 30 more
Caused by: com.android.build.api.transform.TransformException: Error while generating the main dex list.
at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:133)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
... 42 more
Caused by: com.android.builder.multidex.D8MainDexList$MainDexListException: com.android.tools.r8.errors.CompilationError: Program type already present: org.h2.util.Bits
at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:87)
at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:120)
... 45 more
究其原因原来是我的gradle里面
api 'com.squareup.leakcanary:leakcanary-android:1.5.4'
debugApi 'com.squareup.leakcanary:leakcanary-android:1.5.4'
releaseApi 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
最后改为:
debugApi 'com.squareup.leakcanary:leakcanary-android:1.5.4'
releaseApi 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
就不报错了。
遇到问题仔细看报错信息 ,再到自己的.gradle文件里仔细查找不对,看到可疑文件琢磨修改。