遵循Automotive Design Compose教程时遇KSP参数类型错误
Automotive Design Compose 项目运行KSP错误解决
问题场景
正在跟进Google的Automotive Design Compose教程,使用Android Studio Meerkat | 2024.3.1 Canary 3版本,运行项目第一步时触发KSP错误:
> Task :app:kspDebugKotlin FAILED e: [ksp] Invalid @Design parameter type (ImageReplacementContext) -> Bitmap? e: [ksp] Invalid @Design parameter type (ImageReplacementContext) -> Bitmap? e: Error occurred in KSP, check log for detail
相关代码片段
导入语句:
import com.android.designcompose.ImageReplacementContext
接口定义:
@DesignDoc(id = "3z4xExq0INrL9vxPhj9tl7", customizationInterfaceVersion = "0.8") interface Tutorial { @DesignComponent(node = "#stage", isRoot = true) fun Stage( @Design(node = "#live-time") liveTime: String, @Design(node = "#title") title: String, @Design(node = "#subtitle") subtitle: String, @Design(node = "#long-title") longTitle: String, @Design(node = "#photo") photo: (ImageReplacementContext) -> Bitmap?, @Design(node = "#icon") icon: (ImageReplacementContext) -> Bitmap?, @Design(node = "#timer") timer: String, @Design(node = "#buttontext") buttonText: String, @Design(node = "#boldtitle") boldTitle: String, @DesignVariant(property = "#media/now-playing/play-state-button") playState: PlayState, @Design(node = "#media/now-playing/play-state-button") onPlayPauseTap: TapCallback, @DesignContentTypes(nodes = ["#GridItem"]) @DesignPreviewContent( name = "Browse", nodes = [ PreviewNode(1, "#GridItem=Rect"), PreviewNode(3, "#GridItem=Square"), PreviewNode(1, "#GridItem=Rect"), PreviewNode(6, "#GridItem=Square"), PreviewNode(1, "#GridItem=Rect"), PreviewNode(6, "#GridItem=Square"), ], ) }
解决思路
- 对齐依赖版本:教程代码对应特定版本的Automotive Design Compose,检查项目
build.gradle中的依赖版本,确保和教程仓库内的版本完全一致,避免版本不兼容导致的KSP注解处理异常。 - 调整参数类型:若使用了较新版本的Design Compose,图片替换参数类型可能已变更,将
(ImageReplacementContext) -> Bitmap?替换为当前版本支持的类型(比如直接使用Bitmap?或ImageBitmap?,具体参考官方文档)。 - 清理缓存重建:执行
File -> Invalidate Caches... -> Invalidate and Restart清理Android Studio缓存,然后重新构建项目,排除缓存导致的异常。
内容的提问来源于stack exchange,提问作者theAlse
相关产品推荐
相关产品推荐

