2013-01-14 33 views
19

Normalizujemy naszą infrastrukturę dla rozwoju Androida i staramy się włączyć zarządzanie zależnościami do naszych projektów bibliotek Android. Mój bieżący utwór używa wtyczki androida z Androidem pod numerem m2e-android. Przesłaliśmy artefakty z Androidem do naszego repozytorium artystycznego za pomocą Android SDK Deployer. Mamy również wewnętrzną strukturę z kilkoma bibliotekami, które możemy zaimportować do naszych projektów i większość z nich działa dobrze.Zarządzanie zależnościami od stanu Androida

Problem w którym obecnie stoimy, polega na tym, że zależności apklib zawierające pliki zasobów są trudne do skonfigurowania. Wtyczka maven może poprawnie skonfigurować ścieżkę klasy, ale jeśli apklib ma pliki zasobów, które muszą być odwołane przez nadrzędny projekt Androida, Eclipse nie może ich znaleźć, chyba że wyewidencjonujesz projekt biblioteki i połączysz go z projektem nadrzędnym za pomocą narzędzia ADT.

Po przeczytaniu m2e-android dyskusję na temat kwestii https://github.com/rgladwell/m2e-android/issues/8, https://stackoverflow.com/questions/6269816/creating-closed-source-android-libraries#answer-6270768 i APKLIB does not get installed in Maven Repo, nie jestem przekonany, Maven jest droga aż ADT prawidłowo obsługiwać biblioteki źródło apk zamknięte.

Chciałbym wiedzieć, w jaki sposób radzisz sobie z tego rodzaju zależnościami w projektach Android. Jakie są strategie inne niż używanie Mavena?

Oto, co próbowaliśmy do tej pory.

  1. Brak zarządzania zależnościami. Wszystkie wymagane słoiki są przechowywane w folderze lib i przekazywane do repozytorium kontroli źródła. Projekty biblioteczne są skonfigurowane jako podfoldery i przekazywane do repozytorium kontroli źródła dla każdego projektu, w którym są używane. Ustawienia projektów Eclipse również są pchane. Projekt zbudowany ze standardowego skryptu ADT Ant.
  2. Zależności Jarka od zależności bibliotek i bibliotek od libs jako submodules git. Projekt zbudowany ze standardowego skryptu ADT Ant.
  3. Zarządzanie zależnościami z maven, w tym projekty biblioteczne z pakietem apklib. Problem z plikami zasobów w apklibs.
+0

Możesz zgrupować swój projekt biblioteki i projekt aplikacji jako projekt wielomodułowy, zobacz przykład [tutaj] (https://github.com/jayway/maven-android-plugin-samples/tree/master/libraryprojects). po zaimportowaniu projektu wielomodułowego do Eclipse, m2e-android automatycznie skonfiguruje projekt biblioteki i link do projektu aplikacji. – yorkw

+1

Fajnie, spróbuję tego. Na razie zdecydowaliśmy się użyć makr mrówek do klonowania projektów bibliotecznych z git. Nie rozwiązuje to przechodniości zależności lub podobnych, ale ponieważ nasz wykres zależności jest dość płytki w systemie Android, nie powinien być problemem przez większość czasu. Sprawiliśmy, że wygląda trochę jak maven/bluszcz/gradle. Makro nazywa się "zależnością" i mamy skrypt, który importujemy z zadaniem o nazwie update-dependencies.W twoim skrypcie projektu, wystarczy dodać . – AngraX

+1

Używamy Mavena z [IntelliJ] (http://www.jetbrains.com/idea/download/). Obsługuje zależności typu apklib (submoduł lub w inny sposób) jak mistrz. Jako dodatkowy bonus (bezpłatne) wydanie społecznościowe było całkowicie wystarczające dla naszych potrzeb. – Jonba

Odpowiedz

4

Wraz z pojawieniem się Androida Studio i Gradle nie mamy już problemów z zależnościami projektu; Android lub w inny sposób.

Gradle obsługuje zależności Maven w formatach jar lub apklib. Popularne biblioteki zostały wyeksportowane do formatu apklib (aar) i udostępnione za pośrednictwem Maven.

8

Możesz dowiedzieć się, w jaki sposób programiści z Androidem rozwiązują problemy związane z zależnościami w tym filmie: How Facebook Built Facebook for Android.

Używają do tego Bucka. Buck is a build system for Android, która zachęca do tworzenia małych, wielorazowych modułów składających się z kodu i zasobów. Buck is in github

To może nie być najlepsze rozwiązanie dla Ciebie, ale może dla kogoś innego.

+0

Dzięki za heads up. – AngraX

Powiązane problemy