Как я могу ссылаться на внешние файлы 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: -)