Mam wiele projektów (~ 10 modułów), których budowanie za każdym razem zajmuje około 20-30 sekund. Po naciśnięciu przycisku Uruchom w Android Studio muszę za każdym razem czekać na przebudowanie aplikacji, co jest bardzo wolne.
Czy można zautomatyzować proces budowania w Android Studio? Czy masz jakieś porady, jak przyspieszyć ten proces?
W Eclipse, dzięki automatycznemu budowaniu, uruchomienie tego samego projektu na emulatorze zajmuje około 3-5 sekund.
To jest mój plik build.gradle (moduł aplikacji):
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':libraries:SharedLibs')
compile project(':libraries:actionbarsherlock')
compile project(':libraries:FacebookSDK')
compile project(':libraries:GooglePlayServices')
compile project(':libraries:HorizontalGridView')
compile project(':libraries:ImageViewTouch')
compile project(':libraries:SlidingMenu')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 16
}
}
android
gradle
android-studio
build.gradle
froger_mcs
źródło
źródło
Odpowiedzi:
Sprzęt komputerowy
Przykro mi, ale uaktualnienie stacji rozwojowej do SSD i ton pamięci RAM ma prawdopodobnie większy wpływ niż łącznie poniższe punkty.
Wersje narzędzi
Zwiększenie wydajności kompilacji ma główny priorytet dla zespołów programistycznych, więc upewnij się, że korzystasz z najnowszej wtyczki Gradle i Android Gradle .
Plik konfiguracyjny
Utwórz plik o nazwie
gradle.properties
w dowolnym katalogu:/home/<username>/.gradle/
(Linux)/Users/<username>/.gradle/
(Prochowiec)C:\Users\<username>\.gradle
(Windows)Dodać:
Właściwości Gradle działają lokalnie, jeśli je
projectRoot\gradle.properties
umieścisz, a globalnie, jeśli je umieściszuser_home\.gradle\gradle.properties
. Właściwości stosowane, jeśli uruchamiasz zadania stopniowe z konsoli lub bezpośrednio z pomysłu:Ustawienia IDE
Możliwe jest dostosowanie integracji Gradle-IntelliJ z GUI ustawień IDE. Włączenie „pracy offline” (sprawdź odpowiedź z yava poniżej) spowoduje wyłączenie rzeczywistych żądań sieciowych na każdym „pliku stopni synchronizacji”.
Natywny multi-dex
Jednym z najwolniejszych kroków kompilacji apk jest konwersja kodu bajtowego java na pojedynczy plik dex. Włączenie natywnego multidexu (minSdk 21 tylko dla kompilacji debugowania) pomoże oprzyrządowaniu zmniejszyć ilość pracy (sprawdź odpowiedź Aksel Willgert poniżej).
Zależności
Preferuj
@aar
zależności od podprojektów bibliotecznych.Wyszukaj pakiet aar na mavenCentral , jCenter lub użyj jitpack.io, aby zbudować dowolną bibliotekę z github. Jeśli nie edytujesz źródeł biblioteki zależności, nie powinieneś budować jej za każdym razem ze źródłami projektu.
Antywirusowe
Rozważ wykluczenie plików projektu i pamięci podręcznej ze skanowania antywirusowego. Jest to oczywiście kompromis z bezpieczeństwem (nie próbuj tego w domu!). Ale jeśli często przełączasz się między gałęziami, program antywirusowy ponownie przeskanuje pliki przed zezwoleniem procesowi gradacji na użycie, co spowalnia czas kompilacji (w szczególności projekt synchronizacji AndroidStudio z plikami stopni i zadaniami indeksowania). Zmierz czas kompilacji i przetwarzaj procesor z włączonym programem antywirusowym i bez niego, aby sprawdzić, czy jest on powiązany.
Profilowanie kompilacji
Gradle ma wbudowaną obsługę projektów profilowania . Różne projekty używają innej kombinacji wtyczek i niestandardowych skryptów. Używanie
--profile
pomoże znaleźć wąskie gardła.źródło
dependencies {compile 'com.android.support:support-v4:21.0.+'}
jest powolnym rozwiązaniem? nie jestem pewien, aby zrozumiećMożesz zignorować sprawdzanie bieżącej aktualizacji stopni.
W systemie Windows z Android Studio 1.5: Idź do
File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)
w dół z ~ 30 + sekund do ~ 3 sekund
źródło
gradle
uruchomieniu. To dziwne.Szukałem tego wszędzie i wreszcie znalazłem rozwiązanie, które nam odpowiada. Włączenie kompilacji równoległych (w OSX:)
preferences -> compiler -> gradle -> "Compile independent modules in parallel"
i włączenie opcji „twórz projekt automatycznie” obniżyło go z ~ 1 minuty do ~ 20 sekund. Dzięki / u / Covalence.http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/
źródło
Niedawno kupiłem nowy dysk SSD i przeszedłem z systemu Windows na Linux. Moje czasy kompilacji są teraz o rząd wielkości szybsze i nie są już denerwujące.
Chociaż nie odpowiada bezpośrednio na twoje pytanie, dlaczego jest wolniejszy niż zaćmienie, pokazuje, że proces jest ograniczony dyskiem, a aktualizacja dysku SSD może być (nieco kosztownym) rozwiązaniem. Zgaduję, że znajdą się ludzie, którzy wyszukają problem i znajdą się tutaj, którzy mogą docenić moje doświadczenie.
źródło
Przyspieszenie gradla wbudowane w Android Studio 3.2.1
Czy kiedykolwiek czułeś się, jakbyś czekał na ukończenie kompilacji w Android Studio przez kilka minut? Ja też. I to jest dość denerwujące. Na szczęście istnieje kilka sposobów, aby to poprawić. Android używa Gradle do budowania. Najnowsza wersja 4.6 ma ogromny wzrost wydajności w porównaniu do poprzednich wersji (szczegółowe informacje znajdują się w Uwagach do wydania).
Krok 1: Zaktualizuj wersję stopniową Łatwiejszym sposobem na osiągnięcie tego jest przejście do: Otwórz Ustawienia modułu (twój projekt)> Struktura projektu
AKTUALIZACJA
Zmień na wersję Gradle: 4.6 i Zmień na wersję wtyczki Android: 3.2.1
Pobierz wersję dystrybucyjną Gradle Release ze strony https://services.gradle.org/distribution/gradle-4.6-all.zip I skopiuj ją do folderu Gradle:
Ostatnim krokiem jest dodanie opisu w Ustawieniach> Stopień
Nie zapomnij kliknąć Zastosuj, aby zapisać zmiany.
Krok 2: Włącz tryb offline, demona Gradle i kompilację równoległą dla projektu Tryb offline informuje Gradle, aby zignorował sprawdzanie aktualizacji na bieżąco. Gradle prosi o zależności za każdym razem, a ta opcja sprawia, że używa tylko zależności, które są już na komputerze. Idź do Gradle z Android Studio Setting i kliknij w polu Praca offline.
Następnym krokiem jest włączenie demona Gradle i kompilacji równoległej dla twojego projektu. Równoległe kompilacje spowodują, że twoje projekty z wieloma modułami (kompilacje wielu projektów w Gradle) będą budowane równolegle, co powinno przyspieszyć budowę dużych lub modułowych projektów.
Te ustawienia można włączyć, modyfikując plik o nazwie gradle.properties w katalogu skryptów Gradle (tj. ~ / .Gradle / gradle.properties). Niektóre z tych opcji (np. Równoległe moduły Complie) są dostępne w Android Studio, a także dostępne tam przez domyślnie, ale umieszczenie ich w pliku gradle.properties pozwoli im na budowanie z terminala, a także upewni się, że twoi koledzy będą używać tych samych ustawień. Ale jeśli pracujesz w zespole, czasem nie możesz tego zrobić.
Użycie demona przyspieszy uruchamianie kompilacji, ponieważ nie będzie musiał za każdym razem uruchamiać całej aplikacji Gradle. Demon Gradle nie jest domyślnie włączony, ale zaleca się, aby zawsze włączać go na komputerach programistów (ale pozostawiając wyłączony dla serwerów ciągłej integracji). Często zadawane pytania dotyczące tego trybu można znaleźć tutaj https://docs.gradle.org/current/userguide/gradle_daemon.html . Ustawienie kompilacji równoległych może być niebezpieczne dla niektórych projektów. Wymagane jest, aby wszystkie moduły musiały być oddzielone od siebie, aby kompilacja nie powiodła się (zobacz http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects ).
Krok 3: Włącz ustawienia przyrostowego rysowania i poprawiania pamięci Możesz przyspieszyć swoje kompilacje, włączając przyrostowe rysowanie. W pliku kompilacji modułu:
Dodaj tę opcję do bloku Androida:
W tym bloku dexOptions można również określić rozmiar sterty dla procesu dex, na przykład:
Gdzie „12g” to 12 GB pamięci. Dodatkowe informacje na ten temat można znaleźć tutaj google.github.io/android-gradle-dsl/current/ Możesz również skonfigurować parametry Gradle w pliku ustawień, np. Zwiększyć maksymalny rozmiar sterty w przypadku dużego projektu:
Zobacz całą listę parametrów tutaj: https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties, aby uzyskać szczegółowe informacje.
Krok 4: Wyłącz program antywirusowy Rozważ wykluczenie plików projektu i pamięci podręcznej ze skanowania antywirusowego. Jest to oczywiście kompromis z bezpieczeństwem. Ale jeśli często przełączasz się między gałęziami, program antywirusowy ponownie przeskanuje pliki przed zezwoleniem procesowi gradacji na użycie, co spowalnia czas kompilacji (w szczególności projekt synchronizacji Android Studio z plikami stopni i zadaniami indeksowania). Zmierz czas kompilacji i przetwarzaj procesor z włączonym programem antywirusowym i bez niego, aby sprawdzić, czy jest on powiązany. Mam nadzieję, że to pomoże. Zostaw komentarz, jeśli masz jakieś pytania lub inne wskazówki dotyczące poprawy wydajności kompilacji.
pomocny link
źródło
Jeśli korzystasz z usług Google Play, w zależności od potrzebnych bibliotek zamiast całego obiektu blob może to przyspieszyć.
Jeśli potrzebujesz tylko map, użyj:
zamiast:
Ten ostatni przynosi 20k metod (patrz blog) do ścieżki klasy , co może przewrócić całkowitą liczbę metod ponad 64 tys.
Zmusiłoby to użycie proguard lub multidex nawet do kompilacji debugowania. W przypadku jednego z moich projektów miałem następujące czasy kompilacji
Jeśli programujesz na sdk 21+, można zoptymalizować kompilacje multidex, zgodnie z dokumentacją Androida
źródło
play-service
bibliotekę, Skompilowałem tylkomaps
ilocations
i wyłączonamultidex
. Czuję dużą różnicę. Dzięki +1Akceptowana odpowiedź dotyczy starszych wersji Androida Studio i większość z nich działa nadal. Aktualizacja Androida Studio trochę przyspieszyła. Nie zawracaj sobie głowy określaniem wielkości sterty, ponieważ wzrośnie ona automatycznie wraz ze wzrostem Xms i Xmx. Oto niektóre modyfikacje z VMoptions
W folderze bin znajduje się plik studio.vmoptions do ustawienia konfiguracji środowiska. W moim przypadku jest to studio64.vmoptions Dodaj następujące wiersze, jeśli jeszcze nie zostały dodane, i zapisz plik. W moim przypadku mam 8 GB pamięci RAM.
Uruchom studio Android. Przejdź do Plik-> Ustawienia-> Kompilacja, wykonanie, wdrożenie-> Kompilator
W przypadku korzystania z Maca, na początku nie mogłem znaleźć opcji vm. Tak czy inaczej , oto fajny artykuł o tym, jak możemy zmienić opcje vm w MAC OSX . Cytując z tego artykułu tutaj.
Otwórz terminal i wprowadź to polecenie, aby otworzyć opcje vm w systemie MAC OSX:
źródło
Wystarczy utworzyć plik o nazwie gradle.properties w następującym katalogu:
Dodaj ten wiersz do pliku:
Dla mnie prędkość jest teraz równa Eclipse.
Źródło: https://www.timroes.de/2013/09/12/speed-up-gradle/
źródło
Możesz przyspieszyć proces, jeśli użyjesz stopniowania z linii poleceń. Jest wiele optymalizacji dla programistów IDE. Ale to tylko wczesna wersja.
Aby uzyskać więcej informacji, przeczytaj tę dyskusję na temat g + z niektórymi twórcami.
źródło
Jeśli ktoś pracuje nad projektem, który jest zsynchronizowany przez Subversion i nadal tak się dzieje, myślę, że może to spowolnić proces przepływu pracy w Android Studio. Na przykład, jeśli działa bardzo wolno podczas: przewijania w klasie, xml itp., Gdy moja aplikacja nadal działa na moim urządzeniu.
źródło
Aktualizacja po Android Studio 2.3
Wszystkie odpowiedzi są świetne i zachęcam do korzystania z tych metod w celu poprawy szybkości kompilacji.
Po wydaniu Androida 2.2 we wrześniu 2016 r., Android wydał funkcję eksperymentalnej pamięci podręcznej kompilacji, aby przyspieszyć
gradle
wydajność kompilacji, która jest teraz oficjalna z Android Studio 2.3 Canary. (Oficjalna informacja o wydaniu)Wprowadza nową funkcję pamięci podręcznej kompilacji, która jest domyślnie włączona, może przyspieszyć czasy kompilacji (w tym kompilacje pełne, kompilacje przyrostowe i natychmiastowe uruchamianie) poprzez przechowywanie i ponowne wykorzystywanie plików / katalogów utworzonych w poprzednich kompilacjach tego samego lub innego Androida projekt.
Jak używać:
Dodaj następujący wiersz w swoim
gradle.properties
plikuWyczyść pamięć podręczną:
Nowe zadanie Gradle wzywa
cleanBuildCache
do łatwiejszego czyszczenia pamięci podręcznej kompilacji. Możesz z niego skorzystać, wpisując w swoim terminalu:./gradlew cleanBuildCache
LUB Możesz wyczyścić pamięć podręczną dla Androida studio 2.2, usuwając wszystkie pliki z plikami w lokalizacji
C:\Users\<username>\.android\build-cache
źródło
Po zmianie tych ustawień mój czas kompilacji 10 minut zmieniono na ~ 10 sekund.
Krok 1:
Krok 2:
Odniesienie - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio
Niekorzyść:
Nie będzie można pobrać najnowszych wersji zależności określonych w pliku build.gradle. Działa szybciej, ponieważ wykorzystuje buforowaną migawkę tych importowanych bibliotek.
Ważna uwaga : po wdrożeniu aplikacji usuń to ustawienie i skompiluj z najnowszymi wersjami zależności.
źródło
Rozwiązałem mój z
Wersje Gradle wzrosły z 8 minut do 3 sekund.
źródło
Oto, co pomogło temu początkującemu programistowi Androida (dawnemu profesjonalnemu programistowi, lata temu) przyspieszyć Android Studio 2.2. Wiem, że to powtórka, ale podsumowując w jednym miejscu.
Początkowe kompilacje mogą być brutalnie powolne, ale ponowne uruchomienie uruchomionych aplikacji jest obecnie zwykle bardzo tolerowane. Używam nieoptymalnego komputera: czterordzeniowy procesor AMD A8-7410, 8 MB pamięci RAM, dysk SSD bez HDD, Win 10. (I to mój pierwszy komunikat o przepełnieniu stosu ....;)
W USTAWIENIACH -> GRADLE:
tak dla „Praca offline” (jest to chyba najbardziej importowane ustawienie).
W USTAWIENIACH -> KOMPILER:
tak dla „Kompiluj niezależne moduły równolegle” (nie jestem pewien, czy to faktycznie pomaga w wykorzystaniu procesorów wielordzeniowych).
W PISMACH GRADLE „build.gradle (Module: app)”:
RÓWNIEŻ W PISANKACH , „gradle.properties (właściwości projektu)”:
org.gradle.jvmargs = -Xmx3048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8
org.gradle.parallel = true org.gradle.daemon = true
Dodatkowo , testowanie na urządzeniu fizycznym zamiast emulatora działa dla mnie dobrze; mały tablet, który wstaje, jest wygodny.
źródło
Kolejna wskazówka dotycząca poprawy wydajności:
Android Studio 3.0 zawiera nowy kompilator DEX o nazwie D8.
„Kompilator dex działa głównie pod maską podczas codziennego tworzenia aplikacji, ale bezpośrednio wpływa na czas kompilacji aplikacji, rozmiar pliku .dex i wydajność środowiska wykonawczego”.
„A porównując nowy kompilator D8 z bieżącym kompilatorem DX, D8 kompiluje się szybciej i wyświetla mniejsze pliki .dex, zachowując tę samą lub lepszą wydajność środowiska uruchomieniowego aplikacji.”
D8 jest opcjonalny - skorzystaj z niego, musimy umieścić w gradle.properties projektu
Więcej informacji: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html
PS. Poprawia mój czas budowy o około 30%.
źródło
Ta konfiguracja przebiega dla mnie bardzo szybko (około 2 sekund kompilacji)
build.gradle
gradle.properties
mój komputer:
pliki projektów
- wszystkie w lokalnym HD
źródło
Wykonaj następujące kroki.
Włącz tryb offline: sprawdź poniżej ekranu drukowania.
https://i.stack.imgur.com/RF9uG.png
Włącz natychmiastowe uruchamianie: sprawdź poniższy ekran drukowania.
https://i.stack.imgur.com/mvHKJ.png
Jeśli chcesz dowiedzieć się więcej o natychmiastowym uruchomieniu, odwiedź witrynę programisty Androida.
źródło
Możesz spróbować otworzyć menu stopni po prawej stronie studia i złożyć tylko te moduły, które zmieniłeś, a następnie uruchomić polecenie instalacji. Kiedy naciśniesz „uruchom”, wszystko się składa, bez względu na zmiany, które wprowadziłeś w kodzie, który gromadzisz
źródło
Daleki jestem od bycia ekspertem w dziedzinie Gradle, ale moje środowisko ma następującą linię w .gradle / init.gradle
Jednak nie mam pojęcia, dlaczego ta linia tam była, ale staram się zmienić
a teraz w końcu mogę pracować bez przeklinania na schemat kompilacji Android Studio i Gradle.
źródło
W naszym konkretnym przypadku problem wynikał z posiadania retrolambdy wtyczką , która zmusiła wszystkie projekty i podprojekty do ponownej kompilacji za każdym razem, gdy próbowaliśmy uruchomić naszą aplikację, nawet jeśli żaden kod nie został zmieniony w naszych podstawowych modułach.
Usunięcie retrolamby naprawiło to dla nas. Mam nadzieję, że to komuś pomoże.
źródło
Spróbuj tego najpierw. To moje osobiste doświadczenie.
Miałem ten sam problem. To, co zrobiłem, to po prostu trwałe wyłączenie programu antywirusowego (moim był Avast Security 2015). Zaraz po wyłączeniu antywirusa wszystko poszło dobrze. stopień zakończył się powodzeniem. Od teraz w ciągu kilku sekund grad się kończy (zajmuje tylko 5-10 sekund).
źródło
Cześć, wiem, że to bardzo późna odpowiedź, ale może pomóc komuś
w moim przypadku, którego używałem
w mojej aplikacji zależność Gradle,
ale w jednej z moich bibliotek tak było
po zmianie wszystkich na najnowszą wersję mój problem został rozwiązany.
źródło
Wykonanie tych kroków sprawi, że będzie to 10 razy szybsze i skróci czas budowy o 90%
Najpierw utwórz plik o nazwie gradle.properties w następującym katalogu:
Dodaj ten wiersz do pliku:
I sprawdź te opcje w Android Studio
źródło
UŻYJ tego sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libncurses5: i386 libstdc ++ 6: i386 zlib1g: i386
Android Studio nie buduje nowego projektu, upłynął limit czasu podczas oczekiwania na proces aapt slave
źródło
Trywialna zmiana (na xml resoruce) nadal trwało 10 minut . Jak mówi @rivare w swojej odpowiedzi, kompilacja wiersza poleceń jest szybsza (zmniejszono to do 15 sekund ).
Oto kilka kroków, które pozwolą przynajmniej szybko zbudować trywialną wersję z wiersza poleceń systemu Windows.
Przejdź do katalogu głównego projektów (gdzie znajduje się gradlew.bat):
cd c: \ android \ MaskActivity
wykonaj kompilację :
gradlew asembleDebug
odinstaluj apk bezpośrednio z telefonu (przeciągnij go, aby odinstalować).
Po zakończeniu kompilacji zabij proces BIG Javy za pomocą Menedżera zadań Windows.
LUB jeśli masz narzędzia uniksowe na komputerze z systemem Windows:
Wyświetlane są „pid”:
Teraz zainstaluj apk:
adb -d zainstaluj C: \ Android \ MaskActivity \ app \ build \ Output \ apk \ app-debug.apk
źródło
Zgodnie z dokumentacją Androida , dodaj to do pliku stopni modułu aplikacji.
źródło
Aby uruchomić środowisko Android na maszynie o niskiej konfiguracji.
Android studio ma domyślną stertę 1,2 Gb, może zmniejszyć się do 512 MB Pomoc> Edytuj niestandardowe studio opcji maszyn wirtualnych. Vmoptions -Xmx512m Wydajność układów zostanie przyspieszona
Dla Gradle jeden z podstawowych składników studia Android Mkae na pewno teraz 3.0beta jest najnowsza
Poniższe wskazówki mogą wpłynąć na jakość kodu, dlatego należy zachować ostrożność:
Program Studio zawiera tryb oszczędzania energii, gdy jest włączony, zamyka operacje w tle, które nie zostawiają włókien, uzupełniają kod i tak dalej.
W razie potrzeby możesz uruchomić ręcznie lintcheck ./gradlew lint
Większość korzysta z emulatorów Androida, zużywa średnio 2 GB pamięci RAM, więc jeśli to możliwe, użyj rzeczywistego urządzenia z Androidem, co zmniejszy obciążenie twojego komputera. Alternatywnie możesz zmniejszyć ilość pamięci RAM emulatora, a to automatycznie zmniejszy zużycie pamięci wirtualnej na twoim komputerze. można to znaleźć w konfiguracji urządzenia wirtualnego i ustawieniach zaawansowanych.
Tryb stopniowy offline to funkcja dla użytkowników o ograniczonej przepustowości, która wyłącza pobieranie zależności kompilacji. Zmniejszy to działanie w tle, co pomoże zwiększyć wydajność studia Android.
Android studio oferuje optymalizację do kompilacji wielu modułów równolegle. Na komputerach o niskiej pamięci RAM ta funkcja prawdopodobnie będzie miała negatywny wpływ na wydajność. Możesz go wyłączyć w oknie dialogowym ustawień kompilatora.
źródło