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

  • ScrollView - ¿Cómo desplazarse hacia abajo mientras se diseña el diseño en Eclipse?
  • Tamaño de imagen de mapa de bits de Android en xml
  • ¿Cómo afectar a elementos fuera de un listview cuando se hace clic en algunos elementos de la vista de lista?
  • Android NDK r4 san-angeles problema
  • Android: cómo escalar una imagen para llenar el fondo de un LinearLayout sin preservar la relación de aspecto?
  • Widget de conexión de Android facebook: org.json.JSONException
  • GUIs basadas en XML y rendimiento
  • Cambiar entre previsualización de referencia y valor de recursos de cadena en el editor xml
  • grupo de radio setOnCheckedChangeListener
  • ¿Cómo extracto el texto de un xml anidado usando xmlpullparser en android?
  • Hacer AppBarLayout responder a desplazamiento en WebView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.