У меня есть проект со связанной папкой с исходным кодом. Этот проект зависит от другого (удаленного сервиса) проекта, поэтому файлы aidl и классы, передаваемые через удаленный интерфейс, находятся в папке common_src
, общей для двух проектов. Эта работа прекрасно работает со сборками Eclipse (один исходный файл, два проекта, изменения в одном проекте отражаются в другом, как и должно быть).
Теперь я хотел бы сделать сборку Ant из командной строки. Мне удалось получить другой проект с единым каталогом src для всех целей, используя пример build.xml
из инструментов SDK. Он импортирует ant_rules_r3.xml
автоматически, и как только source.dir
и out.dir
определены в build.properties
, все это довольно безболезненно.
Обращаясь к проекту с папками src
и common_src
, я не могу его собрать. Сначала я вырезал и вставил цель компиляции и все те, от которых она зависит, в build.xml
над задачей установки. Я добавил и определил элемент common_src
в build.properties
и добавил последнюю строку, показанную ниже, в -compile target
(скопирован из ant_rules_r3.xml
) в build xml
:
<src path="${source.absolute.dir}" />
<src path="${gen.absolute.dir}" />
<src path="${common_src}" /><!--ADDED-->
, который получил дальнейшее развитие в процессе сборки - он мог найти файлы .java в common_src, но не файлы .aidl. Не удивительно, что я осознал, что помощь - это отдельная цель. Затем я добавил
<src path="${common_src}" />
к цели -aidl в сборке xml, и это не удалось с:
BUILD FAILED
C:\dev\projects\Eclipse\AndroidWorkspace\MapProject\build.xml:77: aidl doesn't
support the nested "src" element.
Так что это заставило меня хорошо и по-настоящему застрять. В идеале я хотел бы изменить только файл build.properties, чтобы включить common_src и передать его в ant_rules_r3.xml, но я не могу придумать, как это сделать. Буду очень признателен, если кто-нибудь подскажет, как это можно сделать.