2012-12-28 4 views
0

J'ai un projet de bibliothèque qui sert de backend pour un certain nombre d'autres projets. Il fait la connexion Web et l'analyse syntaxique, etc. Ensuite, j'ai d'autres projets frontaux qui s'appuient sur cela. Pour les environnements de développement et de serveur, j'ai écrit un script de génération ANT qui remplace certaines valeurs dans les bases de code sur le type de construction. J'ai donc deux cibles buildDev et buildProd.Projet de bibliothèque Android personnalisé build Ant

Existe-t-il un moyen pour que les valeurs soient correctement définies lors de la construction de la dépendance (projets non-bibliothèque). Par exemple. si je fais ant debug sur le projet, il construit le backend avec ant buildDev et si je fais ant release il le fait avec ant buildProd.

Je suis assez sûr que ce n'est pas possible, alors quelles sont les alternatives. Pour les curieux, les versions personnalisées ne font que remplacer un fichier dont les variables statiques sont affectées de valeurs différentes en fonction du type de construction. Rien de trop complexe.

Répondre

0

J'ai trouvé la solution. Par défaut, Android Ant build.xml transmet le nom de la version au script du projet de bibliothèque enfant lors de l'appel. Les lignes suivantes et le code qui suit le détaille.

<!-- figure out which target must be used to build the library projects. 
If emma is enabled, then use 'instrument' otherwise, use 'debug' --> 
<condition property="project.libraries.target" value="instrument" else="${build.target}"> 
    <istrue value="${build.is.instrumented}" /> 
</condition> 

Ensuite, il suffit d'avoir les mêmes cibles dans tous les projets interdépendants.

1

Dans Ant, il existe différentes tâches pouvant être utilisées pour modifier les propriétés d'un fichier.

Je suis sûr que vous êtes au courant des dossiers de propriété, donc si vous utilisez la documentation ici:

http://ant.apache.org/manual/index.html

Il pourrait probablement vous aider. Si vous définissez vos variables dans un fichier de propriétés ant-style, pour certaines générations, vous pouvez avoir des fichiers séparés pour des générations distinctes, et donc avoir les variables correctement définies.

Si vous parlez d'avoir des variables définies dans votre source, essayez la tâche de copie:

http://ant.apache.org/manual/index.html

Filterchains sur une tâche de copie vous permettra de remplacer certaines lignes de code d'un fichier. Donc, si vous avez une variable nommée server_ip ou quelque chose comme ça, vous pouvez utiliser une chaîne de filtres pour changer cette valeur et recopier ce fichier source dans votre arbre.

J'espère que cela répond à vos questions. Sinon, soyez doux. Je suis un peu nouveau à répondre à des choses et je me suis légèrement mâché sur un haha ​​post Android.

+0

J'ai trouvé la solution comme je l'ai mis en place. Merci de votre aide. –