сбои сборки во время слияния ресурсов с плагином Android Gradle 3.3.0

У меня есть много разных вкусов для моей сборки, которые имеют определенные ресурсы, и я не хочу загромождать свою директорию 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'

Ответ 1

Обновлено 19 апреля 2019 года

Эта проблема была исправлена в Android Gradle Plugin 3.4.0.

После обновления до Android Studio 3.4.0 временное исправление, предложенное в исходном ответе, может быть удалено. Ура!

Оригинал

Это ошибка в AAPT2 в плагине Android Gradle 3.3.0 при создании проекта с большим png (около 2-3 МБ и более).

@akong9759 создал проблему для этого на трекере проблем Google, и она была исправлена.

https://issuetracker.google.com/issues/117900475

Эта проблема была исправлена в Android Gradle Plugin 3.5.0-alpha03, и исправление планируется выпустить в версии 3.4.0.

По этому вопросу было предложено временное исправление для плагина Android Gradle 3.3.0. Добавьте следующее к проекту 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")
        }
    }
}

Ответ 2

Я была такая же проблема. Сборка сломалась бы и упоминала разные png файлы, такие как background_4.png, но только на ПК с Windows. Сборка на Mac не имела проблем.

В моем случае проблема была в размере изображения. Только изображения размером более 2 МБ сшиты, чтобы сломать сборку. После уменьшения каждого изображения до размера менее 2 МБ сборка снова начала работать.

Ответ 3

Тщательно проверяйте свои файлы макета XML в моем случае проблема была дубликатом XML

<?xml version="1.0" encoding="utf-8"?>

Ответ 4

Вам необходимо проверить файлы layout.xml. Там может быть что-то не так. Я получил ту же ошибку и исправил ошибку в файле макета. Это сработало для меня.

Ответ 5

Вам нужно очистить старые кэши от зависимостей gradle и maven. Например, попробуйте удалить файлы под .m2 и .gradle а затем Invalidate Caches/Restart...

Кроме того, можно попытаться отключить enableAapt2, установив его в false внутри gradle.properties

android.enableAapt2=false

Ответ 6

Из журнала Похоже, что одно из ваших png-изображений может быть повреждено, попробуйте заменить или удалить его и попытаться построить.

\res\drawable-xxxhdpi\background_4.png

Ответ 7

Если вы измените варианты, он автоматически настроит себя... Значит, если вы собираетесь бежать бесплатно (выберите из встроенных вариантов), то платный аромат будет красным и наоборот.

Ответ 8

в моем случае проблема была в размере изображения, как сказал Стефан Лозинг.

Ответ 9

Проведя долгий день с этой проблемой, я решил ее, просто загрузив GIMP и преобразовав PNG файлы в JPG, как это было предложено кем-то из специалистов по отслеживанию ошибок в Google.

Это творило чудеса, и мне не пришлось менять какой-либо другой файл, версию пакета или настройку.

Ответ 10

Для меня удалить все папки сборки и перезапустить систему и снова открыть Android Studio работает в режиме отладки.

Обновить:

Один из моих png выдавал ошибку : error: failed to read PNG signature: file does not start with PNG signature Я открываю и снова экспортирую в png. Теперь он работает с каждым вариантом сборки. И удалить один нулевой байт png. Кто-нибудь сделать это красиво, если работает/Спасибо

Ответ 11

Я решил эту проблему после уменьшения размера изображения.

  • Заметив разницу в размерах между изображением, вызвавшим проблему, и другими изображениями, вы найдете его отличным по размеру.

Ответ 12

Я столкнулся с этой ошибкой в одном из моих приложений. Фактическая причина проблемы была gradle: 3.3.2 в моем проекте gradle.

"classpath 'com.android.tools.build:gradle:3.3.2'"

Я решил эту ошибку, просто добавив две строки в своем приложении gradle

android {
    ..
    defaultConfig {
        ..
    }
    buildTypes {
        release {
            ..
        }
    }
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
}

просто добавьте cruncherEnabled и используйте NewCruncher в false, и вы готовы к работе.

Ответ 13

Решение: -

Просто удалил drawable-xxxhdpi\background_4.png и заново сгенерировал ресурсы Android, запустив ionic cordova resources android --force