2017-08-23 2 views
2

J'ai une question très similaire à celle décrite ici: Using Fabric with Multidex with an exported Unity projectActivation Multidex dans un projet Unity Android avec Crashlytics

le tissu et Multidex (pour les versions Android plus) nécessitent l'ajout d'une sous-classe d'application à la balise d'application du fichier AndroidManifest.xml . Mais je ne peux pas les inclure sans erreur, et je n'ai accès à aucune de ces classes pour les modifier et modifier la hiérarchie d'héritage.

(I need both of these together.) 
<application ... android:name="android.support.multidex.MultiDexApplication"> 
<application ... android:name="io.fabric.unity.android.FabricApplication"> 

Notre build utilise Gradle (assez récemment pris en charge dans Unity) si cela ouvre des avenues.

Comment puis-je contourner ce problème? Je suis ouvert à la décompilation et à la reconstruction des fichiers jars, mais jusqu'à présent, tous mes efforts pour décompiler le fabric-init.jar (qui contient la sous-classe Application) ont échoué.

+1

Je trouve que c'est un dup. Il semble que vous ayez le problème "trop ​​de références de champ * et que vous souhaitiez activer Multidex pour cette raison." Une autre solution consiste à utiliser ProGuard comme suggéré à partir de l'autre réponse dans [this] (https://stackoverflow.com/q/ 42582850/3785314) question: si ProGuard ne le réduit pas suffisamment, continuez avec votre solution Multidex – Programmer

+0

Nous sommes au point où nous avons réduit tout ce que nous pouvons et nous passons à Multidex. "comment activer multidex", c'est "comment activer multidex dans un projet Unity Android qui utilise également Crashlytics - ou Fabric" .Le problème est que l'activation de ces deux provoque des conflits avec l'implémentation de l'autre – vargonian

+0

Ok je suis juste Assurez-vous d'avoir essayé ProGuard. – Programmer

Répondre

0

Vous pouvez utiliser la coutume Application classe avec contenu suivant:

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); 
} 

En outre, une solution plus vous pouvez vérifier ici, je créé une petite GitHub repo avec la description comment le faire en quelques clics.