2017-03-23 32 views
1

我已导出Unity项目以便能够使用multidex。问题是我必须在项目的androidmanifest中将android:name设置为“android.support.multidex.MultiDexApplication”,当我已经为该结构设置了这个“io.fabric.unity.android.FabricApplication”时。使用Fabric with Multidex与导出的Unity项目

我试过手动初始化结构,但后来我得到这个错误: AndroidJavaException:io.fabric.unity.android.FabricInitializationException:结构没有找到有效的应用程序上下文。

我发现,有人也有类似的问题,但它并没有得到有效解决:事先 https://twittercommunity.com/t/unity-android-plugin-conflicts/79947?source_topic_id=83751

感谢您的帮助!

+0

你确定你需要更改名称吗?我有一个类似的设置,并没有改变它在清单,一切工作正常。 – turnipinrut

+0

嗨@turnipinrut,是的,它是Android 4.x用户需要的,否则会导致崩溃 – azekirel555

回答

2

下一行添加到您的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项目。 导入的Fabric-(某些版本).jar和Fabric-init.jar我从Unity项目中的android插件文件夹中获得。

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

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

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

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

测试在android 4.4中,它的工作。 虽然不是很理想,但因为每次插件更新都需要这样做,但考虑到我是这个gradle事物(以及一般的Android项目)的小菜鸟,至少它的工作起来我感到非常高兴。

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

+0

第一步(创建Android Studio项目)是否必要,或者您是否可以通过反编译fabric-init.jar并修改包含在?中的FabricApplication.java类。 – vargonian

+0

另外,你用什么工具反编译?作为一个Android n00b我自己,我很难遵循确切的步骤(特别是Android Studio相关的步骤)。 – vargonian