使用带有Multidex的Fabric和导出的Unity项目

时间:2017-03-23 08:45:32

标签: android manifest unity5 crashlytics twitter-fabric

我已导出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

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

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,其中包含如何通过几次点击进行操作的说明。

答案 1 :(得分:2)

遇到了同样的问题。

结束创建一个新的android工作室项目。 我从Unity项目中的android插件文件夹中导入的Fabric-(某些版本).jar和Fabric-init.jar。

对Fabric-init.jar进行了反编译并修改了FabricApplication.java类,以便从MultiDexApplication而不是Application扩展。

构建项目并从Android Studio项目/ app中的build文件夹中提取新的FabricApplication.class。

将Unity项目的Fabric-init.jar中的FabricApplication.class替换为新项目。

将“io.fabric.unity.android.FabricApplication”留作清单中的应用程序名称。

在android 4.4中测试过并且有效。 虽然不是很理想,因为我必须对每个插件更新都这样做,但考虑到我是这个gradle事物(和一般的Android项目)的菜鸟,我很高兴至少它起作用了。

如果有人想出更好的方法,请告诉我们!