47 votes

Déclaration d'espace de noms XML: nom du package de substitution automatique

J'ai un anroid de projet à construire plusieurs cibles (en utilisant ant). Pour des fins de test, ceux build targets tous ont différents noms de paquets (donc mon nom de package est com.mycompany.myapp pour la libération de construire et de com.mycompany.myapp.test pour le test de construire).

Cela fonctionne bien pour la plupart, sauf quand il s'agit de la coutume des espaces de noms xml dans les fichiers de mise en page. Donc ceci:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res/com.mycompany.myapp" />

arrête de fonctionner dès que le nom du paquet est remplacé par com.mycompany.myapp.test.
À cause de cela, je dois remplacer com.mycompany.myapp valeur de chaque heure de cours prêts à l'emploi. Et depuis toutes ces fichiers doivent être dans vcs, et ne devrait pas en conflit à chaque fois une personne commutateurs de configuration et de leur fusionne, j'ai dû déplacer des fichiers de mise en configuration spécifique dossier, où elles pourraient ressembler:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res/@CONFIG.PACKAGENAME@" />

Maintenant, ces fichiers sont stockés dans vcs, et @CONFIG.PACKAGENAME@ est remplacé au cours prêts à l'emploi, puis le fichier est copié à partir de ./config/file.xml d' ./res/layout/file.xml.

C'est extrêmement inconvinient et n'a pas vraiment bien (je ne peux pas imaginer de mentionner chacun des 50 fichiers dans le script de construction).

Donc ma question est: est-il un moyen d'utiliser automatiquement le courant nom du package dans la déclaration d'espace de noms? Ou au moins modife mise en page des fichiers (ou des fichiers de build?) de sorte que j'ai l'habitude d'avoir à les remplacer com.mycompany.myapp chaque fois que je change de nom de paquet.

118voto

Alexey Points 2094

Il s'avère qu'il existe un postfixe pour cela: res-auto.

Donc tout ce que vous avez à faire est d'écrire

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto" />
 

Cela utilisera automatiquement le nom du paquet actuel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X