Как мне ссылаться на внешние файлы jar в общем каталоге (не libs) для создания проекта Android с помощью ant?

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

Вопрос

Я хотел бы создать несколько проектов Android, которые ссылаются на одни и те же файлы jar, используя ant.Я не хочу копировать файл jar в каждый каталог libs в проекте (из-за того, как настроено дерево системы управления версиями).А ответы я находить здесь скажите «поместите их в каталог libs», что не решит эту проблему.

Итак, вопрос в том, как мне настроить сценарии сборки Android ant для ссылки на общий jar-файл в отдельном каталоге вне проекта (не в «libs»)?

Это было полезно?

Решение

В SDK есть файлы ANT в tools/ant. Анкет В main_rules.xml, вы можете найти следующий раздел кода:

<!-- 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>

Вот как код сборки муравья определяет, откуда получить банки. Вы можете перегрузить значение jar.libs.dir В вашей сборке. Прозрачные, так как это прочитано до этого раздела и перегружает значение. Указав, что в общем каталоге, который вы собираетесь использовать, сделает то, что вы предлагаете. Возможно, вам придется поиграть с ним, чтобы заставить его работать так, как вы хотите.

Одно предостережение заключается в том, что я не уверен, будет ли это негативно повлиять на другие жизненные действия сборки.

Другие советы

Похоже, что новые инструменты SDK облегчают это. У меня есть папка Master Libs, которой делятся все мои проекты Android, и я просто добавил это в ant.properties Файл, чтобы он искал один уровень для этих либеров.

jar.libs.dir=../libs

По вопросу здесь и мой ответ взят из здесь, предложенное решение на данный момент не работает.Пока не исправлена ​​обнаруженная ошибка.Решение, как упомянуто в указанном ответе, скопировано ниже.


Я добавляю это в свой custom_rules.xml шаблон, и он, кажется, работает нормально.Я предположил, что это всего лишь несколько строк больше, чем добавление пути к ant.properties файл, пока мы не получим лучшее решение.

<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>

Если вы используете Linux, просто сделайте символические ссылки внешних файлов JAR, затем поместите их все в libs. Анкет Муравей будет работать нормально.

Отредактирован

Обязательно поместите все символические ссылки прямо в libs (не суб -каталоги). Я уверен, что это может быть повторно конфигурация с помощью сценария Ant. Но я не знаком с муравей :-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top