我已经在Unity 2018.2.1f1中使用Mapbox SDK创建了基于位置的游戏,并且它能够很好地构建。我的目标是通过使用Firebase在我的项目中添加数据库功能,以在线存储GPS坐标。
我按照官方教程在Unity项目中设置Firebase。完成此操作后,会弹出一个窗口,显示“正在解决Android依赖关系”,此过程耗时约半小时。
从那时起,我一直无法构建到我的Android设备。我收到96 gradle构建错误,顶部的是:
> No toolchains found in the NDK toolchains folder for ABI with prefix:
mips64el-linux-android"
我将项目还原到Firebase之前的版本,但它仍然无法构建,就好像Android生成工具中的某些内容已更改一样。
接下来,我尝试了完全不同的Unity版本,并安装了全新安装的Unity 2019.2.9f1。我选择使用此版本的Unity内置Android SDK和NDK。我将项目还原为上一个已知的工作版本(Firebase之前的版本),将其移植到新版本的Unity,并在继续进行之前成功完成了对设备的构建。
然后,我按照适当的步骤再次将Firebase添加到我的项目中,并且在Unity中出现了完全相同的弹出窗口,声称它检测到希望删除的“过时文件”(这次我拒绝了),然后执行相同的“解决Android依赖关系”过程。
此过程完成后,我没有进行其他更改,并尝试再次构建。它失败了,并且我收到了相同的96 gradle构建错误。这确认了此错误在Unity的两个不同版本上是可重复的。
我认为这与Mapbox和Firebase之间相互冲突的依赖关系有关。有没有人遇到过这个问题,或者成功地在项目中一起使用了这两件事?
答案 0 :(得分:1)
因此,基线问题是某些事情告诉Android生成过程为MIPS架构生成项目文件。该架构已从r17中的官方NDK中删除(有关受支持的架构,请参见this link)。我不确定Unity是否支持它,但是当前版本中不支持它:
我不知道MapBox的包装和运输方式,因此我不完全了解MapBox和Firebase之间可能有哪些后处理挂钩。不过,我会尝试为您提供一些步骤。
首先,请确保您拥有Firebase和MapBox中的最新SDK。另外,当它要求删除过时的文件时,请说是。 Play Services解析器只应提示其跟踪的文件(Firebase插件以预期的状态提供)。
如果那没有帮助,请查找Unity项目中包含的mips文件夹(可能是libs / mips或jnilibs / mips之类的东西)。希望删除这些内容可以解决此问题。
如果以上操作无效或不可操作,请尝试使用mainTemplate.gradle文件:
如果按照我写的here的说明进行操作,以指示Play服务解析器修补mainTemplate.gradle文件:
您可以直接在文件中仔细检查ABI过滤器。默认情况下,它显示:
ndk {
abiFilters **ABIFILTERS**
}
匹配您在Unity中选择的内容。但是您可以使用它再次检查是否通过其他过程未包含mips64。
不幸的是,如果以上两个选项都不起作用,我不知道还有什么建议。在这种情况下,我建议您发布更多您遇到的错误。如果您可以重现Firebase sample projects中的一个错误,则可以对该issue tracker directly提出问题。最后,如果您在此处没有找到答案,并且确实认为与Firebase有关,则也可以与Firebase support联系。
我希望我的帖子有帮助!
-帕特里克