2012-11-28 17 views
9

Czy istnieje sposób na przyspieszenie kompilacji i wdrożenia na urządzeniu z Androidem za pomocą programu maven?Android i Maven: Przyspieszenie kompilacji i wdrożenia projektu

Przetestowałem czas budowy pustego projektu Androida (utworzonego z wiersza poleceń za pomocą "projektu androidowego") w IntelliJ Idea - zajęło mi to 4 sekundy od naciśnięcia przycisku "Uruchom", aż do uruchomienia aplikacji na urządzeniu. Potem dodałem wsparcie dla maven - teraz zajmuje to prawie 7 sekund.

W przypadku większych projektów zajmuje to jeszcze więcej czasu. Na przykład, pusty projekt z dodaną opcją ActionBarSherlock zajmuje około 25-30 sekund na kompilację, wdrożenie i uruchomienie.

Czy istnieje sposób na przyspieszenie tego procesu?

Chciałbym usłyszeć odpowiedzi od programistów Square (szczególnie Jake'a Whartona) :) jak długo trwają prace nad Androidem?

+1

Sztuczka AAPT wymieniona w [tej odpowiedzi] (http://stackoverflow.com/questions/13335674/speed-up-android-project-build-time-in-intellij-idea/13391537#13391537) może pomóc. – yorkw

Odpowiedz

1

odpowiedź brzmi jakoś dziwnie, ale Jake Wharton Zaleca się, aby przejść do gradle-builds które są naprawdę przyrostowe. Również użycie emulatorów SDK i urządzeń USB przy użyciu Genymotion dało mi bardzo potrzebne zmniejszenie czasu wdrażania.

Więc teraz mój czas budowy zmniejszył się z ~ 1m do ~ 10-20sec.

1

Możesz spróbować ustawić wyższe opcje -Xms i -Xmx dla MAVEN_OPTS.

Upewnij się również, że idea maven in idea nie jest skonfigurowana do pobierania/synchronizowania z repozytorium dla słoików za każdym razem.

Można też przez jakiś przyzwoity modernizacji sprzętu ;-)

+0

-Xmx = 1024M, pobieranie/synchronizacja jest wyłączone, uruchomione na MacBooku Pro :) – agamov

+0

to naprawdę nie robi dla mnie żadnej różnicy – erikaD

2

25-30 sekund, co pozwoli, wdrożyć i uruchomić aplikację? Szczęściarz! Ja pracuje na laptopie Windows ...

Here're niewielu rzeczy zrobić, aby przyspieszyć mój rozwój:

  • zrobiłem duży postęp poprzez umieszczenie obrazu Emulatory i SD-Drive na dysk SSD.
  • Uruchamianie emulatora z migawki uruchamia go szybciej.
  • Gdy jest to możliwe, uruchamiam mój kod na rzeczywistym urządzeniu zamiast na emulatorze - w zależności od rzeczywistego urządzenia jest to znacznie szybsze (2x na mojej Sony Xperia) nawet w przypadku zwirtualizowanego emulatora. Oczywiście wadą tego jest to, że nie można testować różnych wersji Androida i profili urządzeń.

Jednak pomimo niewielkich zmian w emulatorze wdrożenie przechodzi przez stos TCP/IP, który jest wąskim gardłem.

PS: Nie jestem Jake Wharton i nie znam go. Ale jeśli on może zmienić coś w sprawie rozmieszczenia powinien zrobić :-)

4

kilka rzeczy zrobiłem co dało mi trochę lepszy:

  • Wyłączanie optymalizacji dex do debugowania buduje
  • Włączanie biblioteki pre-Dexing (która spowalnia najpierw zbudować ale przyspieszyć poniższych)

Konfiguracja jest coś takiego:

<plugin> 
    <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
    <artifactId>android-maven-plugin</artifactId> 
    <inherited>true</inherited> 
    <configuration> 
     <!-- All your current configuration --> 
     <dexOptimize>false</dexOptimize> 
     <dex> 
      <preDex>true</preDex> 
      <preDexLibLocation>/tmp/predexedLibs</preDexLibLocation> 
     </dex> 
    </configuration> 
</plugin> 

BTW Podejrzewam, że występują problemy z przyrostowym kompilatorem i za każdym razem, gdy cały kod jest od zera skompilowany.

+0

Mam ten sam problem, mój czas budowy wynosi około 26 sekund. Próbowałem ustawień rciovati wymienionych, ale z false w tagu dexOptimize i zyskałem 2 sekundy. Oto tagi użyłem: - Wszystkie aktualna konfiguracja -> \t \t \t \t \t false prawda \t \t \t \t \t /tmp/predexedLibs erikaD

+0

Przypuszczam, że jest większe przyspieszenie, jeśli używasz sporej liczby bibliotek. – rciovati

+0

Używam około 15 bibliotek, w tym Android, kompatybilność itp. Chodzi o to, że podczas kompilacji widzę, że polecenie dex trwa jeszcze trochę czasu, aby zostać wykonane, nawet jeśli biblioteki są wcześniej zwerbowane. Jakieś pomysły? – erikaD

3

Maven 3 ma wielowątkowe kompilacje. Przynajmniej to wypróbuję. Biorąc pod uwagę, że jesteś już w 20 sekund, nie może zrobić wiele, ale na pewno przyspieszyło naszą większą Maven buduje

mvn -T 4 clean install # Builds with 4 threads 
mvn -T 1C clean install # 1 thread per cpu core 
mvn -T 1.5C clean install # 1.5 thread per cpu core 

Parallel builds in Maven 3

0

Można spróbować użyć narzędzia, które przesyłać tylko delta zmian w emulatorze : tylko zmienione klasy zostaną przekazane do urządzenia, należy zaoszczędzić trochę czasu. Można wypróbować narzędzie: http://www.instareloader.com/download/ użytkowania „inirwetrust” jako hasło

Powiązane problemy