Mein Projekt verwendet diese Plugins:
Diese Plugins werden in fast jedem Projekt verwendet.
Aber ich bin über Feldreferenzen count
Dies ist meine .aar Dateiliste
Was soll ich tun, um die Anzahl der Referenzen zu verringern?
Was soll ich tun, um die Anzahl der Referenzen zu verringern?
Sie haben so viele Plugins mit vielen Funktionen / Feldern. Es gibt ein Limit, wenn du dies mit dem Editor von Unity erstellst und du hast dieses Limit erreicht.
Um die Anzahl der Referenzen zu verringern, müssen Sie einige dieser Plugins löschen, aber ich bin mir sicher, dass Sie sie brauchen und das Löschen ist in diesem Fall möglicherweise nicht die richtige Lösung.
Der only Weg, dies zu umgehen und für Android zu bauen, ist exportiere das Projekt als Android-Projekt und baue es dann mit Android Studio . Dadurch wird das vom Unity-Editor festgelegte Referenzlimit entfernt.
BEARBEITEN
Ich habe vergessen zu erwähnen, dass Sie multidex aktivieren müssen, nachdem Sie es exportiert haben. Da viele Leute dieses Problem täglich behandeln, habe ich beschlossen, eine ausführliche Anleitung zur Behebung dieses Problems hinzuzufügen, indem Sie es exportieren und auch reparieren, ohne es zu exportieren .
1A .Exportieren Sie das Unity-Projekt als Android-Projekt.
1B .Im Android Studio importieren:
Wenn beim Importieren in Android Studio ein Fehler auftritt, z. B. wie folgt:
Fehler: org.gradle.api.internal.tasks.DefaultTaskInputs $ TaskInputUnionFileCollection kann nicht umgewandelt werden org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection
Ändern Sie im Block "Abhängigkeiten", der sich im Block "buildscript" in der Datei build.gradle befindet:
%Vor%bis
%Vor%Wenn Sie das Projekt exportieren und immer noch denselben Fehler erhalten, müssen Sie multidex manuell aktivieren. Im Folgenden finden Sie einen vereinfachten Schritt aus dem Google-Dokument , das Ihnen in der Fehlermeldung angezeigt wird:
2 .Fügen Sie android:name="android.support.multidex.MultiDexApplication" >
zur
Anwendung -Tag in der AndroidManifest.xml -Datei.
3 Fügen Sie compile 'com.android.support:multidex:1.0.1'
dem "Abhängigkeiten" -Block in der build.gradle -Datei hinzu.
4 Fügen Sie multiDexEnabled true
dem "defaultConfig" -Block hinzu, der sich im "android" -Block in der build.gradle -Datei befindet .
Erstellen Sie APK und sehen Sie, ob es funktioniert. Wenn der Referenzzählerfehler verschwunden ist, stoppen Sie hier.
5 .Eine GC-Overhead-Ausnahme wie die folgende erhalten?
java.lang.OutOfMemoryError: GC-Overhead-Limit überschritten
Erhöhen Sie die Größe des Zwischenspeichers, der beim Ausführen des dex-Vorgangs verwendet wird. Fügen Sie in dieser Lösung Folgendes zum Block "android" im < em> build.gradle Datei:
%Vor%Muss Unity 5.5 und höher haben, um dies zu tun:
1 .Gehen Sie zu <UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates
, Kopieren Sie die mainTemplate.gradle
-Datei in Ihren <ProjectName>Assets\Plugins\Android
-Ordner.
2 .Gehen Sie zu <UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\Apk
, Kopieren Sie die AndroidManifest.xml
-Datei in Ihr <ProjectName>Assets\Plugins\Android
3 .Öffnen Sie sowohl die Dateien mainTemplate.gradle
und AndroidManifest.xml
, die Sie gerade mit Visual Studio kopiert haben, als auch die Änderung aus der obigen Anweisung FIX BY EXPORTING THE PROJECT . Überspringen / Ignorieren Sie die Schritte # 1A und # 1B . Führen Sie einfach Schritte von # 2 zu # 5 aus. Das ist es.
Dies ist das, was das endgültige mainTemplate.gradle
sollte wie aussehen und das ist, was die endgültige AndroidManifest.xml
sollte aussehen. Dies dient nur zu Referenzzwecken. Ich schlage vor, Sie verwenden nicht meins , sondern folgen Sie stattdessen den obigen Kopierschritten, um Ihre zu erstellen, da zukünftige Unity-Versionen mit unterschiedlichen Dateien geliefert werden können. Sie möchten sicherstellen, dass Sie die neueste verwenden, oder Sie haben möglicherweise Probleme beim Erstellen.
4 .Build APK und sehen, ob es funktioniert:
-
Wenn der Referenzzählerfehler verschwunden ist, stoppen Sie hier:
5 .Wird ein Fehler wie der folgende angezeigt?
Build-Fehler Release-Builds müssen signiert werden, wenn Gradle verwendet wird
Nur signieren die apk von den Veröffentlichungseinstellungen in der Build-Einstellungen Sie können einen neuen Schlüsselspeicher erstellen oder einen vorhandenen Schlüsselspeicher verwenden.
6 .Weitere Fehler wie unten?
Fehler: Vermeiden Sie die Hardcodierung des Debug-Modus; es auslassen ermöglicht Debuggen und Releasebuilds, um automatisch einen [HardcodedDebugMode]
zuzuweisen
Entfernen Sie android:debuggable="true">
aus der AndroidManifest.xml
-Datei.
Wenn diese nicht exportierende Lösung nicht für Sie funktioniert hat, müssen Sie Verwenden Sie die Exportlösung.
IMO, die angenommene Antwort ist nicht korrekt (oder nur teilweise korrekt). Beim Exportieren eines Android-Studios wird dieses Problem nicht "magisch" behoben. Aus meiner Erfahrung heraus baut das exportierte Android-Studio-Projekt nicht immer sofort und Sie müssen viele Dinge reparieren, bevor Sie es tatsächlich erstellen können.
Sie verwenden viele Plugins und so haben Sie sich mit einem Android-Beschränkung , dass nicht mehr als 64k-Methoden referenziert werden können.
Es gibt ein paar Dinge, die Sie versuchen können, dies zu lösen: