You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多模块Android项目Release构建R8缺失类错误求助

解决多模块Android项目Release构建R8缺失类问题

核心问题分析

你使用AGP 8.5.1、Hilt 2.51.1、Kotlin 2.0.0、KSP 1.8.10-1.0.9搭建的多模块Android项目,Debug构建正常,但开启minify的Release构建时出现SingletonModule、VenuesViewModel等类的R8缺失错误,且不想手动添加大量Keep规则。

针对性解决步骤

1. 对齐KSP与Kotlin版本

当前KSP版本1.8.10-1.0.9与Kotlin2.0.0不兼容,KSP版本必须和Kotlin版本严格对应。Kotlin 2.0.0对应的KSP版本为2.0.0-1.0.24,在项目根目录的build.gradle.kts中更新:

plugins {
    id("com.google.devtools.ksp") version "2.0.0-1.0.24" apply false
}

同步后重新构建,这是Hilt相关R8错误的常见诱因——KSP生成的代码不兼容会导致R8无法识别。

2. 确保Hilt的R8规则自动导入

Hilt会自动提供R8规则,需检查各模块配置:

  • 在app模块的build.gradle.kts中开启多模块聚合任务:
hilt {
    enableAggregatingTask = true // 多模块项目必须开启,确保Hilt生成的代码被正确聚合
}
  • 所有使用Hilt的模块(presentation、data)需正确应用插件:
plugins {
    id("com.android.library") // 或com.android.application
    id("kotlin-android")
    id("dagger.hilt.android.plugin")
    id("com.google.devtools.ksp")
}

3. 检查模块间依赖的传递性

domain是纯Kotlin模块,需确保:

  • domain模块未配置导致类被移除的编译参数,示例配置:
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs += "-Xno-param-assertions"
        // 避免添加会触发类移除的编译参数
    }
}
  • presentation和data模块对domain的依赖声明正确:
implementation(project(":domain"))

4. 验证ViewModel的Hilt注解

针对VenuesViewModel的缺失问题,检查是否正确使用Hilt注解:

@HiltViewModel
class VenuesViewModel @Inject constructor(
    private val getVenuesUseCase: GetVenuesUseCase
) : ViewModel() {
    // ...
}

同时确保在Activity/Fragment中通过Hilt扩展方法获取ViewModel:by viewModels<VenuesViewModel>(),而非手动实例化。

5. 检查SingletonModule的Hilt配置

如果SingletonModule是Hilt模块,确认注解配置正确:

@Module
@InstallIn(SingletonComponent::class)
object SingletonModule {
    @Provides
    fun provideSomeRepository(): SomeRepository = SomeRepositoryImpl()
}

最后验证

执行./gradlew clean清理构建缓存,重新构建Release版本。若仍有问题,查看missing_rules.txt中具体缺失类,若为Hilt_*开头的生成类,说明KSP版本不匹配的问题未解决。

内容的提问来源于stack exchange,提问作者No_Name

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:12:10