python - Unity Firebase 插件失败(加载 Python DLL 时出错:错误代码 14001)
问题描述
我想使用 Firebase Analytics在 Unity 中构建我的ANDROID游戏。但是,当我按照文档和说明操作时,在 google-services.json 到 google-services.xml 操作期间,它失败并说:
Generation of the Firebase Android resource file google-services.xml from Assets/google-services.json failed.
If you have not included a valid Firebase Android resources in your app it will fail to initialize.
`E:/UnityProjects/Seven/Assets\..\Assets/Firebase/Editor/generate_xml_from_google_services_json.exe -i "Assets/google-services.json" -l`.
Error loading Python DLL: C:\Users\ftb\AppData\Local\Temp\_MEI59722\python27.dll (error code 14001)
因此,它永远不会提取我的包名进行初始化,然后它就会崩溃。
环境
操作系统: Windows 7
Unity 版本: 2019.2.16f1(Android Build Support 和 IOS Build Support)
视觉工作室安装:
Firebase SDK: Firebase Unity SDK 6.8.0 (dotnet4)
包: FirebaseAnalytics.unitypackage
我试过的
1-我怀疑并检查了 google-services.json。该文件是正确的(从firebase仪表板下载)
2-我已经安装了 dotnet3 firebase sdk 包,但失败了。
3-我通过cmd触发了generate_xml_from_google_services_json.exe文件,然后得到了与unity相同的结果(加载Python DLL时出错:C:\Users\ftb\AppData\Local\Temp_MEI59722\python27.dll(错误代码14001))
4-我在没有任何参数的情况下触发了 generate_xml_from_google_services_json.exe(没有这个:-i "C:\gsoogle-services.json" -l),然后它完全响应相同的结果,“加载 Python DLL 时出错”
5-我将Firebase SDK附带的所有“编辑器”文件夹移动到另一台机器(Windows Server 2016)并通过cmd触发google_services_json.exe,然后它成功提取了我的包名,没有错误
6-安装了Windows提供的几个可再发行包,尝试并失败。
7-安装了 Visual Studio 构建工具、Visual Studio Community 2017、C++ 和桌面构建工具,尝试过但失败了。
8- Windows 7 是最新的。已安装所有更新
9-安装python27,python36
10- 将 python27.dll 复制到 System、System32 和 SysWOW64 windows 文件夹。它仍然失败。
根据上面的列表,我认为问题出在我电脑的环境设置或操作系统上。所有问题都在执行 generate_xml_from_google_services_json.exe 文件。它所做的只是将 google-services.json 转换为 google-services.xml
是否无法在 Windows 7 上使用 Firebase Unity SDK?有没有办法解决这个问题?
解决方案
从另一个Stack Overflow 问题来看,这似乎是一个可能与 Windows 7 相关的错误。
简而言之,Firebase 的部分预处理管道确实依赖 Python(正如您可能推断的那样)。在 MacOS 和 Linux 上,假设您的操作系统安装和维护了 python(这可能是一个非常安全的假设)。在 Windows 上,虽然运行 Visual Studio 的 Windows 开发人员可能已经安装了 Python,但这远不能保证(如果已安装,则不能保证在$PATH
&c 中)。
大多数 Firebase 用户的最佳解决方法是构建和部署 Python 环境来运行此工具。看起来这个过程生成了一个可以在较新版本的 Windows 但不一定是 Windows 7 上运行的文件。您可以通过安装较新的 Windows CRT 立即解决这个问题(例如,这个 可能工作),但那是远非理想的体验。
看起来最好的解决方案可能就像让 firebase 团队使用 构建一样简单--win-private-assemblies
,但它也可能涉及更多。出于这个原因,我会要求您直接在 Firebase 支持上提交票证,或者在Firebase Unity GitHub存储库上提交问题,以便遇到这篇文章的其他人可以遵循该过程。
我希望这有帮助!
——帕特里克
推荐阅读
- for-loop - Racket 中的嵌套“for”循环显示错误“不是程序”
- javascript - 如何添加一个EventListener,在点击后删除一个li?
- typescript - 为什么我不能在与其他键的接口中使用枚举作为键
- ios - WatchOS SwiftUI 动画视图调整父级大小
- c++ - 设置一个等于 {} 的向量;
- r - 用 NA 替换自定义值
- database - Jira/Confluence 数据中心版是否支持主-主数据库集群?
- android-studio - 放在 android.util.SparseArray 中的方法未模拟
- javascript - 转换 json 数组以用作谷歌地图标记
- sql - SQL 只取列中的数值