如何构建AGP

2023年 8月 22日 60.6k 0

一、AGP是什么

AGPAndroid Apk的官方构建系统。

The Android Gradle plugin (AGP) is the official build system for Android applications.

为什么要研究AGP呢?

原因是AGP包含了AndroidApk编译以及打包的全过程,这个过程对我们Android开发来讲是非常重要的,对于一些疑难的问题,可以通过这个角度去理解。

二、源码的下载与编译

前提:需要科学上网

AGP的源码放在AndroidStudio的源码中,所以我们首先要先下载AndroidStuio的源码。

AndroidStudio的源码是使用repo来管理的,repogoogle开发的一个用来管理git仓库的工具,用于多个git仓库的管理,aosp的源码也是用repo来管理的。

Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier to work with Git.

repoWindows版本,但是经过多次尝试,始终有各种各样的问题,所以还是使用Linux版本,我这里使用的是WSL2

WSL2默认是无法科学上网的,所以需要访问宿主Windows主机,从而实现科学上网,否则是不能访问AGP的地址的。

2.1 执行下载

参考文档:

$ mkdir studio-master-dev
$ cd studio-master-dev
$ repo init -u https://android.googlesource.com/platform/manifest -b studio-master-dev
$ repo sync -c -j4 -q

2.2 代码导入

按照官方文档的说法,我们将刚才下载的代码导入到IDEA中,导入的地址为tools

三、遇到的问题

3.1 WSL如何访问Window主机的端口?

这个网上有很多的教程,但是有很多是没有用的,大部分的教程都是说通过

cat /etc/resolv.conf |grep "nameserver"

来获取宿主机的ip,继而设置proxy:

export all_proxy="socks5://${hostIp}:1080"

最终实现网络访问。

注:如果使用SS的话,在选项设置里面有三个需要设置:

图片.png

但是我这里通过cat /etc/resolv.conf文件读取到的server_name一直是192.168.1.1,然后去设置,实际上是不起作用的,执行curl google.com提示拒绝连接

最开始还以为是防火墙的问题,添加各种规则,甚至关闭防火墙,但是都是不起作用。

最终在https://github.com/microsoft/WSL/issues/5211中看到一些回答,尝试使用Windows主机的IPv4地址来尝试,发现是可以的。先使用ipconfig查看本机IP,然后使用这个IP去替换上面的hostIp

3.2 IDEA编译失败

导入之后,IDEA一直提示“你的主机中的软件中止了一个已建立的连接。”

查询各种资料,说的都是和Wi-Fi热点相关的,但是我本地是没有设置过的,偶然看到有人说切换Gradle的Jdk环境可以解决,经过一番尝试确实可以,神奇。(见参考4)

3.3 提示JDK版本

代码里面有个规则文件,判断必须采用Jdk1.8,否则就会报错,这里直接安装Jdk1.8并完成切换即可。

修改的是这个版本,别改错了

图片.png

四、结束

经过上述的导入,我们就可以快乐地查看AGP的源码啦~

官方还提供了Debug的方式,如果想要深入研究的话这一步是绕不过去的,这里可以查看参考3

参考

1、developer.android.com/build/exten…

2、android.googlesource.com/platform/to…

3、android.googlesource.com/platform/to…

4、www.cnblogs.com/gouguo/p/17…

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论