Android Gradle Plugin 编译流程
2024-4-21
| 2024-9-2
0  |  Read Time 0 min
type
status
date
slug
summary
tags
category
icon
password

前言

Gradle 是一个基于 Apache AntApache Maven 概念的项目 自动化建构 工具。Gradle 构建脚本使用的是 Groovy 或 Kotlin 的特定领域语言来编写的,而不是传统的 XML
Android Gradle Plugin(AGP) 是 Android Studio IDE 上面,以 Gradle 为基础,添加了几项专用于构建 Android 应用功能的插件。

本地编译 Android Gradle Plugin

准备工作

本示例所使用电脑环境

源码下载

在配置 repo 工具之后,执行以下命令
编译 AGP 的源码有很多分支可选,网上能查阅到的博客大多是关于 gradle_3.0.0 和 gradle_3.4.0 分支,我也尝试了几个分支,但我的电脑环境下只有 gradle_3.4.0 编译通过了,感兴趣者可试试别的分支,或者可以尝试编译 Android Studio IDE。
很多分支克隆包含整个 Android Studio IDE 的源码,克隆整个存储库只是为了获取 Android Gradle 插件,浪费了不必要的时间和硬盘空间,这点属实有些坑。
notion image
在 sync 之前,可修改 manifest/default.xml,减少下载文件数量(修改之后需要约 12 GB 磁盘空间)

Android Gradle Plugin 编译

在 sync 完成之后,即可对源码进行编译了

你可能会遇到的问题

android-25 android.jar not found at /Users/dafay/Desktop/source/gradle-340/prebuilts/studio/sdk/darwin/platforms/android-27/android.jar
解决:android-platforms jar(github) 下载 android-27 放入对应的位置
 
protoc-3.4.0-osx-aarch_64.exe 缺少
解决:https://repo.maven.apache.org/maven2/com/github/os72/protoc/3.4.0/ 没有找到对应的文件,直接选择一个 osx 平台的修改为 protoc-3.4.0-osx-aarch_64.exe 这个名字放到对应的位置,编译通过了

Android Studio IDE 中引入本地的 AGP

使用修改后的 Android Gradle 插件,测试您自己的 Gradle 项目,修改 build.gradle 文件以指向您的本地存储库(上面的 publishLocal 目标安装了您的构建)。
我在源码里面添加一些日志输入,可以对 AGP 的工作流程做一些观察,也确保引入的 AGP 是我本地编译发布的。
notion image
以上几步即完成了对 AGP 的编译和使用。
 
当前 AGP 已更新至 8.+ 版本,相较于 AGP 3.4.0,已有许多变化,尽管使用的是旧版本的源码,通过成功编译 AGP,您积累了宝贵的经验,不再畏惧 Gradle 和 AGP。毕竟,Gradle 和 AGP 也是由其他开发人员编写的,我们同样可以对其进行编写。作为一个构建工具,Gradle 本身并不复杂,AGP 也只是以 Gradle 为基础添加了几项专用于构建 Android 应用的插件,有了这个小小的成功经验,可以让您更加从容面对日后碰到的 Android Apk 编译问题。
 

附录

Android Studio IDE gradle tasklist 不显示
Android Studio IDE AGP 缓存位置
.gradle/caches/modules-2/files-2.1

参考文档

 
Android Apk 编译打包流程Repo 指令
  • Utterance
Catalog