type
status
date
slug
summary
tags
category
icon
password
前言本地编译 Android Gradle Plugin准备工作源码下载Android Gradle Plugin 编译你可能会遇到的问题Android Studio IDE 中引入本地的 AGP附录参考文档
前言
Gradle 是一个基于 Apache Ant 和 Apache 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 插件,浪费了不必要的时间和硬盘空间,这点属实有些坑。
在 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 是我本地编译发布的。
以上几步即完成了对 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