Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Obtener el nombre del paquete de la variante de aplicación en el complemento gradle

Estoy construyendo un complemento gradle que agrega una nueva tarea para cada variante de aplicación. Esta nueva tarea necesita el nombre del paquete de la variante de aplicación.

Este es mi código actual, que dejó de funcionar con la versión más reciente del complemento androide gradle:

private String getPackageName(ApplicationVariant variant) { // TODO: There's probably a better way to get the package name of the variant being tested. String packageName = variant.generateBuildConfig.packageName if (variant.processManifest.packageNameOverride != null) { packageName = variant.processManifest.packageNameOverride } packageName } 

Esto ha dejado de funcionar en la versión más reciente del complemento android debido a cambios en el proceso de configuración de la compilación. Parecía un hack antes de todos modos, así que no estoy sorprendido de que dejó de funcionar. ¿Hay una manera canónica de obtener el nombre del paquete?

  • SignedConfigs me da un error de Lint en build.gradle después de actualizar a v22
  • ¿Cuál es la forma correcta de configurar Android applicationId cuando se utilizan dimensiones de sabor?
  • Google Play "Plataformas nativas" que muestra commons-io-2.4.jar
  • Construya androide con gradle, substituya la cadena cada sabor del producto
  • Gradle: Android Studio hereda buildtype
  • ¿Cómo encontrar la versión de la biblioteca de Gradle Dependency? Android Studio
  • Problema de migración de desarrollo nativo de Android Studio 2.2
  • Cómo suprimir "advertencia: Ignorar el atributo InnerClasses para una clase interna anónima" con Gradle?
  • 3 Solutions collect form web for “Obtener el nombre del paquete de la variante de aplicación en el complemento gradle”

    Yo uso esto:

     // Return the packageName for the given buildVariant def getPackageName(variant) { def suffix = variant.buildType.packageNameSuffix def packageName = variant.productFlavors.get(0).packageName if (suffix != null && !suffix.isEmpty() && suffix != "null") { packageName += suffix } return packageName } 

    La única manera que encontré fue definir packageName en el packageName del proyecto y luego desde el plugin hacer project.android.defaultConfig.packageName .

    Si el proyecto tiene sabores que definen su propio paquete entonces la solución indicada por stealthcopter funcionaría.

    Sin embargo, un plugin está destinado a trabajar con cualquier proyecto regarless si packageName está definido o no en build.gradle por lo que estas soluciones están lejos de ser ideal.

    Hazme saber si encuentras algo mejor.

    Esto manejará la applicationIdSuffix invalidable para usted:

     android.applicationVariants.all { variant -> def applicationId = [variant.mergedFlavor.applicationId, variant.buildType.applicationIdSuffix].findAll().join() println applicationId } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.