2013-08-08 3 views
1

Итак, у меня есть проект с несколькими библиотеками, прикрепленными в виде подмодулей - это означает, что я не могу их совершить.Несколько конфликтов библиотек поддержки с использованием подмодулей git

Каждые из библиотек уже включает в себя андроид библиотеку поддержки, которая, очевидно, приводит к ошибке

Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define... 

при попытке построить APK.

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

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

Итак, есть ли способ построить apk с несколькими библиотеками поддержки или исключить эти библиотеки из подмодулей git при клонировании?

ответ

1

Если вы можете автоматизировать (в сценарии) удаление ссылок на дубликаты библиотек, то вы можете зарегистрировать в этих подмодулях repos скрипт smudge, который при проверке удалит эти дубликаты.

content filter

(от Scott Schacon «s Pro Git book страницы на Git Attributes: раздел "Ключевое слово Expansion")

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

Я делаю это на подмодуле, скопировав фильтр, я хочу прямо в parentRepo/.git/module/asubmodule/info/attribute.
См this script for instance:

githubdir="${H}/.git/modules/gitlab" 
if [[ ! -e "${githubdir}/info/attributes" ]]; then 
    cp "${gtl}/config.gitlab" "${githubdir}/config" 
    cp "${gtl}/attributes.gitlab" "${githubdir}/info/attributes" 
    xxgit=1 git --work-tree="${github}" --git-dir="${githubdir}" checkout HEAD -- "${github}" 

С attributes.gitlab being:

*.rb filter=fileExpandPath 
*.rake filter=fileExpandPath 

Это было бы назвать:

  • на кассе скриптом fileExpandPath_replace (который я вызвать с линией выше " git checkout HEAD -- /path/to/submodule «)
  • на оформленном скрипт fileExpandPath_restore (который вы, возможно, не потребуется, так как вы не будете делать какие-либо совершить в подмодулях)
+0

Ну что ж, я надеялся, что будет еще один способ:) На данный момент я решил сохранить раздвоенные версии библиотек с замененными конфликтующими банками. – Sver

Смежные вопросы