Как мне ссылаться на внешние файлы jar в общем каталоге (не libs) для создания проекта Android с помощью ant?
Вопрос
Я хотел бы создать несколько проектов 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. Но я не знаком с муравей :-)