У меня есть много разных вариантов для моей сборки, которые имеют определенные ресурсы, и я не хочу загромождать мою директорию src в своем проекте кучей специфичных для ароматов каталогов, поэтому я добавляю исходные наборы из другой папки вмой проект до задачи mergeResources (mergeResources.doFirst).Это всегда работало для последних нескольких версий плагина Android Gradle (3.1.0-3.2.0 и некоторых версий 3.3.0-alpha), но в определенный момент запускалась версия 3.3.0-alpha AGPвызывая сбои сборки во время этой задачи mergeResources.
Теперь я продолжаю получать:
СБОЙ ПО СТРОИТЕЛЬСТВУ за 35 с 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 $.$ RunnableExecuteAction.exec (ForkJoinTask.java:1402) в java.util.concurrent.ForkJoinTask.doExec (ForkJoinTask.java:289) в java.util.concurrent.ForkJoinPool $ WorkQuek.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 Демон # 0: непредвиденная ошибка во время компиляции 'C: \ Users \ Alex \Документы \ Work \ Android \ project \ app \ 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:gra.grag: at77).api.internal..tasks.execution.ResolveTaskOutputCachingStateExecuter.execute (ResolveTaskOutputCachingStateExecuter.java:54) в org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute.a.as.gra..SkipEmptySourceFilesTaskExecuter.execute (SkipEmptySourceFilesTaskExecuter.java:101) в org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute (FinalizeInputFileProgra.jpg) org.jpg.api.internal..tasks.execution.SkipTaskWithNoActionsExecuter.execute (SkipTaskWithNoActionsExecuter.java:59) в org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute (SkipOn54)в org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute (ExecuteAtMostOnceTaskExecuter.java:43) в org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter:ex.jas ().api.internal.tasks.execution.EventFiringTaskExecuter $ 1.run (EventFiringTaskExecuter.java:51) по адресу org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationdlegras.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:292) по адресу org.gradle.internal.operations.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor.java:174)в 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.tjException.TackGateTackGameпо адресу org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ BuildOperationAwareWorkItemExecutor.execute (DefaultTaskExecutionGraph.java:262) по адресу org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.exec.kg_1_1taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker $ 1.execute (DefaultTaskPlanExecutor.java:130) в org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker.execute (DefaultTaskPlanExecWex.ExecWorks.ExgTecutor.Gutor.GateTecGT.Text)(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 (Управляемый orgec.gradle.internal.concurrent.ThreadFactoryImpl $ ManagedThreadRunnable.run (ThreadFactoryImpl.java:55)
Вызвано: org.gradle.internal.UncheckedException: java.util.concurrent.ExecutionException: com.android.buil.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon # 0: непредвиденная ошибка при компиляции 'C: \ Users \ Alex \ Documents \ Work \ Android \ project \ app \ production_resources \ category \ 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.JavaMetavaethoin.in: 76) в org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute (IncrementalTaskAction.java:50) в org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute (StandardTaskAction).org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute (StandardTaskAction.java:26) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter $ 1.run (ExecuteActionsTaskExdlegra) или.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:300)по адресу org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:292) по адресу org.gradle.internal.operations.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExefaultoo.guo.jup).run (DefaultBuildOperationExecutor.java:90) в org.gradle.internal.operations.DelegatingBuildOperationExecutor.run (DelegatingBuildOperationExecutor.java:31) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExctions) at 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 Демон # 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 (WorkerExecutorResourceCompilationSerbu..gradle.tasks.MergeResources.doFullTaskAction (MergeResources.java:268) в com.android.build.gradle.internal.tasks.IncrementalTask.taskAction (IncrementalTask.java:106) в org.gradle.internal.rekedJ.(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.invokeable atileb atable.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable $ run $ 1.invoke (Aapt2CompileWithBlameRunnable.kt: 28) в com.android.build.gradle.internal.res.namespaced..android..android.ide.common.workers.ExecutorServiceAdapter $ представить $ представления $ 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 $ processRutput.kt: 75) at 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: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'