Android对接Unity的GPS插件导入play-services AAR后编译报错
问题原因
- Google Play Services系列库存在多级传递依赖,你单独下载的
play-services-maps和play-services-locationAAR本身不包含公共基础组件。报错中提到的com.google.android.gms.common.internal.ReflectedParcelable类属于play-services-base库,这是所有play服务组件都依赖的公共基础包,你当前的依赖配置中缺少该包所以编译失败。 - 仅导入直接依赖的AAR会持续遇到缺失类的问题,除了base包之外,后续还可能缺少
play-services-basement、play-services-tasks等依赖包。
解决方案
方案1:补全所有传递依赖的本地AAR
你需要把play-services-maps:17.0.0和play-services-location:17.0.0的所有传递依赖都下载下来放到libs目录:
- 必须补充的核心依赖包对应版本:
com.google.android.gms:play-services-base:17.0.0com.google.android.gms:play-services-basement:17.0.0com.google.android.gms:play-services-tasks:17.0.0
若后续还有缺失类,可查询对应版本play服务组件的pom文件,获取完整的传递依赖列表逐一补全。
- 依赖配置无需调整,直接把这些AAR放进libs目录即可,也可以把本地依赖写法简化为
implementation fileTree(dir: 'libs', include: ['*.aar'])批量导入所有libs下的AAR。
方案2:修复Unity自动导入远程依赖的问题(更推荐,避免手动维护依赖)
Unity本身支持导入带依赖声明的Android库,不需要手动下载AAR,只需做如下配置即可让Unity自动拉取play服务依赖:
- 你的Android库模块保持用远程依赖的配置编译,编译出AAR后,保留模块下的
consumer-rules.pro中所有play服务的keep规则。 - 在Unity项目的
Assets/Plugins/Android目录下新建mainTemplate.gradle文件,在dependencies节点加入原来的远程依赖配置:
implementation 'com.google.android.gms:play-services-maps:17.0.0' implementation 'com.google.android.gms:play-services-location:17.0.0'
- 打开Unity的Player Settings→Android→Publishing Settings,勾选「Custom Main Gradle Template」,让Unity使用你修改的gradle模板进行构建,就会自动拉取所有依赖。
内容的提问来源于stack exchange,提问作者forstack overflowizi
相关产品推荐
相关产品推荐

