Android Studio 如何手动运行 gradle 同步?

Posted

技术标签:

【中文标题】Android Studio 如何手动运行 gradle 同步?【英文标题】:Android Studio how to run gradle sync manually? 【发布时间】:2015-06-16 09:34:09 【问题描述】:

我正在 android Studio 中调试 Gradle 问题并看到对“运行 gradle sync”的引用,但我不确定如何运行此命令。

如何从 Android Studio 或 Mac 终端运行“Gradle 同步”?

【问题讨论】:

如果您来这里是为了“...或 Mac 终端”,那么您就不走运了。这些答案都不是关于从命令行同步 Android Studio 本身。 【参考方案1】:

Android Studio 应该在工具栏中有这个按钮,标记为“Sync project with Gradle Files”

编辑:我不知道它是什么时候更改的,但现在看起来像这样:

编辑:这就是它在 3.3.1 上的样子 或者通过从菜单栏中转到 File -> Sync Project with Gradle Files

【讨论】:

在 Adnroid Studio 3.0.1 中缺失 @RomanM 没有丢失...它移动到“文件”...所以,它在保存图标旁边 我在 Android Studio 4 的工具栏或文件菜单中看不到该按钮。 我可以确认同步按钮出现在 Android Studio 4.0.1 的工具栏上 如果这个问题没有回答 OP 的问题,为什么会有这么多赞成票?【参考方案2】:

警告--recompile-scripts 命令自 gradle 的 5.0 版以来已被弃用。 要检查您的 gradle 版本,请运行 gradle -v

./gradlew --recompile-scripts

它会在不构建任何东西的情况下进行同步。


或者,在根项目中使用命令行

./gradlew build

它将同步和构建您的应用程序,并且比仅使用 Gradle 同步需要更长的时间

要查看所有可用的 gradle 任务,请使用 ./gradlew tasks

【讨论】:

是的,但是 build 做得更好吗?同步和构建有什么区别? 构建是一项非常通用的任务。这就像用大锤敲碎坚果。在 Android 项目上,运行“构建”任务可能需要很长时间! 我用的是com.android.tools.build:gradle:3.5.1,它没有选项--recompile-scripts 从 gradle 5.0 开始,--recompile-scripts 成为了一个未知的命令行选项,【参考方案3】:

在 Android Studio 3.3 中:

根据 Android Studio 3.1 中的答案https://***.com/a/49576954/2914140 它在这里:

此命令已移至File > Sync Project with Gradle Files

【讨论】:

ROFL!我一直在为这个按钮寻找 2 天!谢谢! @swooby,不客气。我也找了一段时间,甚至问了一个问题,他们提供了帮助。 此选项似乎不再存在? i.imgur.com/cNFUoxB.png(刚刚截取的屏幕截图,在 Android Studio 3.5.3 中) @Venryx,这很奇怪。我有 3.6.3,这个菜单仍然存在 (imgur.com/a/F8FCpvk)。无论如何,最好使用工具栏中的按钮。 这显然是一些 AndroidStudio/Gradle 文件过时的问题。删除它们并重新导入项目后,该选项再次出现。【参考方案4】:

键盘快捷键爱好者可以通过转到文件 -> 设置 -> 键盘映射 -> 插件 -> Android 支持 -> 与 gradle 文件同步项目来手动添加运行 gradle 同步的快捷方式(右键单击它以添加键盘快捷键) - > 应用 -> 确定,您就完成了。 选择任何方便的键作为你的 gradle 同步快捷键,它不会与任何其他快捷键冲突,(我选择 Shift + 5 作为我的 gradle 同步键),所以接下来当你想手动运行 gradle 同步时,只需按下这个键盘快捷键钥匙。

【讨论】:

Mac OS X 上前两个步骤的“Android Studio->首选项” +1问题的最佳答案 最佳答案,无需从 android studio 的类似图标中查找 Sync Project 图标。只需按 Shift+5 即可完成。【参考方案5】:

我认为它指的是 Android Studio 主菜单中的工具 > Android >“使用 Gradle 文件同步项目”。

【讨论】:

【参考方案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 没有选项 --recompile-scripts【参考方案7】:

快捷方式(Ubuntu、Windows):

Ctrl + F5

将项目与 Gradle 文件同步。

【讨论】:

在 MacOS 上的快捷方式没有定义,应该分配它。下面介绍***.com/a/29642935/1839096【参考方案8】:

我认为./gradlew tasksAndroid 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 studio sync ,它运行正常。因为build/../jacocoagent.jar自然出现。 我不知道为什么,也许 jacoco 插件中存在错误。我发现运行.gradlew tasks 的单元也会使罐子出现。所以我可以在 gradde 脚本中得到相同的结果。

此外,gradle --recompile-scripts 无法解决问题。

【讨论】:

嗨维克多,我有一个麻烦可能证明你错了,这是我得到的,我从我的 gradle.properties 设置了一个 configProductID=11111,从我的 build.gradle,我添加了“resValue”字符串“。如果我从 ADT 进行构建清理,可以生成资源 R.string.ProductID。然后我可以执行 gradlew assembleDebug 来构建。然后我将我的配置名称从“ProductID”更改为“myProductID”,我会得到错误做'gradlew tasks',我也不能做'gradlew clean',所有这些都失败了。我还在挣扎。因为“.\gradlew.bat --recompile-scripts”似乎不再存在?【参考方案9】:

我有一个麻烦可能证明 gradlew clean 不等于 ADT build clean。现在我正在努力修复它。

这是我得到的: 我从我的 gradle.properties 设置了一个 configProductID=11111,从我的 build.gradle,我添加了

resValue "string", "ProductID", configProductID

如果我从 ADT 进行构建清理,则可以生成资源 R.string.ProductID。然后我可以成功执行以下命令。

gradlew assembleDebug

但是,当我尝试设置构建服务器时,我不需要 ADT IDE 的帮助,因此我需要避免使用 ADT build clean。我的问题来了。 现在我将资源名称从“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 不适用于 Linux 上的当前 openJdk13(我使用 Manjaro.. . 一个类似 Arch 的 Linux)。所以要解决这个问题,我已经这样做了:我检查了我在我的电脑上安装了哪个 Java 版本,并选择了版本 8: sudo archlinux-java status sudo archlinux-java set java-8-openjdk 也许这有帮助你出去,即使你的系统似乎是windows。所以尝试另一个 SDK 版本。也许它也能解决你的问题。 嗨@suther,非常感谢您的回复,我已经找到了根本原因并修复了,我不认为这是因为JAVA版本。但正如我所描述的“gradlew clean”不等于“ADT clean”。我的解决方法是简单地执行“gradlew :app:dependencies”,这将从 gradle 配置文件生成资源 ID。【参考方案10】:

如果有人想使用命令行来同步项目和 gradle 文件,请注意:

自 Gradle 5.0 以来,

--recompile-scripts 命令行选项已被删除。

https://docs.gradle.org/5.0/userguide/upgrading_version_4.html#potential_breaking_changes https://docs.gradle.org/current/userguide/command_line_interface.html https://github.com/gradle/gradle/issues/1425

【讨论】:

这很好,但是如何提供合适的替代方案。 没找到,可惜【参考方案11】:

从终端:

gradle prepareKotlinBuildScriptModel

注意:您可以通过检查“构建”选项卡来查看 android studio 正在做什么。里面会有不同的窗户。一个应该是“同步”

【讨论】:

以上是关于Android Studio 如何手动运行 gradle 同步?的主要内容,如果未能解决你的问题,请参考以下文章

android studio更新gradle失败的解决办法-转

如何在 Android Studio 中手动链接 react-native-camera?

如何从 Android Studio 手动重启 ADB

如何在 Android Studio 中手动安装 App Engine?

如何在android studio 1.4的默认情况下从右侧制作导航菜单

在android studio中配置运行时签名