Comment puis-je référencer des fichiers jar externes dans un répertoire commun (pas libs) pour construire des projets Android à l'aide de fourmis?

StackOverflow https://stackoverflow.com/questions/5312478

Question

Je voudrais construire plusieurs projets Android qui référencent les mêmes fichiers JAR à l'aide de fourmis. Je ne veux pas copier le fichier jar à chaque répertoire libs dans le projet (en raison de la façon dont l'arbre de contrôle de code source est mis en place). Les réponses Je trouver dire ici « les mettre dans le répertoire libs » qui ne résout pas ce problème.

La question est, comment puis-je configurer mes scripts de compilation des fourmis android pour référencer un pot commun dans un répertoire distinct en dehors du projet (et non dans « libs »)?

Était-ce utile?

La solution

Dans le sdk, il y a des fichiers de fourmis sous tools/ant. En main_rules.xml, vous trouverez la section de code suivant:

<!-- Directory for the third party java libraries -->
<property name="jar.libs.dir" value="libs" />
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
<!-- create a path with all the jar files, from the main project and the
     libraries -->
<path id="jar.libs.ref">
    <fileset dir="${jar.libs.absolute.dir}" includes="*.jar" />
    <path refid="project.libraries.jars" />
</path>

Voici comment le code de construction fourmi détermine où obtenir les pots de. Vous pouvez surcharger la valeur de jar.libs.dir dans votre build.properties depuis qui est lu avant cette section et surchargerait la valeur. Montrer du doigt que dans un répertoire commun que vous souhaitez utiliser fera ce que vous suggérez. Vous devrez peut-être jouer avec quelques-uns pour le faire fonctionner comme vous le souhaitez.

Une mise en garde est que je ne sais pas si cela aura un impact négatif sur les autres activités du cycle de vie de construction.

Autres conseils

Il semble que les nouveaux outils de sdk rendent cela plus facile à accomplir. J'ai libs maître dossier que toute ma part de projets Android et je juste ajouté ceci au fichier ant.properties pour le faire paraître d'un niveau pour les libs.

jar.libs.dir=../libs

Comme par la question ici et ma réponse provenant , la solution proposée ne fonctionne pas comme maintenant. Jusqu'à ce que le bogue déposé est fixé. La solution, comme mentionné dans la réponse référencée, est copié ci-dessous.


J'ajouter à mon modèle de custom_rules.xml et il semble fonctionner très bien. Je croyais que c'est seulement quelques plus de lignes que chemin ajoutant au fichier ant.properties jusqu'à ce que nous obtenons une meilleure solution.

<target name="-pre-compile">
    <path id="project.all.jars.path">
    <path path="${toString:project.all.jars.path}"/>
    <fileset dir="${jar.libs.dir}">
        <include name="*.jar"/>
    </fileset>
    </path>
</target>

Si vous utilisez Linux, juste créer des liens symboliques des fichiers jar externes, puis les placer tous dans libs. Ant fonctionne très bien.

Edité

faire place que tous les liens symboliques directement dans libs (pas les sous-répertoires). Je suis sûr que cela peut être re-config par script ant. Mais je ne suis pas au courant de fourmi: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top