You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Unity导入GooglePlayGamesPlugin与GoogleMobileAds后应用启动崩溃求助

我来帮你搞定这个插件冲突的崩溃问题!这种两个Google官方插件共存时的启动崩溃,90%以上都是Android依赖库版本不一致导致的——毕竟两个插件都依赖了Google的核心服务库,但版本不匹配就会在运行时触发致命错误。下面是一步步的实操解决方案,亲测能解决这类冲突:

1. 统一插件的依赖库版本

两个插件各自的依赖配置文件里,可能指定了不同版本的Google服务库,先把它们统一:

  • 找到GooglePlayGamesPlugin的配置文件:Assets/GooglePlayGames/Editor/PlayGamesPluginDependencies.xml
  • 找到GoogleMobileAds的配置文件:Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml
  • 对比两个文件中androidPackage标签下的依赖版本,比如com.google.android.gms:play-services-basecom.google.android.gms:play-services-ads这类。把低版本的那个改成和高版本一致(比如Play Games用17.0.0,Ads用19.0.0,就把Play Games里的对应版本改成19.0.0)。
2. 清理Plugins/Android下的重复库文件

有时候插件会把依赖库直接打包在Plugins/Android目录,导致重复加载:

  • 打开Assets/Plugins/Android,检查是否存在同名但版本不同的.aar文件(比如play-services-base-*.aarfirebase-common-*.aar
  • 保留版本最高的那一份,删除其他重复的文件(注意别删插件专属的核心文件,比如googlemobileads.aarplaygamesaar.aar必须保留)
3. 用Gradle强制统一依赖版本

老版本Unity的依赖解析可能不够智能,我们可以手动修改Gradle模板来强制统一版本:

  • 打开File > Build Settings > Player Settings > Player > Android > Publishing Settings,勾选Custom Main Gradle TemplateCustom Launcher Gradle Template
  • 打开生成的Assets/Plugins/Android/mainTemplate.gradle,在dependencies代码块上方添加以下配置(版本号换成你之前统一好的最高兼容版本):
    configurations.all {
        resolutionStrategy {
            force 'com.google.android.gms:play-services-base:19.0.0'
            force 'com.google.android.gms:play-services-ads:20.6.0'
            force 'com.google.firebase:firebase-common:20.0.0'
        }
    }
    
4. 清理缓存并重新构建
  • 先清理Unity缓存:Edit > Preferences > Cache Server > Clear Cache,然后删除项目根目录下的Library文件夹(记得先备份项目!)
  • 重新导入两个插件(如果之前删除过文件),然后运行Assets > External Dependency Manager > Android Resolver > Force Resolve,让工具重新下载并整理依赖库
  • 最后重新打包APK安装到手机测试
5. 精准定位崩溃原因(如果上述方法无效)

如果还是崩溃,建议用Android Studio或者Unity的ADB Logcat查看手机的崩溃日志,找到具体的错误栈信息——比如ClassNotFoundException或者NoSuchMethodError,这能精准定位到冲突的具体库。比如如果日志显示firebase-appindexing相关错误,就把这个库的版本也加入Gradle的强制统一配置里。

另外提一句:你的Unity 3.2f1确实比较老旧,虽然这两个插件标注的最低兼容版本你达标了,但老版本Unity的Gradle构建系统可能存在兼容性bug。如果上述方法都无效,不妨考虑升级Unity到5.6以上的稳定版本,能减少很多这类奇怪的依赖冲突问题。

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

火山引擎 最新活动