清理、gradlew clean的区别

81
以下是对于在Android Studio项目终端中发出以下语句的区别:

Android_Studio_Project_Path: ./gradlew clean

Android_Studio_Project_Path: ./gradlew clean assembleDebug

Android_Studio_Project_Path: ./gradlew clean :assembleDebug

以及正常的Android Studio --> Build --> Clean。

在内部处理方面会有什么不同。
3个回答

169
  1. ./gradlew clean

    使用项目的Gradle包装器执行项目的clean任务。通常,这只是删除构建目录。

  2. ./gradlew clean assembleDebug

    同样,使用项目的Gradle包装器依次执行cleanassembleDebug任务。因此,它将首先进行清理,然后在执行任何非最新依赖任务之后执行assembleDebug

  3. ./gradlew clean :assembleDebug

    本质上与#2相同。冒号表示任务路径。任务路径在Gradle多项目中至关重要,在这种情况下不太重要。它意味着运行根项目的assembleDebug任务。在这里,根项目是唯一的项目。

  4. Android Studio --> Build --> Clean

    本质上与./gradlew clean相同。请参见此处

更多信息,请花时间阅读Android文档,特别是这个


1
很高兴能提供帮助。Gradle非常棒,尤其是用于管理像Android这样复杂的构建。我期待着很快会推出更多针对本地构建的功能... - kevinmm
也许是一个愚蠢的问题,但这些命令只会删除项目/构建文件夹,而项目/应用程序/构建文件夹保持不变。有谁能建议如何在子模块中删除构建文件夹。提前致谢。 - nuamehas
1
@aruy 不是一个愚蠢的问题。gradlew clean 应该在_当前项目_目录和任何_子项目_中运行 clean 任务。请参见 此处。你必须问两个问题。项目/应用程序是正在运行的项目构建的_子项目_吗?项目/应用程序/build 文件夹确实是构建输出目录吗? - kevinmm
很好,但具体的区别是什么,抱歉我的意思是assmbleDebug的目的是什么? - Nicollas
FYI,OP试图了解gradle命令行的不同调用方式,而不是任务的实现。请注意,这些任务可能会因Android插件的不同版本和/或不同项目等而发生变化。因此,请小心不要过多地假设每个任务具体执行什么操作。不过,除非构建作者真的很刻薄,否则应该能够达到相同的最终结果。 - kevinmm
显示剩余3条评论

19

你也可以使用

./gradlew clean build(Mac和Linux)-使用"./"

gradlew clean build(Windows)-不使用"./"

它将删除build文件夹,配置模块并构建您的项目。

我在发布任何新应用程序到PlayStore之前都会使用它。


如果你使用Powershell终端,命令应该是这样的: .\gradlew clean build - Jānis Š.

13

你也应该使用这个命令:

./gradlew :app:dependencies (Mac 和 Linux) - 带有 ./

gradlew :app:dependencies (Windows) - 不带 ./

你正在内部使用任何其他版本的 Google Play 服务库。如果是,请删除或更新这些库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接