clean 和 gradlew clean 的区别

Posted

技术标签:

【中文标题】clean 和 gradlew clean 的区别【英文标题】:Difference between clean, gradlew clean 【发布时间】:2016-03-04 12:12:24 【问题描述】:

以下语句从 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。

内部流程会有什么不同。

【问题讨论】:

【参考方案1】:

    ./gradlew clean

    使用您项目的gradle wrapper 来执行您项目的clean 任务。通常,这只是意味着删除构建目录。

    ./gradlew clean assembleDebug

    再次,使用项目的 gradle 包装器分别执行 cleanassembleDebug 任务。因此,它将首先清理,然后在任何非最新相关任务之后执行assembleDebug

    ./gradlew clean :assembleDebug

    与#2 基本相同。冒号代表任务路径。任务路径在gradle multi-project's 中是必不可少的,在这种情况下并不重要。这意味着运行根项目的 assembleDebug 任务。在这里,根项目是唯一的项目。

    Android Studio --> Build --> Clean

    本质上与./gradlew clean 相同。见here。

如需更多信息,我建议花时间阅读 Android 文档,尤其是 this one。

【讨论】:

很高兴我能帮上忙。 Gradle 非常棒,尤其是用于管理复杂的构建,例如 Android。我期待即将推出的原生构建的许多其他功能...... 快捷键是什么:Shift+CMD+C?为什么不删除构建目录? 您能否提供指向该快捷方式说明的链接?我找不到它here,除非我错过了。 也许是愚蠢的问题,但这些命令只删除项目/构建文件夹,但项目/应用程序/构建保持不变。任何人都可以建议如何删除子模块中的构建文件夹。提前致谢 @aruy 这不是一个愚蠢的问题。 gradlew clean 应该为当前项目 目录和任何子项目 运行clean 任务。见here。 2个你必须问的问题。项目/应用程序是您正在运行的项目构建的 子项目 吗? project/app/build 文件夹真的是构建输出目录吗?【参考方案2】:

你也应该使用这个:

./gradlew :app:dependencies(Mac 和 Linux)-使用 ./

gradlew :app:dependencies (Windows) - ./

您在内部使用任何其他版本的 google play 服务的库。如果是,则删除或更新这些库。

【讨论】:

【参考方案3】:

你也可以使用

./gradlew clean build(Mac 和 Linux)-带有 ./

gradlew clean build (Windows) - 没有 ./

它会删除构建文件夹,并配置您的模块,然后构建您的项目。

我在 Playstore 上发布任何新应用之前都会使用它。

【讨论】:

@ichimaru 如果使用Powershell终端,命令必须如下:.\gradlew clean build

以上是关于clean 和 gradlew clean 的区别的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse WTP 和 Tomcat 中的 clean 和 clean 工作目录的区别

Visual Studio 中 Rebuild 和 Clean + Build 的区别

clean_data 和 instance的区别

mvn pre-clean / clean / post-clean 有啥区别?

“mvn clean install”和“mvn clean verify install”有啥区别?

Visual Studio中Rebuild和Clean + Build之间的区别