android - E/Unity:DllNotFoundException:无法加载 DLL 'FirebaseCppApp-7_1_0':[已解决]
问题描述
我用 firebase 构建了一个统一游戏,然后将其导出并以 ARR 文件格式集成到现有的 Android 应用程序中。
一切都很好并且集成了,但是统一的 firebase 没有连接(它连接并按预期工作,没有与 Android 应用程序集成)。
此错误出现在运行控制台中,而不会崩溃只是未连接的firebase 请在运行控制台中出错 ,我真的需要你的帮助
提前非常感谢!:)
我通过简单地在unity导出的启动器中搜索包'FirebaseCppApp-7_1_0'成功解决了这个问题(将游戏作为独立的Android应用程序启动)。然后我把那个包的库放在我现有应用程序的同一个文件夹中。
就这样!
解决方案
这种风格的应用程序(Unity 作为库)在 Firebase SDK 中没有经过很好的测试。我会要求你在这里打开一个错误,以便团队可以优先考虑路线图上的官方支持(我相信他们会喜欢你的反馈)。
这样一来,您似乎就缺少一些本机库。具体来说,您缺少存储在Firebase/m2repository
. 由于我不知道如何导出 Unity 项目的详细信息,因此我有很多事情可以尝试。
首先,弄清楚你在你的 Android 应用程序的 gradle 项目中需要什么。最简单的方法是打开“发布设置”并检查“自定义主 Gradle 模板”和“自定义 Gradle 属性模板”:
然后强制解决依赖关系以确保您的Assets/Plugins/Android/mainTemplate.gradle
文件得到更新:
如果你然后打开你的Assets/Plugins/Android/mainTemplate.gradle
,你会在顶部有这样的东西:
maven {
url (unityProjectPath + "/Assets/GeneratedLocalRepo/Firebase/m2repository") // Assets/Firebase/Editor/AppDependencies.xml:22, Assets/Firebase/Editor/RemoteConfigDependencies.xml:20
}
以及解析器在某处发现的依赖项列表。我的看起来像这样:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// Android Resolver Dependencies Start
implementation 'com.google.android.gms:play-services-base:17.6.0' // Assets/Firebase/Editor/AppDependencies.xml:17
implementation 'com.google.firebase:firebase-analytics:18.0.2' // Assets/Firebase/Editor/RemoteConfigDependencies.xml:15
implementation 'com.google.firebase:firebase-app-unity:7.1.0' // Assets/Firebase/Editor/AppDependencies.xml:22
implementation 'com.google.firebase:firebase-common:19.5.0' // Assets/Firebase/Editor/AppDependencies.xml:13
implementation 'com.google.firebase:firebase-config:20.0.3' // Assets/Firebase/Editor/RemoteConfigDependencies.xml:13
implementation 'com.google.firebase:firebase-config-unity:7.1.0' // Assets/Firebase/Editor/RemoteConfigDependencies.xml:20
// Android Resolver Dependencies End
**DEPS**}
所以我怀疑依赖关系没有被清楚地传递,特别是*-unity
那些提供 Firebase 功能的 C++ 实现的依赖关系。我觉得这应该是一个构建错误,但我再次不熟悉“Unity as a Library”过程。要尝试的事情:
- 在您的目标项目中,确保为本地 m2 存储库添加 maven URL。这样你就可以找到你需要的 m2 依赖。
- 在您的目标项目中,添加依赖项管理器注入 Unity gradle 项目的依赖项。以确保您拥有构建中的所有内容。
有两个重要事项需要注意:
maven
URL 是绝对的。您可能不得不使用 gradle 来在您的开发环境中跨机器可靠地指定这一点。- 这些依赖项将更改每个 Firebase SDK 版本,并且必须彼此保持同步。因此,如果您必须从底部复制任何内容,则每次都必须手动进行。
推荐阅读
- c# - 扩展 Identity Server 4 功能
- python - python if循环在2个循环后停止并且没有到达第三个
- html - 在html上更改svg图像背景颜色?
- api - Yelp Tableau Web 数据连接器
- node.js - 如何在 Node.js 中重现 Bash HMAC 加密
- javascript - 使用 MySQL 和 TypeORM 从列中搜索值
- php - 带有开关盒和字符串'-0'的PHP奇怪行为
- sitefinity-10 - Sitefinity:如何在后端的标题中添加链接?
- json - 使用 pandas read_json 导入文件时遇到问题
- xcode - iphone is busy:等待设备,iphone完成后xcode将继续