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

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

Итак, вопрос заключается в том, как мне настроить скрипты сборки для Android android ant для ссылки на общую банку в отдельной директории за пределами проекта (не в "libs" )?

Ответы

Ответ 1

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

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

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

Ответ 2

Похоже, что новые инструменты sdk делают это проще. У меня есть папка master libs, в которой все мои проекты Android доступны, и я просто добавил это в файл ant.properties, чтобы он выглядел на одном уровне для этих libs.

jar.libs.dir=../libs

Ответ 3

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


Я добавляю это в мой шаблон 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>

Ответ 4

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

Edited

Убедитесь, что все символические ссылки размещены непосредственно в libs (не в подкаталогах). Я уверен, что это может быть re-config на Ant script. Но я не знаком с Ant: -)