Android Studio Jak ręcznie uruchomić synchronizację Gradle?

143

Debuguję problemy z Gradle w Android Studio i widzę odniesienia do „Uruchom synchronizację Gradle”, ale nie wiem, jak uruchomić to polecenie.

Jak uruchomić „Synchronizację Gradle” ze studia Android lub terminala Mac?

Alex Stone
źródło

Odpowiedzi:

236

Studio Android powinno mieć ten przycisk na pasku narzędzi oznaczony „Synchronizuj projekt z plikami Gradle”

EDYCJA: Nie wiem, kiedy to zostało zmienione, ale teraz wygląda tak:

wprowadź opis obrazu tutaj

EDYCJA: Tak to wygląda w wersji 3.3.1 LUB przechodząc do Plik -> Synchronizuj projekt z plikami Gradle z paska menu.wprowadź opis obrazu tutaj

Cai
źródło
2
brak w Adnroid Studio 3.0.1
Roman M
10
@RomanM Nie brakuje ... Przeniesiono do "Plik" ... Więc jest obok ikony zapisu
W0rmH0le
Nie widzę tego przycisku na pasku narzędzi lub w menu Plik w Android Studio 4.
mahmood
50

OSTRZEŻENIE : --recompile-scriptspolecenie jest przestarzałe od gradlewersji 5.0. Aby sprawdzić swoją gradlewersję, uruchom gradle -v.

./gradlew --recompile-scripts

zrobi synchronizację bez tworzenia niczego.


Alternatywnie za pomocą wiersza poleceń w projekcie głównym

./gradlew build

Zsynchronizuje i zbuduje Twoją aplikację i zajmie więcej czasu niż zwykła synchronizacja Gradle

Aby zobaczyć wszystkie dostępne zadania oceniania, użyj ./gradlew tasks

Hugo Gresse
źródło
2
Tak, ale kompilacja robi więcej, prawda? Jaka jest różnica między synchronizacją a budowaniem?
JohnyTex
build to bardzo ogólne zadanie. to tak, jakby użyć młota do złamania orzecha. W projektach dla systemu Android uruchomienie zadania „kompilacji” może zająć wieczność!
cesards
11
Używam com.android.tools.build:gradle:3.5.1, i nie ma opcji --recompile-scripts
geosmart
1
od gradle 5.0 --recompile-scripts stało się nieznaną opcją wiersza poleceń,
Francis Bacon
30

W Android Studio 3.3 jest tutaj:

wprowadź opis obrazu tutaj

Zgodnie z odpowiedzią https://stackoverflow.com/a/49576954/2914140 w Android Studio 3.1 jest tutaj:

wprowadź opis obrazu tutaj

To polecenie jest przenoszone do File > Sync Project with Gradle Files.

wprowadź opis obrazu tutaj

CoolMind
źródło
5
ROFL! Szukałem od 2 dni na ten przycisk! Dzięki!
swooby
1
@swooby, nie ma za co. Ja też to znajdowałem przez jakiś czas, nawet zadawałem pytanie, a oni pomogli.
CoolMind
Wydaje się, że ta opcja już nie istnieje? i.imgur.com/cNFUoxB.png (właśnie zrobiony zrzut ekranu, w Android Studio 3.5.3)
Venryx
@Venryx, to dziwne. Mam 3.6.3 i to menu nadal istnieje ( imgur.com/a/F8FCpvk ). W każdym razie lepiej jest użyć przycisku na pasku narzędzi.
CoolMind
Najwyraźniej był to problem z nieaktualnymi plikami AndroidStudio / Gradle. Po ich usunięciu i ponownym zaimportowaniu projektu opcja pojawiła się ponownie.
Venryx
23

Miłośnicy skrótów klawiaturowych mogą dodać skrót do ręcznego uruchamiania synchronizacji Gradle, przechodząc do Plik -> Ustawienia -> Mapa klawiszy -> Wtyczki -> Obsługa Androida -> Synchronizuj projekt z plikami gradle (kliknij prawym przyciskiem myszy, aby dodać skrót klawiaturowy) -> Zastosuj - > OK i gotowe. Skrót klawiaturowy Gradle SyncWybierz dowolny wygodny klawisz jako skrót do synchronizacji gradle, który nie koliduje z żadnym innym klawiszem skrótu (wybrałem Shift + 5 jako mój klawisz synchronizacji gradle), więc następnym razem, gdy chcesz uruchomić synchronizację gradle ręcznie, po prostu naciśnij ten klawisz skrótu klawiaturowego.

Amrit Pal Singh
źródło
2
to „Android Studio-> Preferencje” dla pierwszych dwóch kroków w systemie Mac OS X
CCJ
1
+1 najlepsza odpowiedź na pytanie
Akhmedov
Najlepsza odpowiedź, nie ma potrzeby znajdowania ikony Sync Project z podobnych ikon w Android Studio. Po prostu naciśnij Shift + 5 i gotowe.
Eee. Kaushik Kajavadara
13

Przypuszczam, że chodzi o Narzędzia> Android> „Synchronizuj projekt z plikami Gradle” z głównego menu Android Studio.

CommonsWare
źródło
6
gradle --recompile-scripts

wydaje się robić synchronizację bez tworzenia niczego. możesz włączyć automatyczne budowanie według

gradle --recompile-scripts --continuous

Więcej informacji można znaleźć w dokumentacji:

https://docs.gradle.org/current/userguide/gradle_command_line.html

oc1d
źródło
Zapisano
Luis
1
gradle 5.1.1 nie ma opcji --recompile-scripts
Francis Bacon
2

Skrót (Ubuntu, Windows):

Ctrl + F5

Zsynchronizuje projekt z plikami Gradle.

Andrzej
źródło
1
na MacOS skrót nie jest zdefiniowany, należy go przypisać. Opisane poniżej stackoverflow.com/a/29642935/1839096
Silwester
1

Myślę, że ./gradlew tasksto samo z Android studio sync. Czemu? Wytłumaczę to.

Mam problem podczas testowania raportu pokrycia jacoco. Kiedy uruchamiam ./gradlew clean :Test:testDebugUnitTestbezpośrednio w wierszu poleceń, pojawia się błąd.

Error opening zip file or JAR manifest missing : build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_5bdiis3s7lm1rcnv0gawjjfxc/jacocoagent.jar

Jeśli jednak najpierw kliknę synchronizację Android Studio, działa poprawnie. Ponieważ build/../jacocoagent.jarpojawiają się naturalnie. Nie wiem dlaczego, może jest błąd we wtyczce jacoco. Jednostka, którą uważam za bieganie, .gradlew taskssprawia, że ​​słoik również się pojawia. Więc mogę uzyskać ten sam wynik w skrypcie gralde.

Poza tym gradle --recompile-scriptsnie działa na problem.

Victor Choy
źródło
Cześć Victor, mam problem, który może udowodnić, że się mylisz. Oto co mam: ustawiłem configProductID = 11111 z mojego gradle.properties, z mojego build.gradle, dodaję ciąg „resValue”. z ADT można wygenerować zasób R.string.ProductID. Następnie mogę wykonać assembleDebug gradlew, aby zbudować. Następnie zmieniam nazwę konfiguracji z „ProductID” na „myProductID”, otrzymam błąd podczas wykonywania „zadań gradlew”, również Nie mogę zrobić „gradlew clean”, wszystkie po prostu zawodzą. Nadal mam problemy. Ponieważ „. \ Gradlew.bat --recompile-scripts” wydaje się już nie istnieć?
yunfei
0

Mam problem z dowodem na to, że gradlew clean nie jest równy ADT build clean. A teraz staram się to naprawić.

Oto, co otrzymałem: Ustawiłem configProductID = 11111 z mojego gradle.properties, z mojego build.gradle, dodaję

resValue "string", "ProductID", configProductID

Jeśli zrobię czystą kompilację z ADT, można wygenerować zasób R.string.ProductID. Wtedy mogę z powodzeniem wykonać poniższe polecenie.

gradlew assembleDebug

Ale kiedy próbuję skonfigurować serwer kompilacji, nie chcę pomocy od ADT IDE, więc muszę unikać używania czystego kompilacji ADT. Oto mój problem. Teraz zmieniam nazwę mojego zasobu z „ProductID” na „myProductID”, robię:

gradlew clean

Otrzymuję błąd

PS D:\work\wctposdemo> .\gradlew.bat clean

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\work\wctposdemo\app\build.gradle'

* What went wrong:
Could not compile build file 'D:\work\wctposdemo\app\build.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 57

Jeśli spróbuję z:

.\gradlew.bat --recompile-scripts

Po prostu pojawia się błąd

Unknown command-line option '--recompile-scripts'.
yunfei
źródło
Kilka minut temu mam ten sam komunikat o błędzie:> Nieobsługiwany plik klasy, wersja główna 57. Problem polegał na tym, że gradle nie działa z obecnym openJdk13 na Linuksie (używam Manjaro ... Arch-Like Linux). Aby to naprawić, zrobiłem to: sprawdziłem, którą wersję Javy zainstalowałem na swoim komputerze i wybrałem wersję 8: sudo archlinux-java stauts sudo archlinux-java set java-8-openjdk Może to pomoże wychodzisz, nawet jeśli twój system wydaje się być oknami. Więc wypróbuj inną wersję SDK. Może to również rozwiąże Twój problem.
suther
Cześć @suther, wielkie dzięki za odpowiedź, znalazłem główną przyczynę i naprawiłem, nie sądzę, że jest to spowodowane wersją JAVA. Ale jak opisałem "gradlew clean" nie równa się "ADT clean". Moja poprawka polegała po prostu na "gradlew: app: dependencies", to wygeneruje identyfikatory zasobów z plików konfiguracyjnych gradle.
yunfei