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 包装器分别执行 clean
和 assembleDebug
任务。因此,它将首先清理,然后在任何非最新相关任务之后执行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 的区别
mvn pre-clean / clean / post-clean 有啥区别?