2016-12-01 1 views
1

У меня есть несколько проектов, в которых есть некоторые локально разработанные библиотеки; эти библиотеки отличаются от того, чтобы быть довольно статичными, чтобы гибко обновляться по мере того, как растут их приложения.Лучшая схема проекта с несколькими библиотеками в Android Studio

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

Для целей строительства больно, что при перестройке проекта он также перестраивает (иногда большие) библиотеки.

С моей точки зрения, было бы идеально, если бы некоторые из библиотек могли быть настроены так, чтобы не перестраивать и не чистить, если это явно не сделано. Или если бы я мог переключать их между библиотеками JAR/AAR и полными модулями.

В этот момент я задаюсь вопросом, есть ли лучший способ.

Итак, если вы хотите включить в проект библиотеку (для целей редактирования/обновления), но не хотите, чтобы она постоянно перестраивалась, есть ли способ и что такое лучшая практика?

FWIW, основная структура я в настоящее время является:

MainApp

  • конкретной платформы код
  • Библиотека для приложения (обычно на платформе независим код, специфичный для приложения)
  • Local Utils lib (может быть довольно динамичным, но часто идет за дни/недели без изменений)
  • Другие локальные утилиты (довольно статические, иногда обновляемые)

ответ

0

Вы можете сделать библиотеку отдельным проектом, а затем установить ее в качестве локального артефакта, используя maven plugin в библиотеке. Подробнее на Deploying an Artifact to the Local Cache in Gradle

В вашем проекте, вам нужно добавить mavenLocal() в хранилищах в корневом build.gradle:

repositories { 
    mavenCentral() 
    mavenLocal() 
} 

И добавить зависимости к вашему проекту build.gradle:

dependencies { 
    ... 
    compile 'com.your.library:x.y.z' 
    ... 
} 

Но если ваш проект является общим для вашей локальной сети, вам необходимо использовать управление репозиторием, например Artifactory by JFrog или Nexus Repository Manager by Sonatype.

+0

Извинения за задержку в ответе ... Является ли это означать, что я могу внести изменения в исходные файлы библиотеки, когда мне нужно во время запуска моего основного проекта? Я просто пытаюсь понять, является ли это еще одним способом связывания библиотеки/банки. – RabidMutant

+0

Работает так, как мы работаем с зависимостью от удаленного сервера, как maven central. Преимущество в том, что мы можем изменить библиотечный код и опубликовать его в локальном кэше maven. Каждый раз, когда мы меняем код библиотеки, нам нужно переиздать его на нашем локальном maven, тогда нам просто нужно повторно синхронизировать основной проект с использованием последнего кода библиотеки. –

+0

Кроме того, если вы не хотите использовать последний код из библиотеки (что-то вроде версии x.y.z), вы можете использовать версию x.y.y, которая ранее была опубликована. –

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