2014-07-09 20 views
38

Tworzę projekty z zależnościami w Android Studio. Wiem, jak łączyć projekty, dodając moduły.Android Studio - Tworzenie modułów bez kopiowania plików?

Ale zdałem sobie sprawę, że "importowanie modułów" tworzy kopię projektu libProject wewnątrz projektu.

Czy można temu zapobiec? Jak "moduł zewnętrzny"?

Ponieważ jestem odpowiedzialny za oba projekty, chcę móc przesyłać zmiany do libProject Repo, bez konieczności kopiowania wklejania plików między folderami.

Dzięki

Odpowiedz

84

Tak, możesz to zrobić. Moduł musi mieć ustawiony plik kompilacji Gradle. Jeśli nie ma to, że wtedy w projekcie którą kieruje do niego dodać to do settings.gradle pliku u podstaw projektu:

include ':libraryName' 
project(':libraryName').projectDir=new File('/path/to/library') 

gdzie ścieżka podać w drugim wierszu jest ścieżka do katalogu zawierającego plik biblioteki build.gradle. Ścieżka może być względna lub absolutna.

+0

Dzięki działa idealnie! Czy istnieje powód, dla którego plik settings.gradle jest tylko do odczytu? Użyłem Sublime do edycji pliku. –

+0

Nie wiem, dlaczego byłby to tylko odczyt. Musi to być coś konkretnego na temat twojego projektu lub kontroli źródła. –

+0

Mam problem z tym http://stackoverflow.com/questions/24898060/gradle-dependencies-in-folder-above-project – CQM

1

Można również użyć Androida {sourceSets {main.java.srcDirs + = '../../../library/src'}} w swojej aplikacji build.gradle. Nie jestem pewien co do obsługi wszystkich zasobów Androida, bo czysta biblioteka Java działa dobrze.

11

Rozwiązanie:

include ':libraryName' 
project(':libraryName').projectDir=new File('/path/to/library') 

nie działa dla mnie. Po paru zmarnowanych godzinach zorientowałem się, o co chodzi. Istnieją dwa pliki build.gradle, jeden dla projektu i jeden dla nazwy biblioteki. Jeśli biblioteka znajduje się w folderze '\ MyLib', wówczas będzie build.gradle w '\ MyLib', a inny w '\ MyLib \ app'. Musisz wskazać na '\ MyLib \ app', a nie '\ Mylib'.

Mam nadzieję, że zaoszczędzi to trochę czasu dla innych.

+0

Naprawiłem to dla mnie, dzięki! – Chin

+0

Dziękuję bardzo za opublikowanie tego! Zmarnowałem na to godziny. –

0

Jeśli, podobnie jak ja, mają wielu modułów (Ja tylko sobie sprawę dzisiaj, że kopie zostały uwzględnione, myślałem, że projekt zawiera linki do źródła.)

Można mieć wiele modułów/projektów wraz linie: -

include ':app', ':sqlwords', ':dbindex', ':dbcolumn', ':dbtable', ':dbdatabase', ':displayhelp', ':pickdate' 
project(':sqlwords').projectDir= new File('d:/Android_Applications/Modules/sqlwords') 
project(':dbcolumn').projectDir= new File('d:/Android_Applications/Modules/dbcolumn') 
project(':dbtable').projectDir= new File('d:/Android_Applications/Modules/dbtable') 
project(':dbindex').projectDir= new File('d:/Android_Applications/Modules/dbindex') 
project(':dbdatabase').projectDir= new File('d:/Android_Applications/Modules/dbdatabase') 
project(':displayhelp').projectDir= new File('d:/Android_Applications/Modules/displayhelp') 
project(':pickdate').projectDir= new File('d:/Android_Applications/PickDateShowCase/pickdate') 
Powiązane problemy