Lors de l'exécution ou du débogage de mon jeu sur un appareil Android, j'obtiens cette erreur dans le logcat:
com.badlogic.gdx.utils.GdxRuntimeException: erreur de lecture du fichier: data / fonts / myFont.ttf (interne)
Qui est créé par cette ligne de code:
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
où fontFile
est défini comme ceci:
FileHandle fontFile = Gdx.files.internal("data/fonts/myFont.ttf");
Cela ne se produit pas lorsque j'exécute la configuration du bureau.
Je sais que pour la configuration du bureau, vous devez définir le répertoire de travail de votre projet, mais je ne vois pas une telle option dans la configuration Android et cela n'a pas de sens, donc je ne pense pas que ce soit un problème lié au "répertoire de travail" .
De toute évidence, le fichier est dans le bon chemin.
Notez également que tout a bien fonctionné dans mon projet précédent. J'ai créé ce nouveau projet en créant un nouveau prj vide à l'aide de libgdx-setup, puis en copiant toutes les classes et les packages de l'ancien projet. Alors peut-être que c'est un problème lié à un fichier Gradle?
FileNotFoundException
? Le système de fichiers Android est sensible à la casse, assurez-vous que vous l'avez écrit correctement "myFont.ttf" est différent de "myFont.TTF"Réponses:
Si votre système de fichiers de bureau de test s'exécute sur Windows NTFS et que le système de fichiers du périphérique Android est natif Android, la différence réside dans les pilotes du système de fichiers.
Les pilotes du système de fichiers Windows ne sont pas sensibles à la casse mais Android utilise Linux qui est sensible à la casse.
Assurez-vous que votre capitalisation est correcte dans le fichier.
De plus, j'ai remarqué que vous utilisiez un chemin absolu sans variable environnementale. Ceci est dynamique pour votre répertoire de travail actuel sur Android. Par conséquent, si l'application est exécutée à partir d'un répertoire différent, elle cherchera un emplacement différent pour le fichier. Cela pourrait provoquer des problèmes entre les différentes révisions du système. Donnez toujours des chemins absolus dans Android. Cela signifie commencer par une variable d'environnement ou par le répertoire racine (c'est-à-dire "/") Pour pouvoir déplacer l'application vers une carte SD, il est préférable d'utiliser les variables d'environnement.
De plus, vous ne devez pas utiliser le répertoire de données dynamiques pour votre police. Vous devez l'intégrer dans le package de votre application.
la source
Je crois que pour Android, vous devez avoir un dossier d'actifs avec tous les actifs chargés, ce dossier d'actifs serait dans le projet Android plutôt que dans le projet principal. Le bureau, le HTML, etc. utilisent tous les actifs du projet de base afin qu'ils fonctionnent correctement, mais Android a besoin de son propre dossier d'actifs. en avez-vous un?
la source
Les options sont les suivantes:
1) Essayez TTF majuscule au lieu de ttf dans tout votre code - dans le cas où votre fichier d'origine a le suffixe TTF, car Android est sensible à la casse.
2) Dans le fichier build.gradle sous votre module Android, assurez-vous que:
Et pas:
En d'autres termes, assurez-vous que c'est votre dossier d'actifs Android. celui-ci a fonctionné pour moi. puis nettoyez le projet de construction et désinstallez l'ancienne application de l'appareil Android.
la source
Essayez de copier les fichiers de polices directement dans le dossier des ressources.
la source
Faites juste une chose, vous pouvez changer la méthode que vous suivez maintenant. vous pouvez utiliser l'outil "hiero" pour la création de police. Téléchargez simplement le fichier jar "hiero" à partir du lien suivant
https://libgdx.badlogicgames.com/tools.html
en utilisant hiero, vous pourrez accéder à presque toutes les polices. après avoir créé les polices, enregistrez-le dans le dossier "asset" des fichiers de votre projet Android et ajoutez le code suivant.
essayez simplement cette méthode. ça va marcher.
la source
FreeTypeFontGenerator
nous allons importer n'importe quelle police et écrire avec elle dans n'importe quelle taille. Où Hiero vous oblige à générer des bitmaps pour chaque police et taille. Je suis d'accord que hiero est un excellent outil mais cela ne répond pas à la question.Assurez-vous que les fichiers se trouvent dans / android / assets.
la source