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

Android Studio出现java.lang.IllegalAccessError问题求助

解决 java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.' is inaccessible 问题

我来帮你梳理这个问题的解决思路,你遇到的是典型的库版本兼容性冲突问题:

问题还原

你提到已查阅相关问题并尝试方案但无效,触发错误的代码行:

InstanceID instanceID = InstanceID.getInstance(LoginActivity.this);

对应的错误日志:

java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.' is inaccessible to class 'com.google.android.gms.iid.zzd'

你的build.gradle开头配置:

apply plugin: 'com.android.application'
android {
    compileSd...

错误根源分析

这个报错本质是Android Support库与Google Play Services库的版本不兼容:com.google.android.gms.iid.zzd(属于Play Services的InstanceID模块)尝试访问ContextCompat的方法,但由于两者版本不匹配,导致权限访问被阻断。

具体解决方案

1. 统一依赖版本(适配旧Support库)

如果你的项目还在使用旧版Android Support库,要确保所有Support库依赖版本完全一致,同时搭配与之兼容的Play Services版本:

dependencies {
    // 确保所有Support库版本统一
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    
    // 使用与Support库兼容的Play Services版本
    implementation 'com.google.android.gms:play-services-iid:17.0.0'
}

2. 迁移到AndroidX(推荐长期方案)

Google已停止维护旧Support库,新版本Play Services更适配AndroidX,迁移步骤如下:

  • 在项目根目录的gradle.properties中添加:
    android.useAndroidX=true
    android.enableJetifier=true
    
  • 将所有com.android.support:开头的依赖替换为对应AndroidX依赖,比如com.android.support:support-v4替换为androidx.core:core:1.10.1
  • 同步项目后重新运行

3. 清理缓存并重建项目

修改依赖后务必执行以下操作,避免缓存干扰:

  • 点击Android Studio菜单栏 File -> Invalidate Caches... -> Invalidate and Restart
  • 在终端执行命令:./gradlew clean build

额外优化建议

注意:InstanceID已被Google弃用,如果你使用推送服务,建议替换为Firebase的新API,彻底避免版本兼容问题:

// 替换原InstanceID代码为Firebase Token获取逻辑
String token = FirebaseMessaging.getInstance().getToken().getResult();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:46:00