Tworzenie wersji Androida Studio trwa zbyt długo

225

Mój projekt Android Studio budował się szybciej, ale teraz zajmuje dużo czasu. Wszelkie pomysły, co może powodować opóźnienia? Próbowałem https://stackoverflow.com/a/27171878/391401, ale bez efektu. Nie mam uruchomionego programu antywirusowego, który mógłby zakłócić kompilację. Moja aplikacja nie jest też tak duża (około 5 MB ) i kiedyś była budowana w ciągu kilku sekund, ale nie jestem pewien, co się zmieniło.

10:03:51 Gradle build finished in 4 min 0 sec  
10:04:03 Session 'app': running  
10:10:11 Gradle build finished in 3 min 29 sec  
10:10:12 Session 'app': running  
10:20:24 Gradle build finished in 3 min 42 sec  
10:28:18 Gradle build finished in 3 min 40 sec  
10:28:19 Session 'app': running  
10:31:14 Gradle build finished in 2 min 56 sec   
10:31:14 Session 'app': running  
10:38:37 Gradle build finished in 3 min 30 sec  
10:42:17 Gradle build finished in 3 min 40 sec  
10:45:18 Gradle build finished in 3 min 1 sec  
10:48:49 Gradle build finished in 3 min 30 sec  
10:53:05 Gradle build finished in 3 min 22 sec  
10:57:10 Gradle build finished in 3 min 19 sec  
10:57:11 Session 'app': running  
Harish
źródło
1
Czego używasz, swojego telefonu z systemem Android lub dowolnego emulatora do uruchamiania aplikacji?
Ram Mansawala
Działa na urządzeniu
Harish
3
nie dlaczego Google przestawiło się z Eclipse na Android Studio .... Android Studio jest do bani
Kapil
38
Kiedy studio Android było nowe, wielu na StackOverflow odrzuciło skargi na ten temat, ponieważ była to „tylko wersja beta”. Jednak minęło już kilka lat, odkąd była to „tylko beta” i wciąż jest powolna, i to na 8 rdzeniach, 16 GB pamięci RAM i dysku SSD. Stare środowisko Eclipse skonfigurowane na tym komputerze jest tak szybkie, jak mrugnięcie.
Andrew S
3
Przeczytaj to: pissedoff-techie.blogspot.in/2016/01/…
Utsav Gupta

Odpowiedzi:

453

W Android Studio przejdź do Plik -> Ustawienia -> Kompilacja, wykonanie, wdrożenie -> Narzędzia kompilacji -> Stopień

(jeśli na Macu) Android Studio -> preferencje ... -> Kompilacja, wykonanie, wdrożenie -> Narzędzia do kompilacji -> Gradle

Zaznacz „Praca offline” w „Globalnych ustawieniach gradle”

Skróci to 90% czas budowy stopnia.

zaznacz to, aby skrócić czas kompilacji

jeśli właśnie dodałeś nową zależność do swojego stopnia, będziesz musiał odznaczyć pracę offline lub stopień nie będzie w stanie rozwiązać zależności. Po zakończeniu rozwiązywania możesz sprawdzić pracę offline, aby uzyskać szybszą kompilację

Biswajit Karmakar
źródło
11
Działa świetnie. Od 12 minut do 5 sekund
Ramesh
18
czy ta konfiguracja nie przestanie pobierać nowych bibliotek, gdy dodamy je do build.gradle?
Dany Y
48
kiedy dodajesz nową bibliotekę, musisz ją tylko raz udostępnić online, co zostanie powiadomione przez kompilację stopni, aby projekt mógł
zostać uruchomiony
15
Czy to oznacza, że ​​cały czas chodziło o szybkość internetu zamiast szybkości procesora?
1
Łał! Poszedłem z ponad 15 minut do 1 minuty: O
Kardynał - Przywróć Monikę
150

Jeśli korzystasz z usług Google Play, upewnij się, że nie używasz tego w skrypcie kompilacji Gradle:

compile 'com.google.android.gms:play-services:8.3.0'

Używaj tylko interfejsów API Google, których tak naprawdę używa Twoja aplikacja. Jeśli wszystko, czego używasz, to Mapy Google, możesz użyć tego:

com.google.android.gms:play-services-maps:8.3.0

Kiedy to zrobiłem, mój czas kompilacji skrócił się z ponad 2 minut do około 25 sekund. Aby zapoznać się z listą Google api, które można selektywnie kompilować, zobacz:

https://developers.google.com/android/guides/setup

AndroidDev
źródło
12
Zasługujesz na ponad 100 pozytywnych opinii. Każde inne źródło sugeruje dodanie org.gradle.parallel=truei związanie z linią poleceń ... ale żadne nie zapewnia prostego i bezpośredniego zrozumienia tego, co się naprawdę dzieje. Korzystając z twoich rad, mój czas budowy wydłużył się z 1 minuty 5 sekund do 3,427 sekund. Niesamowite!!
Sauron
Wielkie dzięki, to był też mój główny problem. Teraz wszystko działa świetnie.
alnaji 17.04.16
1
Działa świetnie. Użyj tego linku, aby znaleźć nazwę swojej biblioteki usług Play: developers.google.com/android/guides/…
PC.
Zasłużyłeś na kleszcza ... Rozwiązałeś mój problem. Problem dotyczy usług Google Play ... Dzięki :)
Karue Benson Karue
Nie tylko pomogło to w problemach z długimi kompilacjami, ale teraz mogę także wdrożyć bezpośrednio na urządzeniu z Androidem bez używania Proguard podczas debugowania (wcześniej pojawiał się błąd dotyczący limitu metody 65K). dzięki!
magritte
52

Znaleziono prosty i najlepszy sposób na zbudowanie gradu

przejdź do swojej aplikacji >> otwórz swój gradle.properties i zmień z niego kilka wierszy [usuń # ]

w przeciwnym razie możesz skopiować również wklej mój poniższy fragment kodu

    # Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx2048m -XX:MaxPermSize=512m
 org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 org.gradle.parallel=true

działało dla mnie wcześniej, zajmuje prawie 2-3 minuty, teraz zajmuje tylko 5-6 sekund

w powyższym scenariuszu mój komputer Mac ma 8 GB pamięci RAM, więc przypisałem 4 GB dla gradle

Android jest dla mnie wszystkim
źródło
To skróciło mój czas budowy z ponad 30 minut do 24 minut ... Czy jest jakiś sposób na dalsze zmniejszenie ...?
Programowanie Pirate
34

Znalazłem przyczynę !! Jeśli Android Studio ma ustawienie serwera proxy i nie może połączyć się z serwerem, kompilacja zajmuje dużo czasu, prawdopodobnie próbuje dotrzeć do serwera proxy i czeka na limit czasu. Kiedy usunąłem serwer proxy, ustawienie działa poprawnie.

Usuwanie proxy: File > Settings > Appearance & Behavior > System settings > HTTP Proxy

Harish
źródło
3
Jak usunąć serwer proxy?
Joolah,
2
W systemie Windows> Ustawienia> Wygląd i zachowanie> Ustawienia systemowe> Serwer proxy HTTP
Harish
2
Mój problem dotyczył również proxy, ale musiałem dodać również proxy HTTPS we właściwościach stopni. Serwer proxy HTTP nie wystarczył: systemProp.http.proxyHost = xxx.xxx.xxx.xxx systemProp.http.proxyPort = 8080 systemProp.https.proxyHost = xxx.xxx.xxx.xxx systemProp.https.proxyPort = 8080
3098756
26
AS to kompletny żart i bs. Mam już dość tych bzdur.
The_Martian
9
Zgadzam się!!! Cierpię bezbożne ilości bólu podczas migracji dużego projektu z Eclipse, a teraz, gdy błędy zostały usunięte, budowanie z AS nigdy się nie kończy !!! Nienawidzę AS @The_Martian
Josh
20

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:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

Dodaj ten wiersz do pliku:

org.gradle.daemon=true

org.gradle.parallel=true
użytkownik779370
źródło
4
Możesz ustawić go bezpośrednio z gradle.properties znajdującego się w projekcie studyjnym.
Biswajit Karmakar
3
Tak, włącz również tę opcję org.gradle.jvmargs = -Xmx2048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8
779370
2
Ustaw MaxPermSize = 1024m
Biswajit Karmakar
Dlaczego te właściwości nie są predefiniowane? Czy są jakieś wady?
oli
Z tej opcji należy korzystać tylko w przypadku projektów niezwiązanych z wielkością produkcji. Więcej szczegółów, wizyta gradle.org/docs/current/userguide/...
Javad
17

Włączenie funkcji Java 8 spowodowało śmiertelnie powolną kompilację

stopień

 jackOptions {
        enabled true
  }

  compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

Po usunięciu powyższych linii buduje się w kilka sekund.

Jest problem Kompilacja z Jackiem zajmuje bardzo dużo czasu

Odpowiedź kierownika projektu

Wiemy, że czasy kompilacji stanowią obecnie problem z Jackiem. Wprowadziliśmy ulepszenia wtyczki 2.4 Gradle, które powinny być znaczącym ulepszeniem dla przyrostowych wersji.

W tej chwili najnowsza dostępna wersja Gradle to 2.3.0-beta4

tchelidze
źródło
4
Tak, zgadzam się. Aby włączyć java 8 w Android Studio, musisz użyć Jacka i robiąc to, moje czasy kompilacji lecą na Księżyc od 1-2 minutowych kompilacji do 16 minut ... co ... Teraz jest to bezużyteczne. Jak zawsze świetna praca Google
Karol Żygłowicz
7

Rozwiązanie @AndroidDev działało dla mnie. Całą bibliotekę uwzględniłem w stopniach.

compile 'com.google.android.gms:play-services:8.4.0'

Zmiana rozwiązania problemu. Od 4 min do 1 min.

compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-analytics:8.4.0'

Dziękuję

KlevisGjN
źródło
4

Sprawdź swoje połączenie internetowe . Jeśli prędkość Internetu jest bardzo wolna, kompilacja stopnia również zajmie dużo czasu. Sprawdzam, zmieniając połączenie internetowe Wi-Fi z innym dobrym połączeniem prędkości. Teraz czas budowy jest normalny. Spróbuj tego, zanim przejdziesz do innych rozwiązań. ktoś podejmie złą decyzję o ponownej instalacji lub zmianie ustawień. Mam nadzieję, że to pomoże. Dziękuję i pozdrawiam.

Karthikeyan Dheshnamoorthy
źródło
Pamiętaj, aby zezwolić Android Studio na zaporze. Czekałem prawie 15 minut na ocenę nowej instalacji, kiedy nagle wyskakujące okienko zapory ogniowej poprosiło mnie o pozwolenie. Mogło być wcześniej
Mohd.Zafranudin
2

1) Mój czas kompilacji znacznie się wydłużył po dodaniu nowych zależności biblioteki do mojego pliku stopni, co okazało się, że muszę potem używać multidex. A kiedy poprawnie skonfigurowałem multidex, moje czasy kompilacji wzrosły do ​​2-3 minut. Jeśli więc chcesz skrócić czas kompilacji, unikaj korzystania z multideksów i, w miarę możliwości, zmniejsz liczbę zależności bibliotek.

2) Możesz także spróbować włączyć „pracę offline” w Android Studio, jak sugerowano tutaj, co ma sens. Nie spowoduje to ponownego pobrania bibliotek za każdym razem, gdy tworzysz kompilację. Być może powolne połączenie lub użycie proxy / VPN z wyłączoną „pracą offline” może prowadzić do wydłużenia czasu kompilacji.

3) usługi Google - jak wspomniano tutaj, nie używaj całego pakietu, używaj tylko potrzebnych jego części.

lxknvlk
źródło
1

W wersji beta Androida Studio 2.0 wprowadzili funkcję o nazwie Instant Run . Znacznie skraca czas kompilacji. Podstawową koncepcją jest to, że Android Studio wprowadza tylko niewielkie zmiany wprowadzone w już uruchomionej aplikacji.

Klasyfikuje zmiany, które wprowadzamy w naszym kodzie, na trzy części: hot swap, warm swap i cold swap, w zależności od obciążenia, jakie zmiana spowodowałaby na kompilacji. Następnie po prostu zamienia kod w już uruchomionej aplikacji i możemy zobaczyć zmiany działające przez kilka sekund. Zobacz ich dokument, aby uzyskać więcej informacji.

Tutaj możesz pobrać podgląd Android Studio 2.0.

PS: Istnieje kilka problemów z tą funkcją. Wymienili to w dokumentacji. Sprawdź to przed instalacją.

Akeshwar Jha
źródło
1
  1. Przejdź do Plik-> Ustawienia -> Stopień -> Ustaw tryb offline i sprawdź
Vikas Khot
źródło
1

Długo miałem do czynienia z tym samym problemem, ale rozwiązałem go, dostosowując ustawienia w stopniach.

Krok 1: W aplikacji Moduł dodaj zależność w BuildScript

buildscript {
 dependencies {
         classpath 'com.android.tools.build:gradle:2.0.0-alpha9'
}
}

Krok 2: Dodaj dexOption i podaj następujący heapSize

  dexOptions {
    incremental = true;
    preDexLibraries = false
    javaMaxHeapSize "4g"
}

Krok 3: Dodaj smaki produktu

    productFlavors {
    dev {
        minSdkVersion 23
        applicationId = "com.Reading.home"
    }
    prod {
        minSdkVersion 15
        applicationId = "com.Reading.home" // you don't need it, but can be useful

    }
}

To powinno skrócić czas kompilacji.

Binesh Kumar
źródło
0

Jeśli używasz systemu Windows 8 ...

Rozwiązania DroidArc i AndroidDev są przydatne, ale niewystarczające. Mój problem związany był z moim systemem operacyjnym Windows 8 i jego 100% użyciem dysku.

Szczególnie konsumencka była usługa wyszukiwania systemu Windows. Wyłącz go za pomocą: cmd (Admin)> net.exe stop "Windows search"

Postępowałem zgodnie ze wskazówkami zawartymi w tym łączu, co rozwiązało problem w postaci 4 wskazówek, jak naprawić zużycie dysku w 100% i poprawić wydajność systemu Windows

Mam nadzieję że to pomoże.

dianakarenms
źródło
0

Miałem ten sam problem w Kotlin. Aktualizacja przestarzałego środowiska uruchomieniowego kotlin rozwiązała to dla mnie

Rami Amro Ahmed
źródło
0

Miałem takie problemy, szczególnie podczas aktywnego debugowania przez telefon; czasami zajęło to 27 minut. Zrobiłem następujące rzeczy i zapoznaj się z objaśnieniami pod każdym z nich - jedno może dla ciebie pracować:

  1. Zmieniono mój plik gradle.properties (w skryptach Gradle, jeśli masz widok pliku projektu w opcji Android LUB w folderze projektu). Dodałem to, ponieważ mój komputer ma trochę pamięci - na końcu możesz przypisać różne wartości w zależności od specyfikacji komputera i minimalnych wymagań studia Android (Xmx8000m -XX: MaxPermSize = 5000m):

org.gradle.daemon = true

org.gradle.configureondemand = true

org.gradle.parallel = true

android.enableBuildCache = true

org.gradle.caching = true

org.gradle.jvmargs = -Xmx8000m -XX: MaxPermSize = 5000m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

  1. Nie rozwiązało to całkowicie mojego problemu w moim przypadku. Dlatego też zrobiłem tak, jak inni sugerowali wcześniej - aby proces kompilacji był offline:

Plik -> Ustawienia / Preferencje -> Kompilacja, wykonanie, wdrożenie -> Stopień

Globalne ustawienia stopniowania (na dole)

Zaznacz pole wyboru o nazwie: Praca offline.

  1. To znacznie skróciło czas, ale było nieregularne; czasami trwało to dłużej. Dlatego wprowadziłem kilka zmian w Instant Run:

Plik -> Ustawienia / Preferencje -> Kompilacja, wykonanie, wdrożenie -> Natychmiastowe uruchomienie

Zaznaczone: Włącz natychmiastowe uruchamianie kodu wymiany na gorąco ...

Sprawdzone: uruchom ponownie aktywność po zmianach kodu ...

  1. Powyższe posunięcie było również błędne i dlatego starałem się dowiedzieć, czy problemem mogą być procesy / pamięć, które działały bezpośrednio na moim telefonie i komputerze. Tutaj zwolniłem trochę pamięci w telefonie i pamięci (która była wykorzystywana w 98% - do 70%), a także w Menedżerze zadań (Windows), zwiększyłem priorytet zarówno Android Studio, jak i Java.exe do High. Zrób ten krok ostrożnie; zależy od pamięci komputera.

  2. Po tym wszystkim mój czas kompilacji podczas aktywnego debugowania na moim telefonie czasami zmniejszał się do 1 ~ 2 minut, ale czasami zwiększał się. Postanowiłem zrobić hack, który mnie zaskoczył, skracając go do kilku sekund jak dotąd w tym samym projekcie, który dał mi 22 - 27 minut to 12 sekund !:

Podłącz telefon do debugowania, a następnie kliknij Uruchom

Po uruchomieniu odłącz telefon - kompilacja powinna być kontynuowana szybciej i na końcu zgłosić błąd informujący o tym: „Aplikacja” sesji: Błąd instalowania plików APK

Ponownie podłącz telefon i ponownie kliknij RUN ...

ALTERNATYWNIE

Jeśli skrypt / funkcja / metoda, którą debuguję, to czysta JAVA, a nie JAVA-android, np. Testowanie API za pomocą JSONArrays / JSONObjects, testuję moje funkcje / metody java na Netbeans, które mogą skompilować pojedynczy plik i wyświetlić dane wyjściowe szybciej niż zrobić niezbędne zmiany w moich plikach Android Studio. To również oszczędza mi dużo czasu.

EDYTOWAĆ

Próbowałem utworzyć nowy projekt Androida w pamięci lokalnej i skopiowałem wszystkie moje pliki z poprzedniego projektu do nowego - java, res, manifest, gradle app i gradle project (z najnowszą zależnością gradle classpath). A teraz mogę zbudować na swoim telefonie w mniej niż 15 sekund.

Firsake
źródło
0

Jeśli w swoim build.gradle masz minifyEnabled do debugowania, usuń go. Miałem go w swoim projekcie i jego budowa zajęła ~ 2-3 minuty. Po sprawdzeniu postępu kompilacji uznałem to za winowajcę, więc usunięcie skomentowanego wiersza poniżej rozwiązało mój problem.

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }//debug{
         //   minifyEnabled true
         //   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}
Mukesh
źródło
0

Miałem ten sam problem, nawet kompilacja stopni trwała 8 godzin i martwiłem się. Ale później zmieniłem kompilację wersji SDK i minimalną wersję SDK w pliku build.gradle w ten sposób.

Starsze:

android {
compileSdkVersion 25
buildToolsVersion "29.0.2"

defaultConfig {
    applicationId "com.uwebtechnology.salahadmin"
    minSdkVersion 9
    targetSdkVersion 25
}

Nowe (zaktualizowane):

android 
{
  compileSdkVersion 28
   buildToolsVersion "25.0.2"

 defaultConfig {
    applicationId "com.uwebtechnology.salahadmin"
    minSdkVersion 15
    targetSdkVersion 28
 }
Pir Fahim Shah
źródło
-2

Miałem podobny problem na moim komputerze. Windows Defender blokował jakąś część Gradle Building. Wyłączyłem go, potem działało dobrze.

rickdroio
źródło
-43

Spróbuj ponownie uruchomić komputer i ponownie uruchomić Android Studio. Pracowałem dla mnie, gdy próbowałem zbudować projekt Cordova / Phonegap z docelową bazą kodową Androida.

racl101
źródło