web-dev-qa-db-fra.com

échec de la construction lors de la fusion de ressources avec Android plugin Gradle 3.3.0

Pour ma construction, j'ai beaucoup de variantes qui ont des ressources spécifiques et je ne veux pas encombrer mon répertoire src dans mon projet avec un tas de répertoires spécifiques à une saveur, aussi j’ajoute les jeux sources d’un autre dossier de mon projet auparavant à la tâche mergeResources (mergeResources.doFirst). Cela a toujours fonctionné depuis plusieurs versions du plug-in Android Gradle (versions 3.1.0-3.2.0 et certaines des versions 3.3.0-alpha), mais à un moment donné, la version 3.3 .0-alpha AGP a commencé à causer des échecs de construction au cours de cette tâche mergeResources.

Maintenant je continue à recevoir:

BUILD FAILED in 35s 16 tâches pouvant être exécutées: 15 exécutées, 1 exception à jour dans le thread "ForkJoinPool.commonPool-worker-6" Java.lang.IllegalStateException: Le gestionnaire de processus AAPT ne peut pas être arrêté tant que des démons sont utilisés sur com. Android.builder.internal.aapt.v2.Aapt2DaemonManager.shutdown (Aapt2DaemonManager.kt: 96) sur le site com.Android.build.gradle.internal.res.namespaced.RegisteredAaptService.shutdown (Aapt2DaemonManagerService.kt: 61) build.gradle.internal.workeractions.WorkerActionServiceRegistry $ shutdownAllRegisteredServices $ 1 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)

Mon stacktrace est:

L'exécution a échoué pour la tâche ': app: mergeMainReleaseResources'. Java.util.concurrent.ExecutionException: com.Android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon # 0: erreur inattendue lors de la compilation 'C:\Utilisateurs\Alex\Documents\Work\Android\project\app\sources_produits\categories\fitness\res\drawable-xxxhdpi\background_4.png ', en essayant d'arrêter le démon. Cela ne devrait pas se produire dans des circonstances normales, veuillez signaler un problème si cela se produit.

L'exception est: org.gradle.api.tasks.TaskExecutionException: L'exécution a échoué pour la tâche ': app: mergeMainReleaseResources'. à la org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions (ExecuteActionsTaskExecuter.Java:110) à org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute .api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.exage (OutputDirectoryCreatingTaskExecuter.Java:51) à org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute.execute (pain) .tasks.execution.ResolveTaskOutputCachingStateExecuter.ResolveTaskOutputCachingStateExecuter.Java:54) chez org.gradle.api.internal.tasks.exécution.ValidatingTaskExecuter.externe .SkipEmptySourceFilesTaskExecuter.execute (SkipEmptySourceFilesTaskExecuter.Java:101) à org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute (FinalizeInputFile .exter.traitement .tasks.execution.SkipTaskWithNoActionsExecuter.execute (SkipTaskWithNoActionsExecuter.Java:59) à org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecute.execute (SkipOnlyIfT) Vous pouvez faire usage de exécutez (EventFiringTaskExecuter.Java:51) à org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.Java:300) à org.gradle.internal.operations.DefaultBildOperationE xRegarderBuildOrdinateurDeServicesDeServicesTrouver à org.gradle.internal.operations.DelegatingBuildOperationExecutor.run (DelegatingBuildOperationExecutor.Java:31) à org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute (EventFiringTaskExecuter.Edition). .LocalTraderDuForm : 262) à org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker $ 1.execute (DefaultTaskPlanEx ecutor.Java:135) à org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ $ ExecutorWorker $ 1.execute (DefaultTaskPlanExecutor.Java:130) au sein de votre système de stockage org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker.executeWithWork (DefaultTaskPlanExecutor.Java:191) à org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker.run (par défaut). ExecutorPolicy $ CatchAndRecordFailures.onExecute (ExecutorPolicy.Java:63) à l'adresse org.gradle.internal.concurrent.ManagedExecutorImpl $ 1.run (ManagedExecutorImpl.Java:46) à la page : 55)

Causée par: 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: Inattendu erreur lors de la compilation 'C:\Utilisateurs\Alex\Documents\Travail\Android\projet\app\sources de production\catégories\fitness\res\drawable-xxxhdpi\background_4.png', en essayant d'arrêter le démon. Cela ne devrait pas se produire dans des circonstances normales, veuillez signaler un problème si cela se produit. à org.gradle.internal.UncheckedException.throwAsUncheckedException (UncheckedException.Java:63) à org.gradle.internal.UncheckedException.throwAsUncheckedException (UncheckedException.Java:40) à org.gradle.Java:40 : 76) à 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) .internal.exploitations.defaultBuildOperationExecutor $ RunnableBuildOperationWorker.ork ons.DefaultBuildOperationExecutor.exute (DefaultBuildOperation.Java:174) à org.gradle.performations à org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction (ExecuteActionsTaskExecuter.Java:120) à org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuterActuteAexecal more Causée par: Java.util.concurrent.ExecutionException: com.Android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon # 0: erreur inattendue lors de la compilation 'C:\Utilisateurs\Alex\Documents\Work\Android\project\app\sources_production\catégories\fitness\res\drawable-xxxhdpi\background_4.png ', en essayant d'arrêter le démon. Cela ne devrait pas se produire dans des circonstances normales, veuillez signaler un problème si cela se produit. à com.Android.ide.common.workers.ExecutorServiceAdapter.close (ExecutorServiceAdapter.kt: 56) à com.Android.build.gradle.internal.aapt.WorkerExecutorResourceCompilationService.close (WorkerExecutorResourceCompilationSice.ic). .gradle.tasks.MergeResources.doFullTaskAction (MergeResources.Java:268) à l'adresse com.Android. (JavaMethod.Java:73) ... 42 plus

Causé par: com.Android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.0-alpha13-5013011-windows Daemon # 0: erreur inattendue lors de la compilation 'C:\Utilisateurs\Alex\Documents\Work\Work\Android\project\app\sources_production\categories\fitness\res\drawable-xxxhdpi\background_4.png ', en essayant d'arrêter le démon. Cela ne devrait pas se produire dans des circonstances normales, veuillez signaler un problème si cela se produit. sur com.Android.builder.internal.aapt.v2.Aapt2Daemon.handleError (Aapt2Daemon.kt: 148) sur com.Android.builder.internal.aapt.v2.Aapt2Daemon.compile (Aapt2Daemon.kt: 88) sur com.Android .builder.internal.aapt.v2.Aapt2DaemonManager $ LeasedAaptDaemon.compile (Aapt2DaemonManager.kt: 170) à l'adresse com.Android.build.grad.grad.res.a. Android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable $ run $ 1.invoke (Aapt2CompileWithBlameRunnable.kt: 28) à l'emplacement de base (1). .Android.build.gradle.internal.res.namespaced.Aapt2DaemonManagerService.useAaptDaemon $ default (Aapt2DaemonManagerService.kt: 69) dans le répertoire com.Android.build.gradle.internal.res.Aapt2DaemonManagerService.kt: 69 .Android.ide.common.workers.ExecutorServiceAdapter $ submit $ submission $ 1.run (ExecutorServiceAdapter.kt: 39)

Causée par: Java.io.IOException: le processus AAPT2 se ferme de manière inattendue. Erreur de sortie: sur com.Android.builder.internal.aapt.v2.Aapt2DaemonImpl $ WaitForTaskCompletion.err (Aapt2DaemonImpl.kt: 309) sur com.Android.builder.internal.aapt.v2.Aapt2DaemonImpl $ processOutput $ 1.err (Aapt2d.). kt: 75) à l'adresse com.Android.utils.GrabProcessOutput $ 1.run (GrabProcessOutput.Java:104)

Je pensais que le fichier PNG était peut-être corrompu ou mal étiqueté, mais je l’ai analysé lors de nombreuses conversions et j’obtiens la même erreur.

Pendant les tests, cela fonctionne bien, mais lors de la publication des versions, j’obtiens cette erreur. J'ai eu recours à AS 3.2 et AGP 3.2.0 pour les versions de production, ce qui fonctionne bien. En outre, il s'agit uniquement de Windows. Cela fonctionne bien sur mon Mac.

Mon build.gradle est:

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'
10
akong9759

Ceci est un bogue de l'AAPT2 dans Android Gradle Plugin 3.3.0 lors de la construction d'un projet avec des png plus grands (environ 2-3 Mo et plus).

@ akong9759 a créé un problème pour cela dans le suivi des problèmes de Google et le problème a été corrigé.

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

Le problème a été résolu dans Android Gradle Plugin 3.5.0-alpha03 et le correctif est prévu pour la version 3.4.0.

Un correctif temporaire pour Android Gradle Plugin 3.3.0 a été suggéré. Ajoutez les éléments suivants au projet 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")
        }
    }
}
8
Michel Gammelgaard

J'ai eu le même problème. La construction casserait et mentionnerait différents fichiers png, comme votre background_4.png, mais uniquement sur un PC Windows. La construction sur un Mac n'a eu aucun problème.

Dans mon cas, la taille de l'image était le problème. Seules les images plus grandes que 2Mo ont été cousues pour casser la construction. Après avoir réduit chaque image à moins de 2 Mo, la construction a recommencé à fonctionner.

9
Stefan Lösing

D'après le journal Il semblerait qu'une image PNG soit peut-être corrompue. Essayez de la remplacer ou de la supprimer et essayez de la créer.

\res\drawable-xxxhdpi\background_4.png
0
Karan Mer

Après avoir passé une longue journée sur le problème, je l'ai résolu en récupérant simplement le GIMP et en convertissant les fichiers PNG en JPG, comme suggéré par quelqu'un dans le suivi des problèmes de Google .

Cela a fait des miracles, et je n'ai pas eu à changer d'autres fichiers, versions de packages ou paramètres.

0
Umur Karagöz

Si vous voulez changer de variante, il se configurera automatiquement .......... Signifie que si vous allez courir librement (Choisissez parmi les variantes construites), la saveur payée sera rouge et vice-versa.

0
maneeshsagar

Vous devez vérifier vos fichiers layout.xml. Il se peut qu'il y ait quelque chose qui ne va pas ... J'ai eu la même erreur et résolu le problème sur le fichier de présentation. Cela a fonctionné pour moi.

0
Arti patel

Vérifiez votre mise en page des fichiers XML avec soin dans mon cas, le problème était de dupliquer XML

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

Vous devez nettoyer vos anciennes caches de dépendances Gradle et Maven. Par exemple, essayez de supprimer les fichiers sous .m2 et .gradle, puis Invalidate Caches/Restart ...

Aussi, vous pouvez essayer de désactiver enableAapt2 en le définissant sur false dans gradle.properties

Android.enableAapt2=false
0
shizhen