Ksp解析注解 这里我定义了一个Startup的注解,这个注解的目的就是标识当前的类是一个启动的Task。因为在ksp或者apt的compiler环节上,都会先尝试获取到当前语法树的所有注解的类。 我们需要做的就是将这些由ksp生成的Task类信息也带到TaskGroup的生成逻辑中去。
您可以在 KSP GitHub repo 中查看开放源代码和文档。 为何推出 KSP? Kotlin 开发者向我们反馈最多的需求就是提高构建速度。 开始使用 要查看 KSP 的实际运行情况,请从 GitHub 下载 KSP Playground 项目。 也就是说,在同一模块中使用 KAPT 和 KSP 最初可能会降低您的构建速度,因此在 Alpha 版期间,最好在单独的模块中使用 KSP 和 KAPT。 随着越来越多的注释处理器采用 KSP,我们希望您的大多数模块都能够使用 KSP 来直接替代 KAPT。现在,您可以在 表格 中查看哪些注释处理器提供了 KSP 支持。 对于库作者而言,KSP 目前所处的 Alpha 版阶段是对其深入研究的良好契机,欢迎您在 KSP 问题跟踪器 中向我们提供有关 API 的反馈。
同时ksp相比于kapt接入方式也更清凉,还有就是它本身也支持增量编译等。有兴趣的老哥可以仔细阅读下谷歌对于ksp的介绍,下面是传送门。 因为我们要获取到ksp的依赖,同时ksp和kapt一样,都是通过SPI的机制进行加载的,所以我们本身也要引入一个ksp的注解库。 生成META-INF 其实你可以自定义一个META-INF文件 就不需要ksp或者apt来生成了 ksp("dev.zacsweers.autoservice:auto-service-ksp 所以,其实你在编写ksp的时候,其实你也可以和编写plugin一样自己生成一个META-INFO也是可以的,文件名可以参考上面的图片。 第三步 到了这里我们可以正式的开始ksp的代码编写了。 如果使用了这种ksp相关的generate的技术的话,可以在下图的目录中去查看是否有类生成。 耗时比较 我对其中一个module同时打开了ksp以及kapt,进行了数据测试。
TheRouter 的 Kotlin Symbol Processing(KSP)TheRouter 从1.1.4-rc2版本起,引入了 Kotlin Symbol Processing(KSP)作为注解处理的主力工具 KSP是一种基于Kotlin的编译期插件API,采用基于语法分析的方式,提高了编译速度,使得开发者能够更加高效地进行Android项目开发。以下是TheRouter的KSP使用方法:1. 配置KSP插件classpath在项目根目录的build.gradle中引入KSP插件的classpath,版本号需要与项目中Kotlin版本号相匹配。 使用KSP带来的优势性能提升: KSP基于语法分析,避免了重复解析的问题,相比KAPT有更高的性能。语法分析应用: KSP不仅可用于注解解析,还能执行基于语法分析的任务,如自定义代码语法检查。 以上是TheRouter的KSP使用方法,通过深入了解KSP的原理和优势,开发者可以更好地利用这一特性,优化Android项目的开发流程。
什么是 KSP?KSP 简介KSP (Kotlin Symbol Processing) 是 Google 为 Kotlin 开发的轻量级编译器插件 API。 API - 用于编写处理器 implementation("com.google.devtools.ksp:symbol-processing-api:1.9.20-1.0.14")}实现 KSP 代码生成演示 * 展示如何使用自动生成的页面注册器 */fun main() { println("=== KSP 代码生成演示 ===") println("这个演示使用了真正的 KSP /main/kotlin/generated/PageRegistry.kt运行结果=== KSP 代码生成演示 ===这个演示使用了真正的 KSP 处理器生成的代码=== KSP 生成的 PageRegistry 技术深入:KSP 工作原理编译流程1. 源码解析 → Kotlin 编译器解析源码,构建 AST2. 符号处理 → KSP 扫描符号,查找注解3.
ksp-control-1 192.168.9.91 4 8 40 100 KubeSphere/k8s-control-plane ksp-control-2 192.168.9.92 4 8 40 (保持不变) - ksp-storage-1 - ksp-storage-2 - ksp-storage-3 # 下面的内容保持不变 2.2 使用 KubeKey 增加节点 20:45:10 CST success: [ksp-storage-2] 20:45:10 CST success: [ksp-storage-3] 20:45:10 CST success: [ksp-gpu-worker [ksp-worker-2] 20:45:10 CST success: [ksp-worker-1] 20:45:10 CST success: [ksp-control-2] 20:45:10 CST 20:45:12 CST success: [ksp-control-3] 20:45:12 CST success: [ksp-control-2] 20:45:12 CST success: [ksp-control
-2] changed: [ksp-control-1] changed: [ksp-worker-2] changed: [ksp-worker-1] changed: [ksp-control-3] -1] changed: [ksp-control-2] changed: [ksp-control-3] changed: [ksp-worker-2] changed: [ksp-worker-1] -1] skipping: [ksp-control-3] skipping: [ksp-control-2] skipping: [ksp-worker-2] skipping: [ksp-worker -1] skipping: [ksp-control-2] skipping: [ksp-control-3] skipping: [ksp-worker-1] skipping: [ksp-worker -2] skipping: [ksp-control-1] skipping: [ksp-control-3] skipping: [ksp-worker-1] skipping: [ksp-worker
success: [ksp-storage-1] 08:27:15 CST success: [ksp-control-2] 08:27:15 CST success: [ksp-control-1] admin-ksp-control-1.pem admin-ksp-control-2-key.pem admin-ksp-control-2.pem admin-ksp-control-3-key.pem admin-ksp-control-3.pem ca-key.pem ca.pem member-ksp-control-1-key.pem member-ksp-control-1.pem member-ksp-control -2-key.pem member-ksp-control-2.pem member-ksp-control-3-key.pem member-ksp-control-3.pem node-ksp-control -1-key.pem node-ksp-control-1.pem node-ksp-control-2-key.pem node-ksp-control-2.pem node-ksp-control-
/k8s-control-plane ksp-control-2 192.168.9.162 8 16 40 100 KubeSphere/k8s-control-plane ksp-control-3 -1 - ksp-control-2 - ksp-control-3 control-plane: - ksp-control-1 - ksp-control-2 - ksp-control-3 worker: - ksp-control-1 - ksp-control-2 - ksp-control-3 controlPlaneEndpoint 19:55:09 CST success: [ksp-control-3] 19:55:09 CST success: [ksp-control-1] 19:55:09 CST success: [ksp-control 集群概览 ksp-clusters-opsxlab-overview-v412 集群节点 ksp-clusters-opsxlab-nodes-3c-v412 存储类 ksp-clusters-opsxlab-storageclasses-v412
-1 - ksp-master-2 - ksp-master-3 control-plane: - ksp-master-1 - ksp-master-2 - ksp-master-3 worker: - ksp-master-1 - ksp-master-2 - ksp-master-3 controlPlaneEndpoint 10:45:28 CST success: [ksp-master-3] 10:45:28 CST success: [ksp-master-1] 10:45:28 CST success: [ksp-master :59:27 CST success: [ksp-master-2] 10:59:27 CST success: [ksp-master-3] 10:59:27 CST success: [ksp-master 10:59:29 CST success: [ksp-master-3] 10:59:29 CST success: [ksp-master-2] 10:59:29 CST success: [ksp-master
4 8 40 100 KubeSphere/k8s-control-plane ksp-control-2 192.168.9.92 4 8 40 100 KubeSphere ksp-worker-1 192.168.9.94 4 16 40 100 k8s-worker/CI ksp-worker-2 192.168.9.95 4 16 ksp-storage-1 192.168.9.97 4 8 40 300+ ElasticSearch/Ceph/Longhorn/NFS/ ksp-storage-2 192.168.9.98 ksp-gpu-worker-2192.168.9.1024 16 40 100 k8s-worker(GPU NVIDIA Tesla P100) ksp-registry 192.168.9.90 ksp-gateway-2 192.168.9.1042 4 40 自建应用服务代理网关/VIP:192.168.9.100 ksp-mid 192.168.9.1054 8
-1-ksp-control-2-ksp-control-3control-plane:-ksp-control-1-ksp-control-2-ksp-control-3worker:-ksp-control -1-ksp-control-2-ksp-control-3-ksp-worker-1registry:-ksp-registrycontrolPlaneEndpoint:internalLoadbalancer -1kube-systemcalico-node-2f6zv1/1Running014m192.168.11.5ksp-worker-1kube-systemcalico-node-4x6lc1/1Running015m192.168.11.3ksp-control -3kube-systemcalico-node-5t8nk1/1Running015m192.168.11.1ksp-control-1kube-systemcalico-node-d9kzf1/1Running015m192.168.11.2ksp-control -4t7ks1/1Running015m192.168.11.1ksp-control-1kube-systemkube-apiserver-ksp-control-11/1Running016m192.168.11.1ksp-control
用途 ksp-control-1 192.168.9.91 4 8 40 100 离线环境 k8s-control-plane ksp-control-2 192.168.9.92 4 8 40 100 离线环境 k8s-control-plane ksp-control-3 192.168.9.93 4 8 40 100 离线环境 k8s-control-plane ksp-registry 192.168.9.90 roleGroups: etcd: -ksp-control-1 -ksp-control-2 -ksp-control-3 control-plane: -ksp-control-1 -ksp-control-2 -ksp-control-3 worker: -ksp-control-1 -ksp-control- ] 08:42:02 CST success: [ksp-control-3] 08:42:02 CST success: [ksp-control-2] 08:42:02 CST success: [
ksp-worker-2 192.168.9.95 4 16 40 100 k8s-worker ksp-worker-3 192.168.9.96 ksp-storage-3 192.168.9.99 4 8 40 300+ ElasticSearch//Ceph/Longhorn ksp-gpu-worker ksp-gateway-1 192.168.9.103 2 4 40 自建应用服务代理网关/VIP:192.168.9.100 ksp-gateway -1 - ksp-control-2 - ksp-control-3 control-plane: - ksp-control-1 - ksp-control-2 - ksp-control-3 worker: - ksp-worker-1 - ksp-worker-2 - ksp-worker-3 controlPlaneEndpoint
/k8s-control-plane ksp-control-2 192.168.9.162 8 16 40 100 KubeSphere/k8s-control-plane ksp-control-3 -1 ksp-control-2 ksp-control-3 kube logs pki runc 删除 pki 和以节点名命名的所有目录(建议做好备份) cd /root/kubekey /kubekey rm -rf ksp-control-1 ksp-control-2 ksp-control-3 pki 3. -1 ksp-control-2 ksp-control-3 kube logs pki runc 删除 pki 和以节点名命名的所有目录(建议做好备份) cd /root/kubekey /kubekey rm -rf ksp-control-1 ksp-control-2 ksp-control-3 pki 4.
ksp-control-2 192.168.9.92 4 8 40 100 KubeSphere/k8s-control-plane ksp-control ksp-worker-3 192.168.9.96 4 16 40 100 k8s-worker ksp-storage-1 192.168.9.97 ksp-gateway-2 192.168.9.1042 4 40 自建应用服务代理网关/VIP:192.168.9.100 ksp-mid 192.168.9.1054 /rook-csi=truekubectl label nodes ksp-worker-1 node.rook.io/rook-csi=truekubectl label nodes ksp-worker ksp-storage-2 <none> <none>rook-ceph-exporter-ksp-storage-3-7877646d8c-7h2wc 1
配置 KSP 插件的 JVM 版本 在 build.gradle 文件中,明确指定 KSP 插件的 JVM 版本: kotlin { sourceSets { all { kotlin.srcDir("build/generated/ksp/") } } } ksp { jvmTarget = "17" } 代码示例 以下是一个完整的 build.gradle "com.google.devtools.ksp:symbol-processing-api:1.8.10-1.0.5" } kotlin { sourceSets { all { kotlin.srcDir("build/generated/ksp/") } } } ksp { jvmTarget = "17" } 和 Kotlin 的 JVM 版本 多模块项目配置 确保所有模块的 build.gradle 文件中的 JVM 版本设置一致 KSP 插件配置 在 build.gradle 文件中明确指定 KSP 插件的
ksp-control-1 192.168.9.91 4 8 40 100 KubeSphere/k8s-control-plane ksp-control-2 192.168.9.92 4 8 40 ksp-worker-1 192.168.9.94 4 16 40 100 k8s-worker/CI ksp-worker-2 192.168.9.95 4 16 40 100 k8s-worker :192.168.9.100 ksp-gateway-2 192.168.9.104 2 4 40 自建应用服务代理网关/VIP:192.168.9.100 ksp-mid 192.168.9.105 Dashboard ksp-longhorn-dashboard-resource Node 信息 ksp-longhorn-ui-node ksp-longhorn-ui-node-expand Volume 信息 ksp-longhorn-ui-volume ksp-longhorn-ui-volume-pvc-status Setting 配置页 ksp-longhorn-ui-setting
ksp-master-3192.168.9.938 16 40 100 离线环境 KubeSphere/k8s-master ksp-registry192.168.9.904 -1 - ksp-master-2 - ksp-master-3 control-plane: - ksp-master-1 - ksp-master-2 - ksp-master -3 worker: - ksp-master-1 - ksp-master-2 - ksp-master-3 registry: - ksp-registry controlPlaneEndpoint ksp-registry192.168.9.91 ksp-master-1.opsxlab.cn ksp-master-1192.168.9.92 ksp-master-2.opsxlab.cn ksp-master-2192.168.9.93 ksp-master-3.opsxlab.cn ksp-master-3192.168.9.90 registry.opsxlab.cn192.168.9.91
winetricks riched20,用于自行修复微信无法看到输入框内容的问题 winetricks riched20 若执行出现404错误,下载下面两个链接文件到对应目录,重新执行上方命令 W2KSP4 _EN.EXE 目标路径:~/.cache/winetricks/win2ksp4 InstMsiW.exe 目标路径:~/.cache/winetricks/msls31 下载微信官方安装包 微信PC Executing cd /home/libin/.cache/winetricks/win2ksp4 Downloading https://ftp.gnome.org/mirror/archive /vendor/microsoft/win2000/Service_Packs/usa/W2KSP4_EN.EXE 正在连接 127.0.0.1:7890... 已发出 Proxy 请求,正在等待回应... 200 OK 长度: 未指定 [application/x-msdownload] 正在保存至: “W2KSP4_EN.EXE” W2KSP4_EN.EXE