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

升级Android 31后遇Failed resolution of: Landroidx/startup/R$string错误求助

解决升级Android 31后出现的androidx/startup/R$string找不到问题

针对多模块项目升级到API 31后出现的java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/startup/R$string;异常,以下是几个实用的解决步骤:

  • 统一所有模块的androidx.startup依赖版本
    多模块项目容易出现不同模块依赖不同版本的startup库,导致资源合并冲突。在项目根目录的build.gradle中定义统一版本:

    ext {
        startup_version = "1.1.1"
    }
    

    然后所有模块的依赖都使用这个统一版本:

    implementation "androidx.startup:startup-runtime:$startup_version"
    

    执行./gradlew app:dependencies查看依赖树,排除掉任何冲突的旧版本依赖。

  • 禁用Startup库的自动初始化(如果不需要)
    如果你的项目没有用到Startup的自动初始化功能,直接在AndroidManifest.xml中移除InitializationProvider:

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove" />
    

    这样系统就不会尝试初始化该Provider,从而跳过对androidx.startup.R$string的加载。

  • 检查多Dex配置
    API 31下Dex打包规则有变化,确保开启多Dex支持:
    在app模块的build.gradle中添加:

    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    dependencies {
        implementation "androidx.multidex:multidex:2.0.1"
    }
    

    执行./gradlew clean清理缓存后重新编译项目。

  • 检查资源合并设置
    确认没有模块的配置排除了startup的资源,比如android.resourcePrefix或者资源过滤规则。可以在app模块的build.gradle中添加资源配置,确保包含startup资源的语言:

    android {
        resourceConfigurations += ["en"] // 根据项目支持的语言调整
    }
    
  • 升级Android Gradle Plugin和Gradle版本
    旧版本的AGP与API 31兼容性较差,建议升级到AGP 7.0以上版本,对应Gradle 7.0以上版本,确保编译工具链适配API 31的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:35:10