Usar el nombre del paquete en XML

Estoy usando Android Studio para crear mi aplicación. Me gustaría usar gradle buildTypes. Añado un sufijo al nombre del paquete con applicationIdSuffix para modificar el nombre del paquete para un tipo de compilación de prueba.

 buildTypes { debug { runProguard false proguardFile 'proguard-rules.txt' applicationIdSuffix '.dev' versionNameSuffix '-dev' } } 

¿Es posible utilizar esta información en un archivo xml. Mi plan es modificar el tipo de cuenta:

 <account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" android:accountType=<<PACKAGE NAME HERE ??>> android:icon="@drawable/icon" android:label="@string/app_name"/> 

¡Gracias!

4 Solutions collect form web for “Usar el nombre del paquete en XML”

Mientras uou puede utilizar ${packageName} para rellenar el nombre del paquete generado en el Manifest:

 <account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" android:accountType="${packageName}" android:icon="@drawable/icon" android:label="@string/app_name"/> 

Esto actualmente (Android Gradle 0.11) no funciona con archivos de recursos. Unesdoc.unesco.org

En su lugar, debe crear una versión independiente del archivo de recursos para cada tipo de construcción / variante que desee con un tipo de cuenta diferente:

  • Src
    • Debug / res / xml / authenticator.xml (con el nombre del paquete de depuración)
    • Main / res / xml / authenticator.xml (con nombre de paquete predeterminado)

Esta es otra solución provisional hasta que el complemento de Android Gradle obtiene soporte para marcadores de posición en archivos de recursos .

Puede crear de forma dinámica un recurso de cadena a través de Gradle en el defaultConfig y / o buildTypes y / o productFlavors :

 android { defaultConfig { applicationId 'com.foo.bar' resValue 'string', 'package_name', applicationId } } 

A continuación, puede hacer referencia a ella en su archivo authenticator.xml como lo hace para la etiqueta:

 <account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" android:accountType="@string/package_name" android:icon="@drawable/icon" android:label="@string/app_name"/> 

En la parte superior de la respuesta de jenzz , tuve que hacer esto, ya que mi caso es como pregunta, añado applicationIdSuffix para la versión de depuración de la aplicación.

 android { ... defaultConfig { applicationId "..." ... } .... buildTypes { release { ... resValue 'string', 'application_id', android.defaultConfig.applicationId } debug { ... applicationIdSuffix '.debug' resValue 'string', 'application_id', android.defaultConfig.applicationId + applicationIdSuffix } } 

Entonces en cualquier recurso de xml , puedo conseguir la identificación de la aplicación como esto: @string/application_id

Acabo de crear un complemento gradle para esto: com.inutilfutil.android-resource-placeholder

Sólo incluirlo y los marcadores de posición se reemplazarán en todos los recursos XML

  • ADT muestra error en Strings.xml
  • ¿Hay alguna documentación de Android XML?
  • Android: traducciones en recursos
  • ¿Qué sucede si la minSdkVersion es menor que la targetSdkVersion?
  • ¿Cómo puedo obtener una vista de texto para que aparezca debajo de otra vista de texto? Androide
  • Error Unparsed Aapt
  • Cómo obtener el ancho en píxeles de vista con android: layout_width = "wrap_content"?
  • ¿Puede Android Studio extraer automáticamente las referencias de un archivo XML de diseño en el archivo de actividad java?
  • RecyclerVista el espacio entre los elementos que se expanden al desplazarse
  • Editar texto dentro de la vista de desplazamiento no se puede desplazar
  • Ancho del elemento RecyclerView layout_width = "match_parent" no coincide con el padre
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.