No se pudo encontrar la propiedad 'processManifest' en com.android.build.gradle.internal.api.ApplicationVariantImpl

Resuelto verybadalloc asked hace 54 años • 5 respuestas

Actualmente estoy intentando actualizar Android Studio a 1.0.0-RC. Esto parece requerir el complemento Gradle para Android 1.0.0-rc1. Después de la actualización, comencé a tener el siguiente error:

`Could not find property 'processManifest' on com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@b9da89c.`

Investigando un poco, parece que processManifestes una de las propiedades obsoletas que se eliminaron en la versión 0.14.3 . ¿Alguna idea de cuál es el nuevo nombre de la propiedad? La misma guía del usuario no se ha actualizado para la nueva versión, por lo que no puedo encontrar ninguna documentación al respecto.

EDITAR: Aquí está el código que necesita la propiedad. Lo uso para inyectar algunos valores de tiempo de compilación en el manifiesto:

applicationVariants.all { variant ->
        variant.processManifest << {
            def manifestOutFile = variant.processManifest.manifestOutputFile
            def newFileContents = manifestOutFile.getText('UTF-8')
                    .replace("{GOOGLE_MAPS_KEY}", variant.buildType.ext.google_maps_key)
            manifestOutFile.write(newFileContents, 'UTF-8')
        }
    }
verybadalloc avatar Jan 01 '70 08:01 verybadalloc
Aceptado

También recibí este error después de actualizar a Android Studio 1.0.0 en el canal Beta. Sin embargo, no pude encontrar ninguna referencia en mis propios archivos gradle a processManifest. Después de buscar un poco, me di cuenta de que necesitaba un nuevo complemento de Gradle de Robolectric:

https://github.com/robolectric/robolectric-gradle-plugin/releases

El uso de la versión 0.14.0 del complemento Robolectric Gradle (y la versión 2.4 de Robolectric) resolvió el error.

Kio Krofovitch avatar Dec 04 '2014 21:12 Kio Krofovitch

No he podido encontrar una solución al problema, sino simplemente una solución alternativa. El complemento Android Gradle La versión 0.11 presenta una nueva API llamada Manifest merger . Permite lograr lo mismo que mi truco me permitió hacer.

Estos son los cambios necesarios:

  • Rodea cualquier variable que inyectes en tu manifiesto con"${GOOGLE_MAPS_KEY}"
  • Defina un manifestPlaceholdersmapa en cada BuildType. Eso es:

    buildTypes {
        debug {
            manifestPlaceholders = [GOOGLE_MAPS_KEY: "xxxxxxxxxxxxxxxxxxxx"]
        }
        release {
            manifestPlaceholders = [GOOGLE_MAPS_KEY: "xxxxxxxxxxxxxxxxxxxx"]
        }
     }
    

¡Eso es todo! El complemento reemplazará automáticamente esas variables en su Manifiesto. ¡Con buena pinta!

verybadalloc avatar Dec 04 '2014 22:12 verybadalloc