Kompilacja Androida jest powolna (przy użyciu Eclipse)

Kiedy zmienię jakiekolwiek .java file and build, kompilacja trwa 16 sekund. Nie rozumiem, dlaczego powinno być tak wolno!?

Włączyłem verbose output dla Andoroid.

Window > Preferences > Android > Build output > Verbose.

Wynik wyjściowy (konsola > Android) to:

[19:46:10] Refreshing resource folders.
[19:46:10] Starting incremental Pre Compiler: Checking resource changes.
[19:46:10] Nothing to pre compile!
[19:46:10] Starting incremental Package build: Checking resource changes.
[19:46:10] ignored resource ...\bin\.\classes.dex
[19:46:10] processing ...\A.class
[19:46:10] processing ...\B.class
    ...
[19:46:21] processing com/google/inject/util/Providers.class...
[19:46:21] processing com/google/inject/util/Types.class...
[19:46:24] Using default debug key to sign package
[19:46:24] Packaging ...\bin\resources.ap_
[19:46:24] Packaging classes.dex
    ...
[19:46:25] Packaging ...\annotations.jar
[19:46:25] Build Success!
[19:46:25] Refreshing resource folders.
[19:46:25] Starting incremental Pre Compiler: Checking resource changes.
[19:46:26] Nothing to pre compile!

"przetwarzanie".zajęcia trwały 14 sekund. I "przetwarza" wszystkie pliki, nawet ze wszystkich .pliki JAR połączone. Myślę, że coś złego się tu dzieje, jako tylko jeden .plik java został zmieniony.

Co mogę zrobić, aby poprawić kompilację speed?

Author: alex2k8, 2010-05-21

6 answers

Myślę, że to nieporozumienie. Jak mówisz, tylko zmodyfikowane klasy są rekompilowane( przez Eclipse w ciągu milisekund); po tym jednak, wtyczka ADT pobiera każdą skompilowaną klasę i tłumaczy ją do formatu bajtowego Dalvika za pomocą narzędzia DX. Wynikiem tego procesu jest pojedynczy plik, classes.dex, który zawiera wszystkie klasy w aplikacji, w tym te pochodzące z odwołanych bibliotek. Ten ostatni krok "tłumaczenia" to ten, który trwa dłużej ponieważ jest naprawdę słabo zoptymalizowany: wtyczka ADT niczego nie buforuje, po prostu retranslatuje każdą klasę przy każdej kompilacji (i jest boleśnie wolna). W przypadku średnich i dużych projektów robi się to naprawdę frustrujące... Mam nadzieję, że Google poprawi to w przyszłym wydaniu ADT / SDK.

 55
Author: lencinhaus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-20 09:33:39

Inne obejście to:

  • Wyłącz Kreator pakietów Androida (kliknij prawym przyciskiem myszy projekt#Properties#Builders)
  • Użyj ant do budowania i wdrażania apk
Aby uzyskać więcej informacji, zapoznaj się z naszą polityką prywatności]}
 9
Author: oae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-22 21:25:24

ADT 21 pre-dex wszystkie biblioteki. Oznacza to, że regularna kompilacja tylko Re-dex wyjście projektu (szybciej), a następnie Scala wynik z wstępnie deksowanych bibliotek (dość szybko).

 4
Author: Xavier Ducrohet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-01 18:53:34

Zwiększenie pamięci dostępnej dla Eclipse wydaje się bardzo pomocne. Spróbuj uruchomić go tak:

eclipse -vmargs -Xms1024m -Xmx2048m
 0
Author: iceheart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-09 01:54:51

Jak wspomniaĺ 'alex2k8 uĹ' Ä ... czyĹ 'em wyĹ" wietlane wyjĹ " cie. Sprawcą był AdMob jar.

Używam ADT 22.0. Moja aplikacja zawiera AdMob i podczas uruchamiania lub debugowania pliki klas w AdMob jar są konwertowane do plików dex, co było bardzo powolne.

Usunąłem kod admob i JAR z mojego projektu tymczasowo i proces budowania jest znowu normalny.

 0
Author: Vysakh Prem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-07 07:09:55

Przy każdym zapisie, Eclipse package i dexing wszystkich plików. Ale nie jest to konieczne, ponieważ nie musisz wdrażać aplikacji w apk za każdym razem, gdy oszczędzasz.

W każdym razie kluczem tego problemu jest odznaczenie opcji:

"Pomiń pakowanie i deksowanie do czasu eksportu lub uruchomienia. (Przyspiesza automatyczne kompilowanie na zapisie pliku.)"

Wewnątrz "Window -- > Preferences -- > Android -- >Build"

To rozwiąże twój problem.

Cheers

 0
Author: Marco HC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-22 11:01:35