android - 任务 ':app:transformClassesWithMultidexlistForFreeDebug' 执行失败
问题描述
build.gradle(模块:应用程序)
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
applicationId ""com.khaidemsandipsingha.builditbigger""
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'LICENSE.txt'
}
flavorDimensions "tier"
productFlavors {
paid {
applicationId 'com.example.khaidemsandipsingha.builditbigger.paid'
versionName '1.0-paid'
buildConfigField "boolean", "PAID_VERSION", "true"
dimension "tier"
}
free {
applicationId 'com.example.khaidemsandipsingha.builditbigger.free'
versionName '1.0-free'
buildConfigField "boolean", "PAID_VERSION", "false"
dimension "tier"
}
}
sourceSets {
main {
java.srcDirs = ['src/main/java', 'src/main/java/com.example.khaidemsandipsingha.builditbigger.paid']
}
paid {
manifest.srcFile 'src/paid/AndroidManifest.xml'
}
free {
manifest.srcFile 'src/free/AndroidManifest.xml'
}
}
repositories {
maven { url "https://maven.google.com" }
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//Tests
androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'
//Support
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:27.1.1'
// Added for AdMob
freeImplementation 'com.google.android.gms:play-services:8.3.0'
//Add AndroidJoke
implementation project(':androidjoke')
//Backend
implementation project(path: ':backend', configuration: 'android-endpoints')
implementation 'com.google.api-client:google-api-client-android:1.23.0'
implementation 'com.google.api-client:google-api-client:1.23.0'
implementation 'com.android.support:multidex:1.0.3'
}
构建错误输出 FAILURE: Build failed with an exception。
- 出了什么问题:任务“:app:transformClassesWithMultidexlistForFreeDebug”执行失败。
com.android.build.api.transform.TransformException:生成主 dex 列表时出错。
gradle build -s
- 例外是:
org.gradle.api.tasks.TaskExecutionException:任务':app:transformClassesWithMultidexlistForFreeDebug'的执行失败。在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110) .api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) 在 org.gradle.api.internal .tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 在 org.gradle.api.internal.tasks.execution。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) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 在 org.gradle.api.internal 。项目。174) 在 org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) 在 org.gradle.api.internal.tasks 的 org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) .execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99) ... 31 更多原因: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:
GitHub项目链接:https ://github.com/Kurosakicoder/BuildItBiggerGradle-master
解决方案
你的应用程序类呢?如果您没有,则需要创建一个并将其名称放在清单中,因为您的代码应该是这样的
AndroidManifest.xml
<application
android:name="ApplicationName"
...
>
你的应用程序类将是:
public class ApplicationName extends MultiDexApplication{
.....
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
更新我注意到你使用
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
当您在调试中运行应用程序时,这不起作用尝试导出版本,如果它有效,那么您需要在调试构建类型中添加这些配置
推荐阅读
- php - Count(): 参数必须是数组或者实现了Countable错误的对象,如何解决?
- linux - Vfio 0000:41:00.0:无法打开 /dev/vfio/32:没有这样的文件或目录 - QEMU
- javascript - 对存储在数据库中的会话数据的混淆违反了 REST 原则
- c++ - 与 std::type_index 相比,使用 std::type_info::hash_code 有什么优势
- reactjs - 在 React 中以编程方式打开一个 html 模式
- git - 构建 Git 虚拟文件系统
- javascript - 如何将 Json 返回从控制器发送到 Asp.NET Core MVC 应用程序的前端?
- python - 在 Heroku 中使用烧瓶部署 ML 模型时出现 H12 请求超时错误
- python - 从其他模块使用导入的函数时不起作用
- jestjs - 导入全局变量时 Jest 无法运行测试