Jestem nowy w systemie kompilacji Gradle i IntelliJ.
Jak więc utworzyć projekt biblioteki systemu Android (np. Com.myapp.lib1) i projekt aplikacji (np. Com.myapp.app) i sprawić, by system kompilacji obejmował com.myapp.lib1 w projekcie aplikacji?
Poszedłem do projektu Struktura projektu -> Moduły -> Moja aplikacja i dodałem zależność do projektu lib. IntelliJ może teraz rozpoznawać klasy z projektu lib, gdy są używane w projekcie aplikacji, ale kiedy uruchamiam projekt aplikacji, pojawiają się błędy, takie jak:
Gradle: error: package com.myapp.lib1 does not exist
android-studio
Randy Sugianto „Yuku”
źródło
źródło
Odpowiedzi:
Aby utworzyć bibliotekę:
Plik> Nowy moduł
wybierz Android Library
Aby skorzystać z biblioteki, dodaj ją jako zależność:
Plik> Struktura projektu> Moduły> Zależności
Następnie dodaj moduł (bibliotekę systemu Android) jako zależność modułu.
Uruchom swój projekt. To będzie działać.
źródło
Zastanawiam się, dlaczego nie ma przykładu samodzielnego projektu słoika.
W eclipse po prostu zaznaczamy pole „Is Library” w oknie dialogowym ustawień projektu.
W Android Studio wykonałem te kroki i otrzymałem plik jar.
Utwórz projekt.
otwórz plik w lewym menu projektu. (app / build.gradle): Gradle Scripts> build.gradle (Moduł: XXX)
zmień jedną linię:
apply plugin: 'com.android.application'
->'apply plugin: com.android.library'
usuń applicationId w pliku:
applicationId "com.mycompany.testproject"
projekt budowy: Kompiluj> Przebuduj projekt
wtedy możesz pobrać plik aar: app> build> output> aar folder
zmiana
aar
nazwę rozszerzenia pliku nazip
rozpakuj i możesz zobaczyć
classes.jar
w folderze. zmień nazwę i użyj go!W każdym razie nie wiem, dlaczego Google sprawia, że tworzenie słoików jest tak kłopotliwe w Android Studio.
źródło
Google Gradle Plugin zalecany sposób konfigurowania plików gradle do budowania wielu projektów ma pewne wady Jeśli masz wiele projektów zależnych od jednego projektu biblioteki, ten post pokrótce wyjaśnia zalecaną konfigurację Google, jej niedociągnięcia i zaleca inny sposób konfiguracji plików gradle, aby obsługuje konfiguracje wielu projektów w Android Studio:
Alternatywna konfiguracja wielu projektów dla studia Android
Inny sposób:
Okazuje się, że istnieje lepszy sposób zarządzania wieloma projektami w Android Studio. Sztuczka polega na utworzeniu oddzielnych projektów Android Studio dla swoich bibliotek i poinformowaniu gradle, że moduł biblioteki, od której zależy Twoja aplikacja, znajduje się w katalogu projektu biblioteki. Jeśli chcesz użyć tej metody z opisaną powyżej strukturą projektu, wykonaj następujące czynności:
Czwarty krok to najtrudniejsza część, więc to jedyny krok, który opiszę szczegółowo. Możesz odwoływać się do modułów, które są zewnętrzne w stosunku do katalogu projektu, dodając instrukcję projektu w pliku settings.gradle i ustawiając właściwość projectDir w obiekcie ProjectDescriptor, który jest zwracany przez tę instrukcję projektu:
Kod, który trzeba wpisać
settings.gradle
:Jeśli zrobiłeś to poprawnie, zauważysz, że moduły, do których odwołuje się Twój projekt, pojawią się w nawigatorze projektu, nawet jeśli te moduły są zewnętrzne w stosunku do katalogu projektu:
Umożliwia to jednoczesną pracę nad kodem biblioteki i kodem aplikacji. Integracja kontroli wersji działa również dobrze, gdy w ten sposób odwołujesz się do modułów zewnętrznie. Możesz zatwierdzać i wypychać modyfikacje do kodu biblioteki, tak jak możesz zatwierdzać i wypychać modyfikacje do kodu aplikacji.
Ten sposób tworzenia wielu projektów pozwala uniknąć trudności, które są plagą zalecanej przez Google konfiguracji. Ponieważ odwołujemy się do modułu, który znajduje się poza katalogiem projektu, nie musimy tworzyć dodatkowych kopii modułu biblioteki dla każdej aplikacji, która jest od niego zależna, i możemy wersjonować nasze biblioteki bez żadnych bzdur podrzędnych git.
Niestety, ten inny sposób tworzenia wielu projektów jest bardzo trudny do znalezienia. Oczywiście nie jest to coś, czego się dowiesz, patrząc na przewodnik Google, iw tym momencie nie ma sposobu, aby skonfigurować swoje projekty w ten sposób za pomocą interfejsu użytkownika Android Studio.
źródło
Sprawdź ten link o konfiguracjach wielu projektów .
Warto zwrócić uwagę, upewnij się, że plik settings.gradle został zaktualizowany, aby odnosił się zarówno do modułów aplikacji, jak i biblioteki.
settings.gradle:
include ':app', ':libraries:lib1', ':libraries:lib2'
Upewnij się również, że plik build.gradle aplikacji zawiera następujący tekst:
Powinieneś mieć następującą strukturę:
Plik build.gradle aplikacji powinien używać rozszerzenia
com.android.application
wtyczki, a plik build.gradle wszystkich bibliotek powinien korzystać zcom.android.library
wtyczki.IDE Android Studio powinno zostać zaktualizowane, jeśli możesz budować z wiersza poleceń z tą konfiguracją.
źródło
W przypadku Intellij IDEA (i Android Studio) każda biblioteka jest modułem. Pomyśl o module w Android Studio jako o ekwiwalencie projektu w Eclipse. Projekt w Android Studio to zbiór modułów. Moduły mogą być uruchamianymi aplikacjami lub modułami bibliotek.
Tak więc, aby dodać nowy projekt biblioteki dla systemu Android, musisz utworzyć moduł typu „biblioteka Androida”. Następnie dodaj ten moduł biblioteki do listy zależności modułu głównego (moduł aplikacji).
źródło
Najprostszy sposób, w jaki mogę utworzyć i ponownie wykorzystać projekt biblioteki:
file > new > new module
(i odpowiedz na pytania dotyczące interfejsu użytkownika)include ':myLibrary'
sprawdź / lub dodaj if w pliku build.gradle :
dependencies { ... compile project(':myLibrary') }
Aby ponownie użyć tego modułu biblioteki w innym projekcie, skopiuj jego folder w projekcie zamiast kroku 1 i wykonaj kroki 2 i 3.
Możesz także utworzyć nowy projekt aplikacji studyjnej. Możesz łatwo zmienić istniejący moduł aplikacji na moduł biblioteki, zmieniając przypisanie wtyczki w pliku build.gradle na com.android.library.
do
więcej tutaj
źródło
Możesz dodać nowy moduł do dowolnej aplikacji, jak mówi Blundell w swojej odpowiedzi, a następnie odwołać się do niego z dowolnej innej aplikacji.
Jeśli chcesz przenieść moduł w dowolne miejsce na komputerze, po prostu przenieś folder modułów (moduły są całkowicie niezależne), wtedy będziesz musiał odwołać się do modułu.
Aby odwołać się do tego modułu, należy:
W pliku build.gradle aplikacji dodaj:
W pliku settings.gradle dodaj następujące informacje:
źródło
project(':library').projectDir = new File('../library')
gdzielibrary
jest nazwą folderu równolegle z folderem projektu systemu Android.Nie zapomnij użyć
apply plugin: 'com.android.library'
w twojejbuild.gradle
zamiast stosować wtyczki:'com.android.application'
źródło
Sposób dokumentacji
Jest to zalecany sposób, zgodnie z poradami zawartymi w dokumentacji Android Studio.
Utwórz moduł biblioteki
Utwórz nowy projekt, w którym chcesz umieścić swoją bibliotekę. Kliknij opcję Plik> Nowy> Nowy moduł> Biblioteka systemu Android> Dalej> (wybierz nazwę)> Zakończ . Następnie dodaj wybrane klasy i zasoby do swojej biblioteki.
Podczas budowania modułu zostanie utworzony plik AAR. Możesz go znaleźć w
project-name/module-name/build/outputs/aar/
.Dodaj swoją bibliotekę jako zależność
Możesz dodać swoją bibliotekę jako zależność do innego projektu w następujący sposób:
Upewnij się, że w pliku settings.gradle znajduje się nazwa Twojej biblioteki.
W pliku build.gradle aplikacji dodaj wiersz kompilacji do sekcji zależności:
Otóż to. Teraz powinieneś móc korzystać ze swojej biblioteki.
Uwagi
Jeśli chcesz, aby Twoja biblioteka była łatwo dostępna dla większej liczby odbiorców, rozważ użycie JitPac lub JCenter .
źródło
Miałem to samo pytanie i rozwiązałem je w następujący sposób:
Sytuacja początkowa :
Cel : chcesz dodać moduł o nazwie
dataformats
Java Library
:)Upewnij się, że
settings.gradle
wyglądasz tak (zwykle automatycznie):include ':frigoshare', ':frigoShare-backend', ':dataformats'
Upewnij się ( ręcznie ), że
build.gradle
pliki modułów, które muszą używać Twojej biblioteki, mają następującą zależność:dependencies { ... compile project(':dataformats') }
źródło
Cel: biblioteka Androida w jednym miejscu - udostępnianie w wielu projektach http://raevilman.blogspot.com/2016/02/android-library-project-using-android.html
źródło
Jako komentarz theczechsensation powyżej, próbuję poszukać informacji o Gradle Build Varians i znalazłem ten link: http://code.tutsplus.com/tutorials/using-gradle-build-variants--cms-25005 To bardzo proste rozwiązanie. Oto, co zrobiłem: - W build.gradle:
Następnie mam jeszcze 2 wersje mojej aplikacji: pro i trial z 2 różnymi nazwami pakietu, czyli 2 identyfikatorami applicationId w powyższym kodzie, więc mogę przesłać obie do Google Play. Nadal koduję w sekcji „main” i używam getpackageName do przełączania się między wersjami. Po prostu przejdź do linku, który podałem, aby uzyskać szczegółowe informacje.
źródło
Są dwa najprostsze sposoby, jeśli jeden nie działa, spróbuj drugiego.
LUB
źródło
W moim przypadku używając MAC OS X 10.11 i Androida 2.0 i robiąc dokładnie to, co wyjaśnił Aqib Mumtaz.
Ale za każdym razem otrzymywałem ten komunikat: „ Wystąpił problem podczas konfigurowania projektu„: aplikacja ”.> Nie można ocenić modułu xxx: Nie znaleziono konfiguracji o nazwie„ domyślna ” .”
Odkryłem, że powodem tego komunikatu jest to, że Android 2.0 nie pozwala na bezpośrednie tworzenie biblioteki. Postanowiłem więc najpierw utworzyć projekt aplikacji, a następnie zmodyfikować plik build.gradle, aby przekształcić go w bibliotekę.
To rozwiązanie nie działa, ponieważ projekt biblioteki bardzo różni się od projektu aplikacji.
Więc rozwiązałem mój problem w następujący sposób:
Następnie przejdź do rozwiązania zaproponowanego przez Aqib Mumtaz.
W rezultacie źródło Twojej biblioteki będzie udostępniane bez konieczności powielania plików źródłowych za każdym razem (była to dla mnie herezja!)
Mam nadzieję, że to ci pomoże.
źródło