Как мне ссылаться на внешние jar-файлы в общем каталоге (не на libs), чтобы создать проект Android с использованием ant? - PullRequest
13 голосов
/ 15 марта 2011

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

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

Ответы [ 4 ]

9 голосов
/ 15 марта 2011

В sdk есть файлы ant под tools/antmain_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-файлы.Вы можете перегрузить значение jar.libs.dir в вашем build.properties, поскольку оно читается перед этим разделом и может перегрузить это значение.Указывая, что в общем каталоге, который вы намереваетесь использовать, будет делать то, что вы предлагаете.Возможно, вам придется поиграть с ним, чтобы заставить его работать так, как вы хотите.

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

7 голосов
/ 20 декабря 2011

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

jar.libs.dir=../libs
3 голосов
/ 29 декабря 2012

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


Я добавляю это в свой шаблон 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>
0 голосов
/ 10 февраля 2012

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

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

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

...