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

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

Итак, вопрос в том, как мне настроить скрипты сборки antroid ant для ссылки на общую банку в отдельной директории за пределами проекта (а не в «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 в своих build.properties, так как это прочитано до этого раздела и перегружает значение. Указывая, что в общем каталоге, который вы собираетесь использовать, вы будете делать то, что вы предлагаете. Возможно, вам придется поиграть с ним, чтобы заставить его работать так, как вы хотите.

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

    Похоже, что новые инструменты sdk делают это проще. У меня есть папка master libs, в которой все мои проекты Android ant.properties и я просто добавил это в файл 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 . Ant будет работать нормально.

    отредактированный

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

    Intereting Posts
    Как я могу протестировать утечки памяти моего приложения на мобильном устройстве, особенно в iOS и Android? Связь между двумя приложениями FindViewById vs Просмотр шаблона владельца в адаптере ListView Genymotion не загрузит виртуальное устройство Приложение Maven для создания Android – BuildConfig Как я могу разблокировать устройство Android и пропустить экран Какие API в Android используются Facebook для создания чат-голов? Отпустить файл APK, не отображающий карты Google Android: «Не удалось выполнить« воспроизведение »в« HTMLMediaElement »: API может быть инициирован только жестом пользователя Горизонтальный свиток в андроид-студии Проблемы с паузой и воспроизведением Android Animation Номер типа ввода, допустимый знак отрицательного или десятичного знака? Design lib – CoordinatorLayout / CollapsingToolbarLayout с GridView / listView Android Использование только ViewPager из библиотеки поддержки Android color picker – обновление цветового массива