在导出的 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的主要内容,如果未能解决你的问题,请参考以下文章

工具篇Unity导出粒子模型序列帧Png带有透明通道

为啥我的搅拌机 .fbx 文件没有导出到 Unity?

如何将项目从 Blender 导出到 Unity?

将 Unity3D 项目导出并运行到 Android Studio

Unity 之 如何删除Unity项目里面没用的东西??

AR入门系列-03-在unity中将调试好的Vuforia项目导出为APK