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
相关产品推荐
相关产品推荐

