Android、Android Studio 和 Gradle 是如何使用 Java 的

这篇具有很好参考价值的文章主要介绍了Android、Android Studio 和 Gradle 是如何使用 Java 的。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

可以肯定地说,每个人都知道 Android 使用 Java。然而,“使用 Java ”的含义范围相当大。因此,在本文中,我将介绍 Android 设备和我们用于 Android 开发的各种工具是如何使用 Java 平台的。

让我们从结论开始——下图显示了 Java 在 Android 生态系统中的作用:
androidstudio自带jdk吗,java,android,android studio

Java平台

使用 Java 编程语言编写代码的开发人员通常简称为 “Java”,因此很自然地认为 Java 就是:一种编程语言。但是,你可能知道,Java 源代码在其原始形式下是不可执行的。首先,你需要将其转化为所谓的字节码,然后使用专门的工具在目标设备上执行字节码。因此,语言本身只是更大工具链的一部分。该工具链称为 Java 平台。

Java 平台最重要的部分是所谓的 “JVM 编程语言”(Java、Kotlin、Scala 等)、JRE、JDK 和 JVM。

JRE

JRE 代表 Java 运行时环境。要了解它的作用,假设您有一个成熟的 Java 应用程序并且您想要运行它。由于 Java 的设计理念是“一次编写,随处运行”,因此您应该能够在许多不同的环境中运行 Java 程序。这是一个非常好的特性,但是这种灵活性是有代价的:你不可能只在“本地”运行 Java 应用程序。相反,你可能需要在其他人的目标机器上安装 JRE,然后使用该软件来执行你的 Java 应用程序。简而言之:JRE 是运行 Java 程序所需要的一套工具。

一般来说,JRE 内部包含的主要工具是类库、类加载器和 JVM。类库和类加载器我就不多说了(如果你好奇它们是干什么的可以上网搜索),但是 JVM 在 Java 世界中是一个非常突出的概念,所以我们也需要讨论一下。

虚拟机

JVM 代表 Java 虚拟机。该组件执行 Java 字节码并抽象出(即“隐藏”)主机设备上安装的硬件和操作系统的细节。在某种意义上,你可以将 JVM 视为独立于平台的 Java 字节码与特定于平台的硬件和软件之间的适配器。换句话说,JVM 是允许 Java 字节码与平台无关的组件。

JDK

现在你明白了你需要 JRE 才能在主机设备上运行 Java 应用程序。然而,要开发这些应用程序,您需要特殊的开发工具来将 Java 源代码(java文件)转换为可执行的字节码类(class文件)、库和成熟的应用程序。由于大多数用户永远不会开发应用程序,因此将这些开发工具包含到 JRE 中没有任何意义。输入 Java 开发工具包 (JDK)。

JDK 是一个软件包,其中包括 JRE 和可用于开发 Java 应用程序的其他工具。

概括地说,Java 平台的不同组件之间的关系可以描述如下:
androidstudio自带jdk吗,java,android,android studio
请注意,上图非常笼统,实际上,所有这些实体都是非常复杂的软件。

Android Studio 如何使用 Java

Android Studio 是 JetBrains 的 IntelliJ IDE 的定制版本,后者又是一个 Java 应用程序。因此,正如我们所确定的那样,要在您的计算机上启动 IntelliJ(以及随后的 Android Studio),您需要安装 JRE。但是,如果您下载并安装 Android Studio,即使没有 JRE,您也可以启动它。怎么会?

事实证明,JetBrains 的人决定让他们的用户更简单地安装 IntelliJ,因此他们将整个 JRE 打包在一起。因此,当您安装 IntelliJ(或 Android Studio)时,它也会安装自己的 JRE。在 IntelliJ 中,有一个选项可以将默认 JRE 更改为其他内容(操作名称:为 IDE 选择 Boot Java Runtime),但 Android Studio 维护人员决定摆脱它,因此您只能使用捆绑选项。在我看来,这没关系。

但是,正如我们所讨论的,如果要编译 Java 源代码,则需要 JDK,而不仅仅是 JRE。幸运的是,Android Studio 也可以解决这个问题。如果我打开 Project Structure 对话框并转到 SDK Location 选项卡,我会在底部看到这个下拉菜单:
androidstudio自带jdk吗,java,android,android studio
就像 JRE 一样,Android Studio 自带了一个 JDK,也就是捆绑了自己的 JDK 并默认使用它。由于某种原因,该目录被称为 “jre”,但别担心——它包含一个完整的 JDK,它的名字并不重要。

但是请注意,上述下拉菜单的标题表示所选的 JDK 将由 Gradle 使用,而不是 Android Studio。那么,让我们谈谈 Gradle。

Gradle 如何使用 Java

Gradle 是一个构建工具。它以一段源代码作为输入,然后执行一个“构建”流程,将源代码转换成其他东西。在构建流程中,Gradle 通常会使用额外的第三方工具,因为它不知道如何自行处理源代码。从某种意义上说,您可以将 Gradle 视为构建过程的编排器:它不会自己完成工作,但它知道流程中的所有步骤,也知道谁负责执行这些步骤中的每一个.

在 Android 开发的背景下,Gradle 的主要作用是将源代码和相关资源分别转换为应用程序和库的 APK 和 AAR 存档。

从根本上说,Gradle 也是一个 Java 应用程序,因此您需要安装 JRE 才能运行它。但是,当您使用 Gradle 构建以 JVM 语言(Java、Kotlin、Scala 等)编写的源代码时,JRE 是不够的,Gradle 需要完整的 JDK。这就是为什么您必须在 Android Studio 中为 Gradle 指定 JDK 位置。

正如我们在上一节中已经讨论过的,Android Studio 自带默认使用的 JDK。因此,在实践中,您无需安装自己的 JDK 即可从 Android Studio 中执行构建流程(除非您有特殊原因更改默认设置)。

Android Gradle 插件

由于我已经提到了 Gradle,让我们也讨论一下 Android Gradle Plugin (AGP)。

首先,考虑官方 Gradle 文档中的描述:

Gradle 的核心是有意为现实世界的自动化提供很少的东西。所有有用的功能,如编译 Java 代码的能力,都是由插件添加的。插件添加新任务(例如JavaCompile)、域对象(例如SourceSet)、约定(例如 Java 源代码位于src/main/java)以及扩展核心对象和来自其他插件的对象。
换句话说,Gradle 仅提供用于自动化的高级脚手架,并假定特定目标的构建流程将由插件实现。一些插件由 Gradle 团队维护,而另一些则来自第三方开发人员。

AGP 是一个用于 Android 开发的 Gradle 插件。它由 Google 维护,其发布节奏与 Android Studio 的发布同步。此外,作为一般规则,较新版本的 AGP 不向后兼容较旧版本的 Gradle(即,如果您想迁移到较新的 AGP,您可能还需要迁移到较新的 Gradle)。

总而言之,AGP 是 Google 开发的一个插件,可以使用 Gradle 构建 Android 应用程序。

从命令行执行 Gradle 构建

在某些情况下,您可能希望从命令行而不是 Android Studio 执行 Gradle 构建。要完成此任务,您需要调用gradlew.bat(Windows) 或gradlew(Mac 和 Linux)脚本。

例如,如果您在 Mac 上并且想要构建应用程序的调试版本,则可以使用以下命令(假设您没有任何风格):

./gradlew assembleDebug

现在,还记得我们之前讨论过的 Android Studio 中的 JDK 位置设置吗?如果您从命令行构建,它没有任何效果。事实上,您甚至不需要安装 Android Studio 即可从命令行执行 Gradle 构建。这对于在持续集成服务器上构建工件非常有用,但这也意味着现在您有责任告诉 Gradle 它可以在哪里找到 JDK。

定义一个名为 JAVA_HOME 的环境变量并将其值设置为机器上 JDK 安装目录的位置是一种普遍的约定。幸运的是,Gradle 知道这个约定。因此,要从命令行调用 Gradle 构建,您只需正确设置 JAVA_HOME,Gradle 就会选择它。如果您在特定机器上同时从 Android Studio 和命令行构建,建议确保 Android Studio 中的 JDK 位置设置和 JAVA_HOME 指向同一个位置。这样,无论从何处启动构建,您都将使用相同的 JDK。

Android 设备上是如何使用 Java 的

有趣的是,尽管我们使用 JVM 编程语言编写 Android 应用程序,但实际上并没有运行在 Android 设备上的 Java 平台。至少不是正式的。要了解这方面的内容,我们需要追溯历史,追溯 Android 平台的根源。

Google 在开发 Android 时,决定以 Java 平台为基础。然而,出于法律方面的考虑,谷歌没有采用“适当的 Java”,而是决定基于 Java 平台并根据他们的需要进行修改。由于这种方法,Android 设备上没有 JVM。相反,Google 使用了所谓的 Dalvik 虚拟机 (DVM),后来被 Android Runtime (ART) 取代,简单来说 Android 设备上并没有 JDK 来运行java开发的应用,而是使用 Android Runtime (ART) 来来运行java 开发的应用的。

除了使用不同的虚拟机外,Google 还在 Android 内部重新实现了许多标准 Java API,以允许开发人员在编写 Android 应用程序时使用这些熟悉的结构(例如 ,java.lang.等java.util.)。后来,在 Android 7 中,Google 决定将 OpenJDK 合并到 Android 中,并用 OpenJDK 的版本替换 Java API 的自定义重新实现。然而,Android中仍然没有JVM。

底线是,从形式上讲,Android 设备内部没有 Java 平台。Google 决定使用 Java 的某些部分,并伴随着许多自定义修改和添加。文章来源地址https://www.toymoban.com/news/detail-694172.html

到了这里,关于Android、Android Studio 和 Gradle 是如何使用 Java 的的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android的Gradle、Studio、Java、Kotlin版本兼容

    Android Gradle 插件和 Android Studio 兼容性 Android Studio 版本 所需插件版本 Hedgehog - 2023.1.1 3.2-8.2 Giraffe - 2022.3.1 3.2-8.1 Flamingo - 2022.2.1 3.2-8.0 Electric Eel - 2022.1.1 3.2-7.4 Dolphin - 2021.3.1 3.2-7.3 Chipmunk - 2021.2.1 3.2-7.2 Bumblebee - 2021.1.1 3.2-7.1 Arctic Fox - 2020.3.1 3.1-7.0 Gradle版本和Java版本对应关系 Ja

    2024年02月09日
    浏览(34)
  • android studio gradle 使用阿里源 (修改 settings.gradle)

    默认的地址下载速度极慢 (依赖项几个小时也下载不完) 改为 阿里源, 1分钟就下载ok了. 修改根目录中 的 settings.gradle 文件

    2024年02月07日
    浏览(39)
  • Android Studio 出现 org.gradle.api.plugins.UnknownPluginException 如何解决

    Android studio Giraffe 点击sync now 或运行自己写的程序出现报错 搞了半天,往下看突然发现错误的原因了! 突然想起之前用 Qt for Android 搞软件,设置了 JAVA_HOME,这下应该只更改 JDK 环境变量就好了。 在 Setting 中找到 Gradle JDK 的路径 更改 JAVA_HOME 环境变量后重启 解决。

    2024年04月14日
    浏览(33)
  • [Android Studio Tool]如何将AS的gradle文件迁移到D盘

    首先,找到C盘中的 .gradle 文件的位置 一般会在我们的系统盘的用户文件下。 然后把一整个 .gradle 文件剪切,粘贴到其它盘(比如D盘)的根目录下 打开Androdi Studio,然后如果看到右下角它开始自动同步gradle,准备下载的时候,果断点暂停,不要让他继续下载。 一般会出现在图示

    2024年02月05日
    浏览(41)
  • 关于Android Studio使用Gradle构建时,依赖下载过慢的方案

    每个As人都应该被gradle下载问题困扰过。网上也有很多类似文章教你怎么做。我也把配置贴出来。 很多文章都是把repositories闭包当中的配置这么写: 这个时候你配置的镜像包没有发挥作用。gradle下载依赖的时候会从这几个仓库当中一路找下来。假如你需要下载一个 abc.jar 的依

    2024年02月04日
    浏览(42)
  • 【AndroidStudio】org.gradle.api.plugins.UnknownPluginException: Plugin [id: ‘com.android.application‘

    截图: 出现问题之前操作:设置proxy,以为设置镜像代理以后能够下载dl.android.com里的插件,结果依然下载不了,而且还导致我新建项目以后反而构建不成功。新建项目构建都失败!!! 1、因为是gradle构建失败,所以去官网查看gradle的相关说明文档(看了才分析出解决方案)

    2024年02月11日
    浏览(35)
  • 【Flutter 问题系列第 78 篇】Android Studio 升级后提示 org.gradle.java.home Gradle property is invalid 的解决方案

    这是【Flutter 问题系列第 78 篇】,如果觉得有用的话,欢迎关注专栏。 Flutter SDK:3.3.5,Dart SDK:2.18.2, 操作系统:macOS Ventura 13.0.1 Intel Core i9,Android Studio 版本:Flamingo 2022.2.1 Patch 2 一:问题描述 在公司的 M2 电脑上,直接使用 Android Studio 的检查更新,升级到 Flamingo 2022.2.1 版

    2024年02月05日
    浏览(36)
  • 关于高版本Android Studio使用KTS(koltin)作为脚本代替Gradle构建的细节

    前两天刚刚才写了安卓构建下载太慢的博客,今天新建项目又用到kotlin作为脚本构建项目时出新问题。一开始我是直接从自己的文章复制粘贴到新项目的gradle当中,结果上来就报好几个红,给我人干懵了。 Unexpected tokens (use \\\';\\\' to separate expressions on the same line) 后知后觉发现自己

    2024年02月05日
    浏览(36)
  • 【错误记录】Android Studio 编译报错 ( Android Gradle plugin requires Java 11 to run. You are currently using )

    使用 最新版本的 Android Studio 创建应用 , 并执行 , 报如下错误 : 当前使用的 JDK 版本是 1.8 , 将 JDK 升级为 11 版本 ; 先在指定目录 , 安装 JDK 工具 ; 选择 \\\" 菜单栏 | File | Settings \\\" 选项 , 在 \\\" Build, Execution , Deployment | Build Tools | Gradle \\\" 选项中 , 设置 刚才 安装的 JDK 即可 ; 编译通过

    2024年02月10日
    浏览(37)
  • Android Studio:如何修改JDK版本和获知使用的Java版本

    JDK的含义: JDK代表Java Development Kit(Java开发工具包),它是一种用于开发和构建Java应用程序的软件包。JDK包含了开发Java应用程序所需的工具、编译器(javac)、运行时环境(JRE)以及其他辅助工具和库。 在Java开发领域中,JDK版本和Java版本通常是相互对应的,例如:JDK 8代表

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包