2013-06-22 7 views
5

Problem:Praktyka za zapewnienie projekty Android budować zaraz po SVN Checkout w Eclipse

Jeżeli projekt jest sprawdzany pod SVN, a ktoś inny sprawdza go, jest wykrzyknik na nią i budują błędy ścieżki muszą być zdecydowany. Jak to naprawić?

Jako przykład, mam projekt i po to jest to struktura:

Posiada 3 bibliotek w katalogu libs:

* android-support-v4.jar 
* bugsense3.2.2.jar 
* gcm.jar 
folderu

Android Zależności ma:

* annotations.jar 

odnosi się odwołanie Biblioteki mają:

* gcm.jar 

Android prywatnych Biblioteki posiada:

* bugsense3.2.2.jar 
* gcm.jar 
* android-support-v4.jar 

API Google [Android 2.2] zawiera:

* android.jar 
* maps.jar 

więc wydaje się, że cokolwiek umieścić w folderze libs zostanie automatycznie dodana do Android prywatnych bibliotekach czy to jest dokładne? Dzięki temu można je sprawdzić w SVN, a gdy ktoś to sprawdzi i zbuduje, plik .jars w bibliotekach prywatnych Androida po prostu wskaże jego lokalny obszar roboczy, więc to nie jest problem.

Jednak adnotations.jar w Androidach Dependencies i android.jar i maps.jar w Google API odwołuje się do folderu android-sdk na moim C :. Kiedy ktoś inny sprawdzi cały mój projekt, ma problemy z budową, które muszą rozwiązać za pomocą ścieżki budowania Java.

Jaką standardową praktyką jest przechowywanie wszystkich bibliotek w SVN w taki sposób, że gdy pojawia się nowy programista i sprawdza projekt, po prostu buduje bez ustawiania ustawień? Podejrzewam, że idziemy na terytorium korzystania z systemu zarządzania budową, ciągłej integracji, budowania serwera itp. Więc wiem o tym nieco, ale nigdy nie używałem go w praktyce, ponieważ nigdy nie pracowałem w wystarczająco dużym zespole . Jeśli ktokolwiek byłby tak uprzejmy, aby dać mi dokładnie to, czego używa (rzeczywiste narzędzia, takie jak Maven, Gradle, itp.), Byłoby to bardzo cenne!

Dziękuję

-V

+0

Możesz "wdrożyć" prywatne słoiki do repozytorium Maven w lokalnym systemie plików i sprawdzić je w SVN. Zobacz: http://stackoverflow.com/a/12980000/7507 – noahlz

+0

Nie jestem właściwie pewien, co masz na myśli. Na moje pytanie, moje rozumienie procesów budowy jest słabe. W rezultacie mam nadzieję, że ktoś może dokładnie określić, co robić i jakich narzędzi użyć. Mam wrażenie, że wielu inżynierów oprogramowania, którzy nie mieli styczności ze światem wielkich zespołów, CI, tworzyło procesy itp. Byłoby niezwykle użyteczne! – vkinra

+0

Możesz użyć tego podejścia nawet pracując samemu z git, github i Travis-CI. Duże zespoły nie mają z tym nic wspólnego. – noahlz

Odpowiedz

5

Nie ma nic szczególnego w bibliotekach że ADK dodaje do klasy drogi. Jeśli chcesz mieć możliwość sprawdzenia wszystkich zależności twojego projektu, możesz skopiować przywołane słoiki do katalogu lokalnego, a następnie skierować ścieżkę klasy do tych, zamiast korzystać z dostarczonych grup bibliotek. Ponieważ wtyczka dla Androida ma ten nowy zwariowany system, który automatycznie dodaje elementy w katalogu libs do twojej ścieżki i do apk, nie polecałbym umieszczania tam tych innych słoików. Zwykle będziemy tutaj tworzyć oddzielny folder w svn o nazwie third-party lub coś podobnego, a następnie użyć svn:externals, aby odwołać się do niezbędnych słoików. Posiadanie jednego wspólnego miejsca do przechowywania słoików innych producentów ułatwia zarządzanie wersjami i konfiguracją.

Aby zilustrować rzeczy trochę jaśniej, to co repozytorium przykład Subversion będzie wyglądać następująco:

repo 
    -android_project 
     -trunk 
      -your other project stuff (src, etc) 
      -libs 
       -android-support-v4.jar 
       -bugsense3.2.2.jar 
       -gcm.jar 
      -third-party 
       -annotations.jar (external) 
       -android.jar (external) 
       -maps.jar (external) 
third-party 
    -android 
     -v_X.XX 
      -annotations.jar 
      -android.jar 
      -maps.jar 

na aktualnej projektu Eclipse, należy dodać materiał w trzeciej partii na ścieżkę ręcznie, a adk automatycznie doda te pliki do bibliotek.

EDIT

Na temat tej metody vs. Maven, pierwszą rzeczą, muszę przyznać, że nie mam ogromną ilość doświadczenia z Maven. Z tego, co wiem o tym, nie sądzę, że to całkiem spełnia twoje kryteria. Kiedy używałem Mavena, domyślnie pobierałoby twoje zależności do konkretnej lokalizacji maszyny, zamiast do twojego obszaru roboczego. Aby Eclipse mógł wybrać te zależności, musisz dodać właściwość M2_HOME do swojego obszaru roboczego, aby mógł poprawnie rozwiązać wszystkie ścieżki. Łatwo było ustawić wszystkie te rzeczy, ponieważ były polecenia mvn, aby zautomatyzować proces, ale dla kogoś, kto nie jest obeznany z systemem, może to spowodować wiele zamieszania i spowolnić działania, gdy nowy programista rozpoczyna pracę nad projektem. Dodatkowo, dużym problemem, który napotkaliśmy, było to, że wymaga to, aby zależności były przechowywane w jakimś centralnym repozytorium, co utrudniało pracę w obszarach niepodłączonych.

Ponownie, nie jestem ekspertem od Mavena, więc weź to, co powiedziałem z przymrużeniem oka, ale z mojego doświadczenia wynika, że ​​Maven działa świetnie w środowisku open-source, gdzie łączność jest mile widziana i prawie gwarantowana, ale nie tak bardzo w środowisko o zamkniętym źródle. Wyglądało na to, że spowodowało to więcej problemów, niż nam się udało, a przez to nigdy się nie przyłapało. Zaletą systemu, który opisałem powyżej, jest to, że po kasie masz pojedynczy folder zawierający wszystko (oprócz zaćmienia), który jest wymagany do opracowania i zbudowania projektu. To sprawia, że ​​bardzo łatwo jest zacząć pracę na nowej maszynie lub w nieznanym środowisku.

Powiem, że dużą korzyścią Maven jest konsekwencja. W opisywanym systemie deweloper odpowiada za każdy aspekt tworzenia projektu. Oznacza to, że pomiędzy programistami i projektami można uzyskać różne wersje składu svn. Jeden programista mógłby nazwać katalog "stroną trzecią", a inny mógłby go nazwać "open-source", albo niektórzy programiści mogliby nie używać pnia w swoich projektach. Z biegiem czasu te małe rzeczy mogą narastać i pozostawiać bałagan w twoim repozytorium. Ponieważ Maven jest odpowiedzialny za układ projektu, możesz mieć pewność, że twoje repozytorium pozostanie spójne.

+0

Pytanie: Byłem pod wrażeniem, możesz użyć Mavena do zarządzania zależnościami projektu. Wciąż słyszę, że powinienem po prostu użyć wtyczki do zaćmienia maven. Czy masz z tym doświadczenie, tak jak powiedziałem, że szukam najlepszych praktyk w branży. Tak czy inaczej, sprawdzę, czy wypróbujesz swoją sugestię i jeśli nie ma odpowiedzi, a twoja metoda jest czysta, zaakceptuję ją od razu. – vkinra

+0

@vkinra Moja odpowiedź na Twój komentarz skończyła się trochę rozwlekle, więc zredagowałem swoją odpowiedź, aby dodać ją, zamiast dodawać kolejny komentarz. – TwentyMiles

+0

Doceniam długo oczekiwaną odpowiedź i przyjmuję odpowiedź. Jeśli jednak ktoś może poprawić to, dodaj to. Dziękuję TwentyMiles. – vkinra

Powiązane problemy