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

调试模式正常但Release构建失败,MyService触发Instantiatable错误

问题:Debug运行正常,Release构建报错MyService必须继承android.app.Service

代码片段

@AndroidEntryPoint
class MyService: LifecycleService() {

报错详情

app\src\main\AndroidManifest.xml:48: Error: MyService must extend android.app.Service [Instantiatable]
android:name=".features.record.service.MyService"

关于Instantiatable类型问题的说明:在清单文件中注册的Activities、services、broadcast receivers等(或布局文件中的自定义视图)必须能被系统“实例化”,这意味着类必须是public的,必须有一个空的public构造函数,如果是内部类则必须是static内部类。

1 errors, 0 warnings
解决办法

1. 确保Service类为public访问权限

Kotlin默认类访问权限是internal,Release模式下系统无法正确识别,需显式添加public修饰符:

@AndroidEntryPoint
public class MyService: LifecycleService() {
    // 业务代码
}

2. 添加ProGuard/R8混淆规则

Release构建的混淆会破坏Hilt生成的代理类,在proguard-rules.pro中加入以下规则保留相关类:

# 保留LifecycleService子类
-keep public class * extends androidx.lifecycle.LifecycleService
# 保留Hilt内部服务代理类
-keep class dagger.hilt.android.internal.services.** { *; }
-keep class * extends dagger.hilt.android.internal.services.HiltService

3. 验证混淆是否为问题根源(可选)

临时关闭Release构建的混淆和资源压缩,测试是否能正常构建,确认问题来源:

buildTypes {
    release {
        minifyEnabled false
        shrinkResources false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:47:47