2017-03-23 54 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