Beim Ausführen oder Debuggen meines Spiels auf einem Android-Gerät wird im Logcat der folgende Fehler angezeigt:
com.badlogic.gdx.utils.GdxRuntimeException: Fehler beim Lesen der Datei: data / fonts / myFont.ttf (Intern)
Welches wird durch diese Codezeile erstellt:
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
wo fontFile
ist so definiert:
FileHandle fontFile = Gdx.files.internal("data/fonts/myFont.ttf");
Dies passiert nicht, wenn ich die Desktop-Konfiguration ausführe.
Ich weiß, dass Sie für die Desktop-Konfiguration das Arbeitsverzeichnis Ihres Projekts definieren müssen, aber ich sehe eine solche Option in der Android-Konfiguration nicht und es macht auch keinen Sinn, daher denke ich nicht, dass es sich um ein Problem im Zusammenhang mit dem "Arbeitsverzeichnis" handelt .
Offensichtlich befindet sich die Datei im richtigen Pfad.
Beachten Sie auch, dass in meinem vorherigen Projekt alles gut funktioniert hat. Ich habe dieses neue Projekt erstellt, indem ich mit libgdx-setup ein neues leeres prj erstellt und dann alle Klassen und Pakete aus dem älteren Projekt kopiert habe. Vielleicht ist es ein Problem im Zusammenhang mit einer Gradle-Datei?
FileNotFoundException
? Android-Dateisystem unterscheidet zwischen Groß- und Kleinschreibung. Stellen Sie sicher, dass Sie es richtig geschrieben haben. "MyFont.ttf" unterscheidet sich von "myFont.TTF"Antworten:
Wenn Ihr Test-Desktop-Dateisystem unter Windows NTFS ausgeführt wird und das Android-Gerätedateisystem auf Android nativ ist, liegt der Unterschied in den Dateisystemtreibern.
Die Windows-Dateisystemtreiber unterscheiden nicht zwischen Groß- und Kleinschreibung, Android verwendet jedoch Linux, bei dem zwischen Groß- und Kleinschreibung unterschieden wird.
Stellen Sie sicher, dass Ihre Groß- und Kleinschreibung in der Datei korrekt ist.
Außerdem habe ich festgestellt, dass Sie einen absoluten Pfad ohne Umgebungsvariable verwenden. Dies ist dynamisch für Ihr aktuelles Arbeitsverzeichnis unter Android. Wenn die App in einem anderen Verzeichnis ausgeführt wird, sucht sie an einer anderen Stelle nach der Datei. Dies kann zu Problemen zwischen verschiedenen Systemrevisionen führen. Geben Sie in Android immer absolute Pfade an. Dies bedeutet, dass Sie entweder mit einer Umgebungsvariablen oder dem Stammverzeichnis (dh "/") beginnen. Um die App auf eine SD-Karte verschieben zu können, ist es besser, die Umgebungsvariablen zu verwenden.
Außerdem sollten Sie das dynamische Datenverzeichnis nicht für Ihre Schriftart verwenden. Sie sollten es in das Paket Ihrer App bündeln.
quelle
Ich glaube, für Android müssen Sie einen Assets-Ordner haben, in den alle Assets geladen sind. Dieser Assets-Ordner befindet sich eher im Android-Projekt als im Kernprojekt. Desktop, HTML usw. verwenden alle Kernprojekt-Assets, damit sie einwandfrei funktionieren, aber Android benötigt einen eigenen Assets-Ordner. hast du eins dafür
quelle
Die Optionen sind:
1) Versuchen Sie TTF-Großbuchstaben anstelle von ttf in Ihrem gesamten Code - falls Ihre Originaldatei das TTF-Suffix hat, da bei Android zwischen Groß- und Kleinschreibung unterschieden wird.
2) Stellen Sie in der Datei build.gradle unter Ihrem Android-Modul Folgendes sicher:
Und nicht:
Mit anderen Worten, stellen Sie sicher, dass es sich um Ihren Android-Assets-Ordner handelt. Dieser hat für mich gearbeitet. Bereinigen Sie dann das Build-Projekt und deinstallieren Sie die alte App vom Android-Gerät.
quelle
Versuchen Sie, die Schriftdateien direkt in den Assets-Ordner zu kopieren.
quelle
Tun Sie einfach eine Sache, Sie können die Methode ändern, die Sie jetzt folgen. Sie können das "Hiero" -Tool für die Erstellung von Schriftarten verwenden. Laden Sie einfach die JAR-Datei "Hiero" über den folgenden Link herunter
https://libgdx.badlogicgames.com/tools.html
Mit Hiero können Sie auf fast alle Schriftarten zugreifen. Nachdem Sie die Schriftarten erstellt haben, speichern Sie sie im Ordner "Asset" Ihrer Android-Projektdateien und fügen Sie den folgenden Code hinzu.
Probieren Sie einfach diese Methode aus. es wird klappen.
quelle
FreeTypeFontGenerator
Sie eine beliebige Schriftart importieren und in beliebiger Größe damit schreiben. In Hiero müssen Sie Bitmaps für jede Schriftart und Größe generieren. Ich stimme zu, dass Hiero ein großartiges Werkzeug ist, aber dies beantwortet die Frage nicht.Stellen Sie sicher, dass sich die Dateien in / android / Assets befinden.
quelle