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


135

Я отлаживаю проблемы Gradle в Android Studio и вижу ссылки на «Запустить синхронизацию Gradle», но я не уверен, как запустить эту команду.

Как запустить "Gradle Sync" из студии Android или терминала Mac?

Ответы:


212

Студия Android должна иметь эту кнопку на панели инструментов с пометкой «Синхронизировать проект с файлами Gradle».

РЕДАКТИРОВАТЬ: я не знаю, когда это было изменено, но теперь это выглядит так:

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

РЕДАКТИРОВАТЬ: это то, как это выглядит в 3.3.1, ИЛИ, перейдя в File -> Sync Project with Gradle Files из строки меню.введите описание изображения здесь


2
отсутствует в Adnroid Studio 3.0.1
Roman M

10
@RomanM Это не пропало ... Оно перемещено в "Файл" ... Итак, оно рядом со значком сохранения
W0rmH0le 02

49

ВНИМАНИЕ : --recompile-scriptsкоманда устарела с gradleверсии 5.0. Чтобы проверить свою gradleверсию, запустите gradle -v.

./gradlew --recompile-scripts

он выполнит синхронизацию, ничего не создавая.


В качестве альтернативы с помощью командной строки в корневом проекте

./gradlew build

Он синхронизирует и создаст ваше приложение, и это займет больше времени, чем просто синхронизация Gradle.

Чтобы увидеть все доступные задачи Gradle, используйте ./gradlew tasks


2
Да, но билд делает больше? В чем разница между синхронизацией и сборкой?
JohnyTex

build - очень общая задача. это как разбить орех кувалдой. В проектах Android выполнение задачи «сборки» может длиться вечно!
cesards

10
Я использую com.android.tools.build:gradle:3.5.1, и у него нет опции --recompile-scripts
geosmart

начиная с Gradle 5.0, --recompile-scripts стал неизвестным параметром командной строки,
Фрэнсис Бэкон

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 устарели. После их удаления и повторного импорта проекта опция снова появилась.
Venryx

23

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


2
это «Android Studio-> Preferences» для первых двух шагов в Mac OS X
CCJ,

1
+1 лучший ответ на вопрос
nAkhmedov 05

Лучший ответ, не нужно искать значок Sync Project из аналогичных значков студии Android. Просто нажмите 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



gradle 5.1.1 не имеет опции --recompile-scripts
Фрэнсис Бэкон


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

Однако, если я сначала нажму «Синхронизация студии Android», все будет нормально. Потому что они build/../jacocoagent.jarвыглядят естественно. Не знаю почему, возможно, в плагине jacoco есть ошибка. Устройство, которое я нахожу работающим, также .gradlew tasksвызывает появление банки. Так что я могу получить тот же результат в скрипте gralde.

К тому gradle --recompile-scriptsже не работает проблема.


Привет, Виктор, у меня проблема может доказать, что ты ошибаешься. Вот что у меня получилось, я установил configProductID = 11111 из моего gradle.properties, из моего build.gradle, я добавляю строку «resValue». Если я сделаю сборку чистой из ADT может быть сгенерирован ресурс R.string.ProductID. Затем я могу выполнить сборку gradlew assemblyDebug. Затем я изменил имя конфигурации с «ProductID» на «myProductID», я также получу ошибку при выполнении «задач gradlew». Я не могу выполнить 'gradlew clean', все они просто терпят неудачу. Я все еще борюсь. Поскольку ". \ Gradlew.bat --recompile-scripts", кажется, больше не существует?
юнфэй

0

У меня проблемы с доказательством того, что gradlew clean - это не чистая сборка ADT. И теперь я изо всех сил пытаюсь исправить это.

Вот что у меня получилось: я установил 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 Может быть, это поможет вы выходите, даже если ваша система кажется windows. Так что попробуйте другую версию SDK. Возможно, это также решит вашу проблему.
Сутер

Привет @suther, большое спасибо за ваш ответ, я нашел основную причину и исправил, я не думаю, что это из-за версии JAVA. Но, как я описал, «gradlew clean» не равно «ADT clean». Мое исправление было просто сделать "gradlew: app: dependencies", это сгенерирует идентификаторы ресурсов из файлов конфигурации gradle.
yunfei

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.