title: build failing during merge resources with Android Gradle plugin 3.3.0
body: <p>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.  </p>
  
  <p>Now I keep getting:</p>
  
  <blockquote>
    <p>BUILD FAILED in 35s
    16 actionable tasks: 15 executed, 1 up-to-date
    Exception in thread "ForkJoinPool.commonPool-worker-6" java.lang.IllegalStateException: AAPT Process manager cannot be shut down while daemons are in use
            at com.android.builder.internal.aapt.v2.Aapt2DaemonManager.shutdown(Aapt2DaemonManager.kt:96)
            at com.android.build.gradle.internal.res.namespaced.RegisteredAaptService.shutdown(Aapt2DaemonManagerService.kt:61)
            at com.android.build.gradle.internal.workeractions.WorkerActionServiceRegistry$shutdownAllRegisteredServices$1$1.run(WorkerActionServiceRegistry.kt:96)
            at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
            at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
            at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
            at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
            at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)</p>
  </blockquote>
  
  <p>My stacktrace is:</p>
  
  <blockquote>
    <p>Execution failed for task ':app:mergeMainReleaseResources'.
    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\productio
    n_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.</p>
    
    <p>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)</p>
    
    <p>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</p>
    
    <p>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)</p>
    
    <p>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)</p>
  </blockquote>
  
  <p>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.</p>
  
  <p>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.</p>
  
  <p>My build.gradle is:</p>
  
  <pre><code>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 -&gt;
              "$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 -&gt;
      def category
      variant.productFlavors.each { flavor -&gt;
          flavor.buildConfigFields.each { key, value -&gt;
              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 -&gt;
          if (dx.additionalParameters == null) {
              dx.additionalParameters = []
          }
          dx.additionalParameters += '--multi-dex'
          dx.additionalParameters += "--main-dex-list=$projectDir/&lt;filename&gt;".toString()
      }
  }
  
  apply plugin: 'com.google.gms.google-services'
  </code></pre>