无法导入Google Analytics相关文件的技术求助
我看了你提供的模块和项目级Gradle配置,已经添加了play-services-analytics:11.6.2依赖但还是没法导入相关类,而且新项目能正常用,那咱们从这几个方向排查试试:
1. 修复支持库版本强制统一的冲突
你在configurations.all里把所有com.android.support库强制改成了25.3.0,但你的compileSdkVersion是26,依赖里还加了26.1.0版本的support库,这会导致依赖树混乱,甚至可能间接影响Google Play Services库的正常解析——毕竟Analytics属于Play Services的一部分,依赖冲突会让它没法正确被引入。
解决办法:
把强制的support库版本改成和你依赖的版本一致的26.1.0,或者如果不需要强制统一的话直接删掉这个规则。修改后的代码如下:
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '26.1.0' // 和依赖中的support库版本对齐 } } } }
2. 规范Google Maven仓库配置
你现在把Google仓库放在模块级的repositories里,虽然能生效,但更规范的做法是把它移到项目级build.gradle的allprojects块中,这样所有模块都能共享这个仓库,避免依赖解析时出现问题:
allprojects { repositories { jcenter() maven { url 'https://maven.google.com/' } maven { url 'https://maven.fabric.io/public' } } }
之后模块里的repositories就可以删掉重复的仓库配置了。
3. 清理缓存并重新同步依赖
有时候Gradle的缓存会抽风,导致依赖没有正确下载到本地。你可以按以下步骤操作:
- 点击Android Studio右上角的「Sync Project with Gradle Files」按钮重新同步
- 执行
File -> Invalidate Caches / Restart,清理AS缓存并重启 - 手动删除项目根目录下的
.gradle文件夹,再重新同步项目
4. 检查ProGuard规则(可选)
虽然你现在的minifyEnabled都是false,但如果之前开启过混淆,可能规则里不小心把Analytics的类给处理了。可以在proguard-rules.pro里加上这条规则,确保Analytics类不会被混淆:
-keep class com.google.android.gms.analytics.** { *; }
5. 确认Google Services插件版本兼容性
你的项目级Gradle用的com.google.gms:google-services:3.1.1和play-services-analytics:11.6.2是兼容的,但如果前面的步骤都没用,可以尝试把插件版本升级到3.2.1(这个版本适配11.8.0及以下的Play Services版本),不过先优先排查前面的问题,版本升级放在最后尝试。
另外要注意,apply plugin: 'com.google.gms.google-services'必须放在dependencies块之后,你的配置这点是对的,不用改。
按照上面的步骤一步步来,应该就能解决无法导入Google Analytics相关类的问题了。
内容的提问来源于stack exchange,提问作者Anindya Pal

