热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何查看AndroidStudio中Gradle任务执行的CLI命令?

如何解决《如何查看AndroidStudio中Gradle任务执行的CLI命令?》经验,为你挑选了1个好方法。

我正在尝试更好地了解Android Studio在构建Android应用程序时幕后发生的情况.我一直在阅读Gradle,但有一点我无法弄清楚如何查看Gradle调用的相应CLI命令和参数.它似乎是抽象的,没有记录到Gradle ConsoleEvent Log.

我最接近看到Gradle内部发生了什么是AOSP代码.

2.2.2来源:

https://android.googlesource.com/platform/tools/base/+/gradle_2.2.2/build-system/gradle-core/src/main/java/com/android/build/gradle/tasks

目标

我希望能够看到Android Studio中Gradle任务生成的相应CLI命令.

用例示例

我想深入了解Legacy Android Build Process.这包括通过以下内容:

源代码/库代码 - > javac - > Java字节码(.class) - > proguard - >最小化字节码(.class) - > dex - > DEX字节码(.dex)

例如,我希望看到javac调用的相应命令AndroidJavaCompile.https://android.googlesource.com/platform/tools/base/+/gradle_2.2.2/build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/factory/AndroidJavaCompile. java的

我担心这样做的唯一方法是直接查看源代码,甚至直接从源代码构建.

尽职调查

我已经在Google,Android博客,Google I/O会谈,Android书籍等方面进行了大量搜索.我一直无法找到直截了当的答案.



1> Lukas Körfer..:

那是不可能的.简单地说,因为大多数Gradle任务都不会调用CLI命令.

每个Gradle构建文件都是一段Groovy代码,它与Gradle API(用Java编写)一起在JVM中执行.因此,您可以直接在任何JVM语言中实现任何任务或配置功能,大多数插件都使用该语言而不是执行命令行工具.然而,这可以通过使用或扩展Exec任务来实现.

编译步骤由AndroidJavaCompile任务处理,该JavaCompile任务通过某些版本检查和即时运行功能扩展了常见的Gradle任务.但是,您不知道Gradle如何实际编译.java文件.在内部的源文件为JavaCompile的摇篮API的任务,似乎有不同的实现(DaemonJavaCompiler,JdkJavaCompiler甚至CommandLineJavaCompiler).由于您可以使用CompilerOptions任务指定,Gradle似乎根据这些选项选择真正的编译器.请注意,即使CommandLineJavaCompiler存在,也可能(并且极有可能)Gradle更喜欢使用javax.tools包及其JavaCompiler实现来编译源文件而不是调用命令行工具.

我还看了一下示例构建过程中的ProGuard步骤:ProGuard可以用作命令行工具,您可以在其中指定参数以定义它的工作方式.但是ProGuard还提供了一个Gradle任务(ProGuardTask),它可以在不从命令行调用ProGuard的情况下执行.ProGuard Java代码将在Gradle JVM中执行.

如您所见,即使每个Gradle任务可能被一个(或多个)CLI命令替换,Gradle也不会执行这些命令.相反,该功能直接在Gradle JVM中调用.如果您想获得更好的洞察力,可以增加Gradle日志级别.Gradle任务的良好实现应该在日志中提供所有必要的信息.


推荐阅读
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • SvpplyTable: 实现可扩展和可折叠的菜单动画
    SvpplyTable 是一个示例项目,旨在实现类似 Svpply 应用程序中的可扩展和可折叠的菜单动画效果。该项目托管在 GitHub 上,地址为 https://github.com/liuminqian/SvpplyTable。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
author-avatar
rannman
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有