Android Studio, як запустити синхронізацію gradle вручну?


135

Я налагоджую проблеми Gradle в Android Studio і бачу посилання на "Запустити синхронізацію gradle", але я не знаю, як запустити цю команду.

Як запустити "Gradle sync" з студії Android або терміналу Mac?

Відповіді:


212

Студія Android повинна мати цю кнопку на панелі інструментів із позначкою "Синхронізувати проект з файлами Gradle"

EDIT: Я не знаю, коли це було змінено, але зараз це виглядає приблизно так:

введіть тут опис зображення

EDIT: Ось як це виглядає в 3.3.1 АБО, перейшовши до меню File -> Sync Project з Gradle Files з меню.введіть тут опис зображення


2
зник безвісти в Adnroid Studio 3.0.1
Роман М

10
@RomanM Це не пропускає ... Він перейшов до "Файл" ... Отже, це наступний
рятувальний

49

ПОПЕРЕДЖЕННЯ : --recompile-scriptsкоманда застаріла з gradleверсії 5.0. Щоб перевірити свою gradleверсію, запустіть gradle -v.

./gradlew --recompile-scripts

він буде синхронізувати, нічого не будуючи.


Крім того, з командним рядком у вашому кореневому проекті

./gradlew build

Це синхронізує та створить ваш додаток, і займе більше часу, ніж просто синхронізація Gradle

Щоб побачити всі доступні завдання Gradle, використовуйте ./gradlew tasks


2
Так, але побудова робить більше правильним? Яка різниця між синхронізацією та побудовою?
JohnyTex

побудувати - це дуже загальне завдання. це як використовувати кувалду для розтріскування горіха. В Android-проектах виконання завдань «побудувати» може зайняти назавжди!
цезард

10
Я використовую com.android.tools.build:gradle:3.5.1,і у нього немає можливості --recompile-
script

з Gradle 5.0, --recompile-script став невідомим параметром командного рядка,
Френсіс Бекон

28

У Android Studio 3.3 це:

введіть тут опис зображення

Відповідно до відповіді https://stackoverflow.com/a/49576954/2914140 в Android Studio 3.1, це:

введіть тут опис зображення

Ця команда переміщена до File > Sync Project with Gradle Files.

введіть тут опис зображення


5
ROFL! Я шукав цю кнопку вже 2 дні! Дякую!
swooby

1
@swooby, ласкаво просимо. Я теж деякий час знаходив це, навіть задавав питання, і вони допомагали.
CoolMind

Здається, ця опція більше не існує? i.imgur.com/cNFUoxB.png (знімок екрана щойно зроблений, в Android Studio 3.5.3)
Venryx

@Venryx, дивно. У мене 3.6.3, і це меню все ще існує ( imgur.com/a/F8FCpvk ). У будь-якому випадку, краще використовувати кнопку на Панелі інструментів.
CoolMind

Мабуть, проблема з застарілими файлами AndroidStudio / Gradle. Після видалення та повторного імпорту проекту параметр з’явився знову.
Венрікс

23

Любителі комбінації клавіш можуть додати ярлик для запуску синхронізації Gradle вручну, перейшовши до Файл -> Налаштування -> Клавіатура -> Плагіни -> Підтримка Android -> Синхронізувати проект з файлами Gradle (Клацніть правою кнопкою миші на ньому, щоб додати ярлик клавіатури) -> Застосувати - > Гаразд, і ви закінчили. Комбінація клавіш Gradle SyncВиберіть будь-яку зручну клавішу як ярлик синхронізації Gradle, який не суперечить жодній іншій клавіші швидкого доступу (я вибрав Shift + 5 як свою клавішу синхронізації Gradle), тож наступного разу, коли ви хочете запустити синхронізацію Gradle вручну, просто натисніть цю клавішу швидкого доступу.


2
це "Android Studio-> Налаштування" для перших двох кроків на Mac OS X
CCJ

1
+1 найкраща відповідь на питання
nAkhmedov

Найкраща відповідь, Не потрібно знаходити піктограму Sync Project у подібних значків андроїд-студії. Просто натисніть Shift + 5 і все закінчено.
Ер. Kaushik Kajavadara

13

Я припускаю, що йдеться про Інструменти> Android> «Синхронізувати проект з файлами Gradle» з головного меню Android Studio.


6
gradle --recompile-scripts

здається, синхронізує, нічого не будуючи. Ви можете ввімкнути автоматичну побудову за допомогою

gradle --recompile-scripts --continuous

Будь ласка, зверніться до документів для отримання додаткової інформації:

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


Тут також зазначається: docs.gradle.org/current/userguide/upgrading_version_4.html
Луїс

gradle 5.1.1 не мають можливості - перекопіювати сценарії
Френсіс Бекон


1

Я думаю ./gradlew tasks, те саме і з Android studio sync. Чому? Я поясню це.

Я зіткнувся з проблемою, коли перевіряю звіт про покриття Jacoco. Коли я запускаю ./gradlew clean :Test:testDebugUnitTestбезпосередньо в командному рядку, з’являється помилка.

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

Однак якщо я спочатку натискаю синхронізацію андроїд-студії, це працює добре. Тому що build/../jacocoagent.jarз'являються природно. Я не знаю чому, можливо, у плагіні jacoco є помилка. Підрозділ, який я знаходжу під керуванням, також .gradlew tasksвидає банку. Тож я можу отримати такий же результат у скрипті gralde.

Крім того, gradle --recompile-scriptsне працює для проблеми.


Привіт Вікторе, у мене проблеми можуть довести, що ти неправильно. Ось, що я отримав, я встановив configProductID = 11111 зі свого gradle.properties, з мого build.gradle, я додаю "resValue" string ". з ADT можна створити ресурс R.string.ProductID. Потім я можу зробити gradlew assembleDebug для побудови. Потім я зміню своє ім’я конфігурації з "ProductID" на "myProductID", я отримаю помилку для виконання "задач gradlew", також Я не можу зробити "gradlew clean", всі вони просто не вдається. Я все ще борюся. Як ". \ Gradlew.bat - recompile-script", здається, більше не існує?
yunfei

0

У мене проблеми, можливо, доказ gradlew clean не дорівнює чистістю ADT build. І зараз я борюся, щоб це виправити.

Ось що я отримав: я встановив configProductID = 11111 зі свого gradle.properties, з мого build.gradle, додаю

resValue "string", "ProductID", configProductID

Якщо я буду чисту збірку з ADT, ресурс R.string.ProductID може бути сформований. Тоді я можу виконати наступну команду успішно.

gradlew assembleDebug

Але, коли я намагаюся налаштувати сервер збірки, я не хочу допомогти з ADT IDE, тому мені потрібно уникати чистої збірки ADT. Ось моя проблема. Тепер я змінюю ім’я ресурсу з "ProductID" на "myProductID", я роблю:

gradlew clean

Я отримую помилку

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

Якщо я спробую:

.\gradlew.bat --recompile-scripts

Я просто отримую помилку

Unknown command-line option '--recompile-scripts'.

У мене те саме повідомлення про помилку кілька хвилин тому:> Непідтримуваний файл класу основна версія 57 Проблема для мене полягала в тому, що gradle не працює з поточним openJdk13 в Linux (я використовую Manjaro ... Arch-Like Linux). Отже, щоб виправити це, я це зробив: я перевірив, яку версію Java я встановив на своєму ПК, і вибрав версію 8: sudo archlinux-java stauts sudo archlinux-java set java-8-openjdk Можливо, це допомагає ви виходите, навіть якщо ваша система здається вікнами. Тому спробуйте іншу версію SDK. Можливо, це також вирішить ваше питання.
суть

Привіт @suther, велике спасибі за вашу відповідь, я знайшов першопричину та виправлений, я не думаю, що це через версію JAVA. Але, як я описав, "gradlew clean" не дорівнює "ADT clean". Моє виправлення було просто "gradlew: app: залежності", це створить ідентифікатори ресурсів з файлів конфігурації gradle.
yunfei

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.