Compose源码环境搭建
Compose源码环境搭建
进行Compose源代码环境构建。
Compose Compiler:1.5.1
前言
为什么需要使用Linux作为搭建环境?(指跑源代码)
这肯定不是我想用Linux开发,因为Compose项目的限制
a. 我们可以看一部分project的manifest声明,发现什么?项目依赖了ios的sdk,linux的sdk,就是没有Windows。这想表明什么就不言而喻了
b. 通过查看Compose项目的一部分的文件你也能发现一些端倪,没有gradlew.bat?所以使用Windows跑环境会有一些问题的。
(不清楚是否能跑。但是绝对是要做一些配置的。)
为什么选择配置Compose Compiler的Release环境?
很简单,如果你拉取最新的commit项目未必能跑起来,是否稳定你只能求助开发者。
这是因为开发分值是feature最多的分值,而且你不清楚他是否是开发完成的,这种项目的不稳定因素肯定就尽可能控制下。
(问就是踩过坑。)
Release的版本号为什么选择1.5.1
我们可以查看下目前的Compose Compiler Release Note,以及Compose Kotlin Compiler对照表
目前是2025/5 Compose Compiler已经开发到了1.5.13。说实话我也很难选。到时是哪个版本。
所以我创建了一个Compose工程,Compose Compiler的版本为1.5.1。
1
2
3composeOptions {
kotlinCompilerExtensionVersion = "1.5.1"
}
源码获取
Compose的源代码有两个地方可以获取,一是GitHub,而是AOSP仓库。
先说下结论,最好从AOSP中获取。
androidx 在 Github上有仓库。地址为https://github.com/androidx/androidx.git
既然是Androidx肯定是包含Compose的。但是有一个很大的问题。
由于Androidx是AOSP工程的一部分。Github仓库的有源代码,但是跑不起来(因为缺失了部分依赖)。
(头铁的可以自己去试试。)
所以我们只能去拉AOSP完整的依赖了。
Note: “拉AOSP完整的依赖”的意思不是说拉取AOSP所有代码,AOSP代码有很多分支。
具体分支可见https://android.googlesource.com/
我们只是拉取AOSP开放代码中一条与Compose-Compiler相关的分支。
下载Repo工具
AOSP代码是使用自研的Repo下载的。
所以我们如果需要下载源代码我们就得下载Repo工具。
下载repo并将其放到了PATH下。
1 | mkdir ~/bin |
Repo Sync拉取
使用北京外国语大学开源软件镜像站初始化repo仓库
指定branch 为androidx-compose-compiler-release(Compose release 1.5.1)
1 | repo init -u https://mirrors.bfsu.edu.cn/git/AOSP/platform/manifest -b 85ae76552bd5c9307eed386b71645008359e9761 |
紧接着通过repo sync等待拉取完成源代码就下载完成了。
就可以使用Idea、Android Studio打开配置环境了。
1 | repo sync |
Note:
androidx-compose-compiler-release为Compiler release的manifest分支。(通过查Commit记录猜出来的)
但是具体release版本是没有打tag的。(下面讲述下我是如何找到1.5.1 release版本的manifest commit id的)
- 首先我们去Compose Release Note去查release的时间(2023-7-26)
查找代码提交的时间也就是上图Version 1.5.1 contains these commits.发现有两次提交
查看最近一次提交的时间(2023-7-21 +0000),这里发现是可以单独下载源代码的[tgz]。(不过我们是要下载源代码以及它的依赖。)
- 通过git查找下commit,发现有一个匹配的commit信息
1
2
3 cd .repo/manifests/ #进入manifests git路径
git checkout androidx-compose-compiler-release # 切换到指定分支
git log --since 2023-7-20 --until 2023-7-26 # 查找时间段的commit记录
- 通过Change-Id去Google Code View网页查找当前Commit记录发现修改了support(androidx)的版本
- 查找下这个版本的git log信息,发现附近3个commit均无变更记录。因此commit版本同774ff92版本(1.5.1最后一个commit)为 Compose Compiler release 1.5.1分支。
- 得出结论85ae76552bd5c9307eed386b71645008359e9761 manifest commitId为 Compose Compiler 1.5.1 release
项目配置
完整运行
这种方式运行由于需要拉取整个项目。这种方式会比较卡。
但是可以用于修改源码并进行重新打包。
通过使用上述拉取的AOSP代码进行build。
这里需要稍微提示一下项目的路径和结构
如下是compiler项目的路径,在如下位置使用Idea、Android Studio打开即可
1 | frameworks/support/compose/compiler |
如下是compiler的整体结构
compiler
只是一个壳,用于做发布等任务
compiler-host
具体的compiler模块
极简配置
这种配置由于是使用的产物进行配置,所以运行会比较快。
而且能在任何平台上跑。
唯一的缺点就是不能修改源代码。
配置方法
- 创建Compose Project
- 配置Gradle
1 | testImplementation("com.github.tschuchortdev:kotlin-compile-testing:1.5.0") |
常见问题
Compose Compiler没源代码的问题
点开项目发现没有代码
打开Library Settings,查看源文件。发现是空的……
解决方法有两种:
1.去AOSP repo sync
2.去Android source下载指定的commit id的patch文件
如果跟着前文拉取的Compose的源代码。可以直接使用上述指令打包一份源代码
1 | cd frameworks/support/compose/compiler/compiler-hosted/src/main/java # 进入源码路径 |
如果没有拉取Compose 1.5.1的源代码,可以通过下载[tgz]获取1.5.1 指定commit的源代码。最后重复上述操作自己打包一份。
然后导入IDE就可以开始调试了。