Eclipse: переопределить путь к библиотеке, определенный в project.properties

Я использую ActionBarSherlock в качестве библиотеки. Мы не включили ABS в наш репозиторий, поэтому все участники нашего проекта должны загрузить и установить его отдельно. ActioBarSherlock - это проект библиотеки Android, и я запустил его, открыв его и мой проект в той же рабочей области Eclipse (ни один из них не копируется в рабочую область, они оба существуют в другой папке) и добавив его в свой project.properties, выполнив следующее: < strong> Ссылка на проект библиотеки.

Этот ссылочный путь является относительным, и поскольку у всех может быть ABS в разных папках, у нас также есть разные пути в project.properties файле Eclipse как android.library.reference.1. Есть ли способ локально переопределить этот путь к библиотеке, чтобы у нас было project.properties в нашем репо, но Eclipse будет использовать локально какой-то другой путь? В настоящее время мне нужно вручную исправлять этот путь после каждого извлечения из нашего репо из-за разных путей.

Существуют другие файлы * .properties, но Eclipse их игнорирует:

local.properties

Настраиваемые свойства системы сборки для конкретного компьютера. Если вы используете Ant для сборки проекта, он содержит путь к установке SDK. Поскольку содержимое файла зависит от локальной установки SDK, local.properties не следует поддерживать в системе контроля версий исходного кода. Если вы используете Eclipse, этот файл не используется.

ant.properties

Настраиваемые свойства для системы сборки. Вы можете отредактировать этот файл, чтобы переопределить настройки сборки по умолчанию, используемые Ant, а также указать местоположение вашего хранилища ключей и псевдоним ключа, чтобы инструменты сборки могли подписывать ваше приложение при сборке в режиме выпуска. Этот файл является неотъемлемой частью проекта, поэтому поддерживайте его в системе контроля версий исходного кода. Если вы используете Eclipse, этот файл не используется.


person Kuitsi    schedule 18.09.2012    source источник


Ответы (4)


Просто пусть каждый поместит это в projectroot/libs. Более новые (ADT 17 и выше, IIRC) версии ADT автоматически подберут его и скомпилируют в ваше приложение. Обратите внимание, что это папка libs с s, а не lib. Использование /lib не сработает.

person Raghav Sood    schedule 18.09.2012
comment
Если я хочу использовать одну и ту же библиотеку в нескольких проектах, этот подход означает, что мне нужно копировать те же файлы в разные места. Есть ли другой вариант, при котором я мог бы использовать библиотеку, установленную в одном месте на моем жестком диске, для нескольких проектов одновременно? - person Kuitsi; 18.09.2012
comment
Не то, чтобы я в курсе. Если вы измените project.properties, eclipse все равно перезапишет файл при следующей сборке проекта, - person Raghav Sood; 18.09.2012
comment
ActionBarSherlock не является JAR и поэтому не входит в libs/. Это проект библиотеки Android. - person CommonsWare; 19.09.2012

Опции:

  • project.properties: вы можете создать ссылку в каждой домашней папке пользователя, libs и указать путь в project.properties для ссылки ~/libs

  • Использование общей библиотеки: создайте проект библиотеки под названием «common». В настройках укажите, что он экспортирует банку. В своем приложении для Android импортируйте файл jar.

Лично я думаю, что настройка с помощью maven была бы лучше, но 2-й вариант был самым быстрым.

person bgs    schedule 23.10.2012
comment
Первый вариант противоречит цели моего вопроса, поскольку я хотел бы позволить пользователям решать, где они хранят свой исходный код локально, если Eclipse может его найти. AFAIK Eclipse не имеет других ограничений на расположение кода, кроме источников в одном проекте, которые должны быть расположены на одном жестком диске (ссылки выполняются с относительным, а не абсолютным путем). Вариант второй: у нас уже есть АБС как библиотечный проект. Зачем нам делать копию? В-третьих, Maven может быть немного излишним. - person Kuitsi; 23.10.2012
comment
Вариант 2: Конечным результатом будет настройка ABS для экспорта своей библиотеки. Если вы действительно не хотите использовать соглашение и усложнять себе задачу, создайте задачу муравья, которая запускает find <someFolder> -iname 'magical.jar' -print >> local.properties (проверьте правильность добавления). Большинство из них хотели бы довести дело до конца и пожертвовать конфигурацией ради условности. Почему нужно сохранять некоторую конфигурацию ... - person bgs; 23.10.2012

Как насчет того, чтобы игнорировать project.properties в своем репо? Таким образом, каждый пользователь может сохранить свое, и вам не придется постоянно его отменять. Я не думаю, что это можно изменить локально.

Другой вариант упрощения - вы можете экспортировать проект как файл JAR вместо того, чтобы ссылаться на него как на проект библиотеки. Если вам не нужно изменять код ABS, вы можете щелкнуть правой кнопкой мыши проект -> java -> файл jar, и все разработчики могут оставить его в одном месте для простоты.

person caiocpricci2    schedule 26.10.2012
comment
Как насчет этого: Почему ActionBarSherlock является проектом библиотеки, тогда как исходная библиотека совместимости - это только .jar? Реализация настраиваемой панели действий в ActionBarSherlock опирается на стили, темы, макеты и чертежи по порядку для правильного отображения. Из-за ограничений файлов Android и .jar это в настоящее время невозможно сделать другим способом. Источник: Часто задаваемые вопросы по АБС - person Kuitsi; 28.10.2012
comment
Я хотел бы сохранить project.properties в репо, поскольку он нужен Eclipse, и я бы хотел, чтобы пользователи могли без проблем скомпилировать наш проект после его клонирования. Игнорирование его с помощью .hgignore не работает, потому что этот файл уже отслеживается. В .hg / hgrc есть некоторые параметры, но они также должны быть установлены для каждой вилки нашего проекта. - person Kuitsi; 28.10.2012
comment
@Kuitsi Я понятия не имел! Спасибо, что поделились этим! И если вы не сохраните project.properties в репо, ничего страшного. Вместо импорта проекта пользователям просто нужно создать новый проект с существующим источником в eclipse, и этот файл будет сгенерирован. Я знаю, что это не лучший вариант, но он может вам помочь, если у вас больше ничего нет! - person caiocpricci2; 28.10.2012
comment
Мне кажется, что это наиболее близкий ответ, так что награждение за награду скоро истечет. - person ZeroOne; 29.10.2012
comment
Android имеет новый формат архива .aar для библиотеки. проекты. - person Kuitsi; 28.08.2013

Изменить: этот вопрос больше не нужен для нашего проекта, так как мы перешли с Eclipse на Android Studio и систему сборки Gradle. Eclipse с Maven тоже должен был работать, как предложил @bgs.

Наш предыдущий подход:

Все еще ищем лучшую альтернативу, но пока что мы оставили project.properties в нашем репо. project.properties не отменяется, если при вытягивании в него не вносятся изменения. Мы также предлагаем в README, чтобы пользователи добавляли этот

[alias]
commit = commit -X project.properties

в свой .hg/hgrc файл конфигурации, чтобы предотвратить случайное внесение изменений в этот файл.

У этого метода есть по крайней мере один недостаток: при слиянии вы можете получить такую ​​ошибку abort: cannot partially commit a merge (do not specify files or patterns), даже если вы зафиксируете слияние с hg commit -m 'merge'. В этом случае временно отключите этот псевдоним.

person Kuitsi    schedule 06.11.2012