2014-09-01 14 views
5

Czy ktoś może wyjaśnić, co oznacza zespół narzędzi Android w poniższym krótkim akapicie?Wyjaśnij strategię zależności przechodnich opisaną w dokumentacji systemu Android Build System.

W szczególności: Co to jest "somelib.jar"?

Czy sugerują, żebym utworzył nowy projekt podrzędny, który ma tylko zależności, nazwałby go "projectA", a następnie miałby opublikować projekt "projectA.jar"? (using artifacts.add ("default", plik ("projectA.jar"))

Wymagane zachowanie, którego chcę, to opublikowanie "projectA.jar" wraz z jego zależnościami bez powodowania "zdefiniowania wielu plików dex" błędy

http://tools.android.com/tech-docs/new-build-system/tips#TOC-Handling-transitive-dependencies-for-local-artifacts-jars-and-aar-

Cytat:.

Jeśli masz lokalną słoik lub biblioteki AAR, które chcesz użyć w bardziej niż jednego projektu, nie można po prostu odwoływać bezpośrednio jako lokalny zależność. To jest bec ause plugin na Androida będzie narzekał, jeśli znajdzie ten sam plik JAR dwa razy podczas dekompresji projektu i wszystkich jego zależności . (Zauważ, że w tej chwili nie możesz faktycznie użyć lokalnego pliku aar , nawet jeśli odwołasz się do niego tylko raz).

Jednym ze sposobów rozwiązania tego problemu jest wdrożenie artefaktu w repozytorium. Chociaż jest to możliwe, może nie być wygodne ze względu na obciążenie związane z zarządzaniem takim repozytorium.

Inną opcją jest utworzenie nowego podprojektu Gradle i uczynienie tego opublikowanego artefaktu projektu plikiem jar lub aar, który chcesz ponownie wykorzystać. Wtedy możesz po prostu mieć inne podprojekty Gradle zależą od tego nowego podprojektu.

W tym nowym podprojektu, wystarczy utworzyć build.gradle z następujący:

configurations.create ("Default")

artifacts.add ("Default", plik ("somelib .jar '))

Odpowiedz

0

Moim zdaniem, jest to głównie używane do modułu biblioteki.

Jeśli jeden moduł biblioteczny zależy od somelib.jar, inny moduł aplikacji, który zależy od modułu bibliotecznego, zależy również od somelib.jar, wtedy mogą pojawić się błędy "wiele plików definicji dex".

jako „Tips” znaczy, że problem może być rozwiązany poprzez stworzenie prostego modułu, który jest w stanie opublikować *.jar lub *.aar i tylko kiedyś zależało od innych modułów, tylko z uzależnienia *.jar ów. Dzięki temu dane wyjściowe modułu bibliotecznego *.aar nie będą obejmować somelib.jar.

Powiązane problemy