在导出的 Unity 项目中使用带有 Multidex 的 Fabric
Posted
技术标签:
【中文标题】在导出的 Unity 项目中使用带有 Multidex 的 Fabric【英文标题】:Using Fabric with Multidex with an exported Unity project 【发布时间】:2017-03-23 08:45:32 【问题描述】:我已经导出了我的 Unity 项目以便能够使用 multidex。问题是当我已经为织物设置了这个“io.fabric.unity.android.FabricApplication”时,我必须将项目的 androidmanifest 中的 android:name 设置为“android.support.multidex.MultiDexApplication”。
我曾尝试手动初始化 Fabric,但随后出现此错误: AndroidJavaException: io.fabric.unity.android.FabricInitializationException: Fabric 没有找到有效的应用程序上下文。
我发现有人遇到了类似的问题,但没有得到解决: https://twittercommunity.com/t/unity-android-plugin-conflicts/79947?source_topic_id=83751
提前感谢您的帮助!
【问题讨论】:
您确定需要更改名称吗?我有类似的设置,并没有在清单中更改它,一切正常。 嗨@turnipinrut,是的,Android 4.x 用户需要它,否则会导致崩溃 【参考方案1】:在Application
方法中添加下一行:
protected void attachBaseContext(Context base)
super.attachBaseContext(base);
// this one is needed to enable multidex in your application
MultiDex.install(this);
public void onCreate()
super.onCreate();
// this one is needed to init the Fabric SDK
FabricInitializer.initializeFabric(this, FabricInitializer.Caller.Unity);
另外,您可以在此处查看另一个解决方案,我创建了一个小的 GitHub repo,并说明了如何通过几次点击来完成。
【讨论】:
【参考方案2】:遇到同样的问题。
最终创建了一个新的 android studio 项目。 导入了我从 Unity 项目中的 android plugins 文件夹中获得的 Fabric-(some version).jar 和 Fabric-init.jar。
反编译 Fabric-init.jar 并修改 FabricApplication.java 类,以便从 MultiDexApplication 而不是 Application 扩展。
构建项目并从 Android Studio 项目/应用的构建文件夹中提取新的 FabricApplication.class。
将Unity项目的Fabric-init.jar中的FabricApplication.class替换为新的。
将“io.fabric.unity.android.FabricApplication”作为清单中的应用程序名称。
在 android 4.4 中测试,它工作正常。 虽然不理想,因为我必须在每次插件更新时都这样做,但考虑到我是这个 gradle 东西(以及一般的 Android 项目)的菜鸟,我很高兴至少它有效。
如果有人提出更好的方法,请告诉我们!
【讨论】:
第一步(创建 Android Studio 项目)是否必要,或者您是否可以仅通过反编译 fabric-init.jar 并修改其中包含的 FabricApplication.java 类来完成此操作? 另外,你用什么工具反编译的?作为一个 Android n00b 自己,我很难遵循确切的步骤(尤其是与 Android Studio 相关的步骤)。以上是关于在导出的 Unity 项目中使用带有 Multidex 的 Fabric的主要内容,如果未能解决你的问题,请参考以下文章