无法同时使用Firebase和Mapbox构建项目

时间:2019-11-01 18:10:25

标签: android firebase unity3d mapbox

我已经在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之间相互冲突的依赖关系有关。有没有人遇到过这个问题,或者成功地在项目中一起使用了这两件事?

1 个答案:

答案 0 :(得分:1)

因此,基线问题是某些事情告诉Android生成过程为MIPS架构生成项目文件。该架构已从r17中的官方NDK中删除(有关受支持的架构,请参见this link)。我不确定Unity是否支持它,但是当前版本中不支持它: Target Architectures screenshot showing only ARM and x86

我不知道MapBox的包装和运输方式,因此我不完全了解MapBox和Firebase之间可能有哪些后处理挂钩。不过,我会尝试为您提供一些步骤。

首先,请确保您拥有FirebaseMapBox中的最新SDK。另外,当它要求删除过时的文件时,请说是。 Play Services解析器只应提示其跟踪的文件(Firebase插件以预期的状态提供)。

如果那没有帮助,请查找Unity项目中包含的mips文件夹(可能是libs / mips或jnilibs / mips之类的东西)。希望删除这些内容可以解决此问题。

如果以上操作无效或不可操作,请尝试使用mainTemplate.gradle文件: Screenshot of Settings for Android showing Custom Gradle Template under Publishing Settings, Build

如果按照我写的here的说明进行操作,以指示Play服务解析器修补mainTemplate.gradle文件: Patch mainTemplate.gradle checked

您可以直接在文件中仔细检查ABI过滤器。默认情况下,它显示:

ndk {
    abiFilters **ABIFILTERS**
}

匹配您在Unity中选择的内容。但是您可以使用它再次检查是否通过其他过程未包含mips64。

不幸的是,如果以上两个选项都不起作用,我不知道还有什么建议。在这种情况下,我建议您发布更多您遇到的错误。如果您可以重现Firebase sample projects中的一个错误,则可以对该issue tracker directly提出问题。最后,如果您在此处没有找到答案,并且确实认为与Firebase有关,则也可以与Firebase support联系。

我希望我的帖子有帮助!

-帕特里克