引入Compose后偶现无法找到Navigation生成导航函数的编译错误求解
修复方案
- 首先处理版本兼容问题:当前使用的2.3.5版本Navigation组件存在已知的Kotlin IR环境下Safe Args代码生成时序缺陷,引入Compose后开启的IR编译器会打乱原有的代码生成任务顺序,导致增量构建时Directions类生成滞后或者不生成。
直接将ext中nav_version升级至2.4.2及以上稳定版,同步修改项目根目录build.gradle中的androidx.navigation:navigation-safe-args-gradle-plugin版本与nav_version对齐,该版本官方已修复Compose环境下的Safe Args增量构建异常问题。 - 对齐Compose相关版本配置:当前使用的Compose 1.0.1版本对应的Kotlin编译器扩展版本应为
1.0.1,而非1.0.0-rc01,版本不匹配会导致编译任务执行异常,干扰代码生成逻辑。直接将composeOptions中的kotlinCompilerExtensionVersion修改为与compose_version一致即可。 - 移除废弃依赖:
kotlin-android-extensions插件已官方废弃,与Kotlin IR编译器、Safe Args插件存在已知冲突,会干扰代码生成路径的识别。当前项目已经启用了Data Binding和Compose,完全可以替换该插件的所有功能,直接从模块build.gradle的插件列表中删除apply plugin: 'kotlin-android-extensions'即可。 - 可选兜底配置:如果修改后仍偶发增量构建找不到生成类的问题,可在项目
gradle.properties中添加配置关闭Safe Args的增量构建缓存:androidx.navigation.safeargs.incremental = false - 验证逻辑:所有配置修改完成后执行一次
./gradlew clean全量构建,再多次修改nav graph XML测试增量构建,即可确认问题修复。
内容的提问来源于stack exchange,提问作者PatchesDK
相关产品推荐
相关产品推荐

