У меня есть много разных вкусов для моей сборки, которые имеют определенные ресурсы, и я не хочу загромождать свою директорию src в моем проекте с кучей специфических для него каталогов, поэтому я добавляю исходные наборы из другой папки в моем проекте раньше в задачу mergeResources (mergeResources.doFirst). Это всегда работало на последние несколько версий подключаемого модуля Android Gradle (3.1.0-3.2.0 и некоторые версии 3.3.0-alpha), но в какой-то момент началось развертывание 3.3.0-alpha AGP вызывая сбои сборки во время этой задачи mergeResources.
Теперь я продолжаю получать:
BUILD FAILED in 35s 16 действительных задач: 15 выполненных, 1 актуальное исключение в потоке "ForkJoinPool.commonPool-worker-6" java.lang.IllegalStateException: диспетчер процессов AAPT нельзя отключить, пока демоны используются в com. android.builder.internal.aapt.v2.Aapt2DaemonManager.shutdown(Aapt2DaemonManager.kt: 96) в com.android.build.gradle.internal.res.namespaced.RegisteredAaptService.shutdown(Aapt2DaemonManagerService.kt: 61) в com.android. build.gradle.internal.workeractions.WorkerActionServiceRegistry $ shutdownAllRegisteredServices $ 1 $ 1.run(WorkerActionServiceRegistry.kt: 96) в java.util.concurrent.ForkJoinTask $ RunnableExecuteAction.exec(ForkJoinTask.java:1402) в java.util.concurrent.ForkJoinTask. doExec (ForkJoinTask.java:289) в java.util.concurrent.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1056) в java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) на java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Мой стек:
Выполнение не выполнено для задачи ': app: mergeMainReleaseResources'. java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon # 0: Неожиданная ошибка при компиляции 'C:\Users\Alex\Документы\Работа\Android\проект\приложение\productio n_resources\categories\fitness\res\drawable-xxxhdpi\background_4.png ', попытка остановить демон. Это не должно происходить при нормальных обстоятельствах, пожалуйста, сообщите о проблеме, если это произойдет.
Исключение: 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). run (EventFiringTaskExecuter.java:51) в org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300) в org.gradle.internal.operations.DefaultBuildOperationE xecutor $ 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) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker $ 1.execute(DefaultTaskPlanEx ecutor.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)
Вызвано: 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: Неожиданный ошибка во время компиляции 'C:\Users\Alex\Documents\Work\Android\project\app\production_resources\categories\fitness\res\drawable-xxxhdpi\background_4.png', пытаясь остановить демона. Это не должно происходить при нормальных обстоятельствах, пожалуйста, сообщите о проблеме, если это произойдет. at 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) at 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.operati ons.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 more Причиняется: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon # 0: Неожиданная ошибка при компиляции 'C:\Пользователи\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
Вызвано: 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) at com.android.build.gradle.internal.res.namespaced.Aapt2DaemonManagerService.useAaptDaemon $ default (Aapt2DaemonManagerService.kt: 69) в com.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable.run(Aapt2CompileWithBlameRunnable.kt: 34) at com.android.ide.common.workers.ExecutorServiceAdapter $ представить $ представления $ 1.Run(ExecutorServiceAdapter.kt: 39)
Вызывается: java.io.IOException: процесс AAPT2 неожиданно завершается. Выход ошибки: at 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)
Я думал, возможно, файл PNG был поврежден или неправильно помечен, но я выполнил его через целую цепочку конверсий, и я получаю ту же ошибку.
Во время тестирования он работает нормально, но во время сборки релиза возникает, когда я получаю эту ошибку. Я прибегал к созданию с использованием AS 3.2 и AGP 3.2.0 для своих производственных сборок, который отлично работает. Кроме того, это только Windows. Он отлично работает на моем Mac.
Мой build.gradle:
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:[email protected]') {
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'