问题描述
我的构建有很多不同的版本,这些版本具有特定的资源,并且我不想在我的项目中用一堆特定于风味的目录弄乱我的src目录,因此我从另一个文件夹中添加了源集我的项目在mergeResources任务(mergeResources.doFirst)之前.在过去的多个版本的Android Gradle插件(3.1.0-3.2.0和某些3.3.0-alpha版本)中,这种方法一直有效,但是在某些时候,3.3.0-alpha AGP开始了在此mergeResources任务期间导致构建失败.
I have a lot of different flavors for my build that have specific resources and I don't want to clutter my src directory in my project with a bunch of flavor-specific directories, so I add the source sets from another folder in my project prior to the mergeResources task (mergeResources.doFirst). This has always worked for the past several versions of the Android Gradle plug-in (3.1.0-3.2.0 and some of the 3.3.0-alpha versions), but at a certain point, the 3.3.0-alpha AGP started causing build failures during this mergeResources task.
现在,我不断得到:
我的堆栈跟踪是:
例外是: org.gradle.api.tasks.TaskExecutionException:任务':app:mergeMainReleaseResources'的执行失败. 在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110) 在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77) 在org.gradle.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.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59) 在org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101) 在org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44) 在org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91) 在org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)处 在org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59) 在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.api.internal.tasks.execution.EventFiringTaskExecuter $ 1.run(EventFiringTaskExecuter.java:51) 在org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)处 在org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)上 在org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174) 在org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) 在org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) 在org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46) 在org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42) 在org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)处 在org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)处 在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker $ 1.execute(DefaultTaskPlanExecutor.java:135)处 在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker $ 1.execute(DefaultTaskPlanExecutor.java:130)处 在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)处 在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)处 在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)处 在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)
Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:mergeMainReleaseResources'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101) at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91) at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46) at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
原因:org.gradle.internal.UncheckedException:java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.v2.Aapt2InternalException:AAPT2 aapt2-3.3.0-alpha13-5013011-windows守护程序# 0:编译'C:\ Users \ Alex时发生意外错误 \ Documents \ Work \ Android \ project \ app \ production_resources \ categories \ fitness \ res \ drawable-xxxhdpi \ background_4.png',尝试停止守护程序. 通常情况下不应发生这种情况,如果确实如此,请提出问题. 在org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:63) 在org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:40) 在org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:76) 在org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50) 在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:131) 在org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)处 在org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)上 在org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174) 在org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) 在org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) 在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)处 在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99) ...另外31个 引起原因:java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.v2.Aapt2InternalException:AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon#0:编译'C:\ Users期间发生意外错误\ Alex \ Documents \ Work \ Android \ project \ app \ production_resources \ categories \ fitness \ res \ drawable-xxxhdpi \ background_4.png",尝试停止守护程序. 通常情况下不应发生这种情况,如果确实如此,请提出问题. 在com.android.ide.common.workers.ExecutorServiceAdapter.close(ExecutorServiceAdapter.kt:56) 在com.android.build.gradle.internal.aapt.WorkerExecutorResourceCompilationService.close(WorkerExecutorResourceCompilationService.kt:67) 在com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:268) 在com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:106) 在org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) ...另外42个
Caused by: org.gradle.internal.UncheckedException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon #0: Unexpected error during compile 'C:\Users\Alex \Documents\Work\Android\project\app\production_resources\categories\fitness\res\drawable-xxxhdpi\background_4.png', attempting to stop daemon. This should not happen under normal circumstances, please file an issue if it does. at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:63) at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:40) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:76) 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:131) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99) ... 31 more Caused by: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon #0: Unexpected error during compile 'C:\Users\Alex\Documents\Work\Android\project\app\ production_resources\categories\fitness\res\drawable-xxxhdpi\background_4.png', attempting to stop daemon. This should not happen under normal circumstances, please file an issue if it does. at com.android.ide.common.workers.ExecutorServiceAdapter.close(ExecutorServiceAdapter.kt:56) at com.android.build.gradle.internal.aapt.WorkerExecutorResourceCompilationService.close(WorkerExecutorResourceCompilationService.kt:67) at com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:268) at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:106) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) ... 42 more
起因:com.android.builder.internal.aapt.v2.Aapt2InternalException:AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon#0:编译'C:\ Users \ Alex \ Documents \时发生意外错误Work \ Android \ project \ app \ production_resources \ categories \ fitness \ res \ drawable-xxxhdpi \ background_4.png',尝试停止守护程序. 通常情况下不应发生这种情况,如果确实如此,请提出问题. 在com.android.builder.internal.aapt.v2.Aapt2Daemon.handleError(Aapt2Daemon.kt:148) 在com.android.builder.internal.aapt.v2.Aapt2Daemon.compile(Aapt2Daemon.kt:88) 在com.android.builder.internal.aapt.v2.Aapt2DaemonManager $ LeasedAaptDaemon.compile(Aapt2DaemonManager.kt:170) 在com.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable $ run $ 1.invoke(Aapt2CompileWithBlameRunnable.kt:37) 在com.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable $ run $ 1.invoke(Aapt2CompileWithBlameRunnable.kt:28) 在com.android.build.gradle.internal.res.namespaced.Aapt2DaemonManagerService.useAaptDaemon(Aapt2DaemonManagerService.kt:71) 在com.android.build.gradle.internal.res.namespaced.Aapt2DaemonManagerService.useAaptDaemon $ default(Aapt2DaemonManagerService.kt:69)处 在com.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable.run(Aapt2CompileWithBlameRunnable.kt:34) 在com.android.ide.common.workers.ExecutorServiceAdapter $ submit $ submission $ 1.run(ExecutorServiceAdapter.kt:39)
Caused by: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon #0: Unexpected error during compile 'C:\Users\Alex\Documents\Work\Android\project\app\production_resources\categories\fitness\res\drawable-xxxhdpi\background_4.png', attempting to stop daemon. This should not happen under normal circumstances, please file an issue if it does. at com.android.builder.internal.aapt.v2.Aapt2Daemon.handleError(Aapt2Daemon.kt:148) at com.android.builder.internal.aapt.v2.Aapt2Daemon.compile(Aapt2Daemon.kt:88) at com.android.builder.internal.aapt.v2.Aapt2DaemonManager$LeasedAaptDaemon.compile(Aapt2DaemonManager.kt:170) at com.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable$run$1.invoke(Aapt2CompileWithBlameRunnable.kt:37) at com.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable$run$1.invoke(Aapt2CompileWithBlameRunnable.kt:28) at com.android.build.gradle.internal.res.namespaced.Aapt2DaemonManagerService.useAaptDaemon(Aapt2DaemonManagerService.kt:71) at com.android.build.gradle.internal.res.namespaced.Aapt2DaemonManagerService.useAaptDaemon$default(Aapt2DaemonManagerService.kt:69) at com.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable.run(Aapt2CompileWithBlameRunnable.kt:34) at com.android.ide.common.workers.ExecutorServiceAdapter$submit$submission$1.run(ExecutorServiceAdapter.kt:39)
由以下原因引起:java.io.IOException:AAPT2进程意外退出.错误输出: 在com.android.builder.internal.aapt.v2.Aapt2DaemonImpl $ WaitForTaskCompletion.err(Aapt2DaemonImpl.kt:309) 在com.android.builder.internal.aapt.v2.Aapt2DaemonImpl $ processOutput $ 1.err(Aapt2DaemonImpl.kt:75) 在com.android.utils.GrabProcessOutput $ 1.run(GrabProcessOutput.java:104)
Caused by: java.io.IOException: AAPT2 process unexpectedly exit. Error output: at com.android.builder.internal.aapt.v2.Aapt2DaemonImpl$WaitForTaskCompletion.err(Aapt2DaemonImpl.kt:309) at com.android.builder.internal.aapt.v2.Aapt2DaemonImpl$processOutput$1.err(Aapt2DaemonImpl.kt:75) at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)
我以为PNG文件可能已损坏或标签不正确,但经过大量转换后,我仍然遇到相同的错误.
I thought maybe the PNG file was corrupted or incorrectly labeled, but I've run it through a whole bunch of conversions and I get the same error.
在测试过程中,它工作正常,但是在发布版本期间就是出现此错误的时候.对于生产版本,我一直使用AS 3.2和AGP 3.2.0进行构建,效果很好.另外,这仅是Windows.在我的Mac上可以正常工作.
During testing, it works fine, but during the release builds is when I get this error. I've resorted to building using AS 3.2 and AGP 3.2.0 for my production builds, which works fine. Also, this is Windows only. It works fine on my Mac.
我的build.gradle是:
My build.gradle is:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.project.test"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 37
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
dexOptions {
jumboMode true
javaMaxHeapSize "4g"
preDexLibraries = false
}
sourceSets {
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
androidTest.setRoot('tests')
}
signingConfigs {
key {
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
}
}
buildTypes {
debug {
minifyEnabled false
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.key
}
}
flavorDimensions "default"
productFlavors {
main {
versionName "0"
buildConfigField "String", "CATEGORY", "\"fitness\""
buildConfigField "String", "BUILD_VERSION", "\"$config.buildVersion\""
dimension "default"
}
flavors.each { name, flavor ->
"$name" {
applicationId = config.applicationId + "." + "$name"
versionName = config.versionName
versionCode = flavor.versionCode
buildConfigField "String", "CATEGORY", "\"${flavor.category}\""
buildConfigField "String", "BUILD_VERSION", "\"$config.buildVersion\""
buildConfigField "String", "APP_ID", "\"$name\""
resValue "string", "APP_NAME", flavor.appName
dimension "default"
}
}
}
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
exclude group: 'com.android.support', module: 'support-annotations'
})
androidTestImplementation('com.android.support.test:runner:1.0.1', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.google.code.findbugs:jsr305:3.0.2'
implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
implementation "com.android.support:support-v4:$rootProject.supportLibraryVersion"
implementation "com.android.support:design:$rootProject.supportLibraryVersion"
implementation "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
implementation "com.android.support:customtabs:$rootProject.supportLibraryVersion"
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.android.billingclient:billing:1.1'
implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion"
implementation "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofitVersion"
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation "com.facebook.fresco:fresco:$rootProject.frescoVersion"
implementation "com.facebook.fresco:animated-gif:$rootProject.frescoVersion"
implementation "com.google.android.gms:play-services-auth:$rootProject.playServicesVersion"
implementation "com.google.android.gms:play-services-gcm:$rootProject.playServicesVersion"
implementation "com.google.android.gms:play-services-base:$rootProject.playServicesVersion"
implementation "com.google.android.gms:play-services-ads:$rootProject.playServicesVersion"
implementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
transitive = true
}
implementation 'com.mixpanel.android:mixpanel-android:5.2.1'
implementation "com.google.dagger:dagger:$rootProject.daggerVersion"
implementation "com.google.dagger:dagger-android-support:$rootProject.daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.daggerVersion"
implementation "com.jakewharton:butterknife:$rootProject.butterknifeVersion"
annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.butterknifeVersion"
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
implementation 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
implementation "com.google.android.exoplayer:exoplayer-core:$rootProject.exoPlayerVersion"
implementation "com.google.android.exoplayer:exoplayer-hls:$rootProject.exoPlayerVersion"
implementation "com.google.android.exoplayer:exoplayer-ui:$rootProject.exoPlayerVersion"
testImplementation 'junit:junit:4.12'
}
android.applicationVariants.all { variant ->
def category
variant.productFlavors.each { flavor ->
flavor.buildConfigFields.each { key, value ->
if (key == "CATEGORY") {
category = value.value.substring(1, value.value.length() - 1)
}
}
}
variant.mergeResources.doFirst {
android.sourceSets."${variant.productFlavors.get(0).name}".res.srcDirs =
["production_resources/flavors/${variant.productFlavors.get(0).name}/res",
"production_resources/categories/${category}/res"]
}
}
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex'
dx.additionalParameters += "--main-dex-list=$projectDir/<filename>".toString()
}
}
apply plugin: 'com.google.gms.google-services'
推荐答案
2019年4月19日更新
此问题已在Android Gradle Plugin 3.4.0
中修复.
升级到Android Studio 3.4.0后,可以删除原始答案中建议的临时修复程序.哇!
After upgrading to Android Studio 3.4.0, the temporary fix suggested in the original answer can be removed. Hurray!
原始
这是Android Gradle Plugin 3.3.0中AAPT2中的一个错误,当构建具有更大png(约2-3 mb以上)的项目时.
This is a bug in AAPT2 in Android Gradle Plugin 3.3.0, when building a project with larger png's (around 2-3 mb and up).
@ akong9759在Google的问题跟踪器上为此创建了一个问题,该问题已得到解决.
@akong9759 created an issue for this on Googles issue tracker and it has been fixed.
https://issuetracker.google.com/issues/117900475
该问题已在Android Gradle插件3.5.0-alpha03中得到修复,该修复程序计划在3.4.0版中发布.
The problem has been fixed in Android Gradle Plugin 3.5.0-alpha03 and the fix is scheduled to be released in version 3.4.0.
已建议针对该问题的Android Gradle插件3.3.0临时修复.将以下内容添加到项目build.gradle
:
A temporary fix for Android Gradle Plugin 3.3.0 has been suggested on the issue. Add the following to the project build.gradle
:
allprojects {
// Workaround for https://issuetracker.google.com/117900475
// Remove when upgrading to AGP 3.4 or higher.
configurations.matching { it.name == '_internal_aapt2_binary' }.all { config ->
config.resolutionStrategy.eachDependency { details ->
details.useVersion("3.5.0-alpha03-5252756")
}
}
}
这篇关于使用Android Gradle插件3.3.0在合并资源期间构建失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!