сбой сборки во время слияния ресурсов с плагином Android Gradle 3.3.0 - PullRequest
0 голосов
/ 09 октября 2018

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

Ответы [ 11 ]

0 голосов
/ 21 марта 2019

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

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

Решение: -

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

0 голосов
/ 10 февраля 2019

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

Эта проблема была исправлена ​​в плагине Android Gradle 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 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")
        }
    }
}
0 голосов
/ 04 марта 2019

Для меня удалите все папки сборки и перезапустите систему, а затем снова откройте Android Studio, работающую в режиме отладки.

Обновление:

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

0 голосов
/ 25 января 2019

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

0 голосов
/ 06 февраля 2019

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

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

0 голосов
/ 17 января 2019

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

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

0 голосов
/ 10 декабря 2018

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

<?xml version="1.0" encoding="utf-8"?>
0 голосов
/ 13 октября 2018

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

0 голосов
/ 10 октября 2018

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

\res\drawable-xxxhdpi\background_4.png
...