我目前正在使用Unity创建我的游戏,现在正在实现用户账号系统。usernamepassword的sendreceive方法在Editor中完全正常,但是当我在Android上构建时,logcat给我问题标题中的错误(DllNotFound)。
很明显DLL没有丢失,是吗?否则在单机的desktopEditor上就不能用了?如果是这样,我假设它没有被内置到Unity.apk中,不管是什么原因。有人知道原因吗?我在网上没有找到任何有用的资源,因为我遇到的所有类似问题都是关于根本没有功能,而不是跨平台的分割功能。
有什么原因会让Unity在Editorstandalone中识别一个DLL,而在Android构建中不识别呢? (问题中的.dll位于/Assets/Firebase/Plugins/x86_64,如果这有帮助的话)。
你的解决办法可能是在Android解析器中运行强制解析。
这应该会给你提供你需要的文件,作为以下文件的一部分 firebase-app-unity
:
我的推理。
Unity SDK实际上为iOS、Android、MacOS、Windows和Linux提供了大约5个原生库(加上不同架构的变体&c)。FirebaseCppApp库是一些Firebase功能的C++实现。如果你在你列出的文件夹里找,你会看到一堆针对不同编辑器平台的库文件夹。
╰─$ ls -al | fgrep -v .meta
total 558360
drwxr-xr-x@ 14 martinpatrick primarygroup 448 May 8 10:06 .
drwxr-xr-x 25 martinpatrick primarygroup 800 May 8 10:18 ..
-rwxrwxr-x@ 1 martinpatrick primarygroup 48236 Dec 4 2016 FirebaseCppAnalytics.bundle
-rwxrwxr-x@ 1 martinpatrick primarygroup 355840 Dec 4 2016 FirebaseCppAnalytics.dll
-rwxrwxr-x@ 1 martinpatrick primarygroup 226136 Dec 4 2016 FirebaseCppAnalytics.so
-rwxrwxr-x@ 1 martinpatrick primarygroup 23186972 Dec 4 2016 FirebaseCppApp-6_14_0.bundle
-rwxrwxr-x@ 1 martinpatrick primarygroup 7526400 Dec 4 2016 FirebaseCppApp-6_14_0.dll
-rwxrwxr-x@ 1 martinpatrick primarygroup 254502608 Dec 4 2016 FirebaseCppApp-6_14_0.so
bundle
是OSX的。dll
是针对Windows的,而 so
是针对Linux的。
显然,这缺少了iOS和Android变体的SDK。
原生的iOS和Android包是通过外部依赖管理器为你拉进来的(见此职位,Play Services Resolver是旧名)。) 当它运行时,它会寻找一个与模式匹配的文件 *Dependencies.xml
并开始寻找要拉入的本地库。
Firebase包含一个本地Android maven仓库,地址是 Assets/Firebase/m2repository
其中包含 firebase-app-unity-6.14.0.srcaar
与Android C++实现。如果你没有使用gradle来解决依赖关系,它应该将必要的组件复制到 Assets/Plugins/Android
根据你在解析器中的设置,在构建过程中会出现。
请注意,如果你使用的是gradle,这个包会被添加到你的 mainTemplate.gradle
. 如果没有提到它,就可能出了问题。
--帕特里克