Al ejecutar o depurar mi juego en un dispositivo Android, aparece este error en el logcat:
com.badlogic.gdx.utils.GdxRuntimeException: error al leer el archivo: data / fonts / myFont.ttf (interno)
El cual es creado por esta línea de código:
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
donde fontFile
se define así:
FileHandle fontFile = Gdx.files.internal("data/fonts/myFont.ttf");
Esto no sucede cuando ejecuto la configuración de escritorio.
Sé que para la configuración de escritorio debe definir el directorio de trabajo de su proyecto, pero no veo esa opción en la configuración de Android y tampoco tiene sentido, así que no creo que sea un problema relacionado con el "directorio de trabajo". .
Obviamente, el archivo está en la ruta correcta.
También tenga en cuenta que todo funcionó bien en mi proyecto anterior. Creé este nuevo proyecto creando un nuevo prj en blanco usando libgdx-setup y luego copiando todas las clases y paquetes del proyecto anterior. Entonces, ¿tal vez es un problema relacionado con algún archivo Gradle?
FileNotFoundException
? El sistema de archivos de Android distingue entre mayúsculas y minúsculas, asegúrese de haberlo escrito correctamente "myFont.ttf" es diferente a "myFont.TTF"Respuestas:
Si su sistema de archivos de escritorio de prueba se ejecuta en Windows NTFS y el sistema de archivos del dispositivo Android es nativo de Android, la diferencia está en los controladores del sistema de archivos.
Los controladores del sistema de archivos de Windows no distinguen entre mayúsculas y minúsculas, pero Android usa Linux, que distingue entre mayúsculas y minúsculas.
Asegúrese de que su uso de mayúsculas sea correcto en el archivo.
Además, noté que estaba usando una ruta absoluta sin variable ambiental. Esto es dinámico para su directorio de trabajo actual en Android. Por lo tanto, si la aplicación se ejecuta desde un directorio diferente, buscará el archivo en un lugar diferente. Esto podría causar problemas entre varias revisiones del sistema. Siempre da caminos absolutos en Android. Esto significa comenzar con una variable ambiental o el directorio raíz (es decir, "/") En aras de poder mover la aplicación a una tarjeta SD, es mejor usar las variables ambientales.
Además, no debe usar el directorio de datos dinámicos para su fuente. Deberías incluirlo en el paquete de tu aplicación.
fuente
Creo que para Android debe tener una carpeta de activos con todos los activos cargados, esta carpeta de activos estaría en el proyecto de Android en lugar del proyecto principal. Las computadoras de escritorio, HTML, etc., usan los activos principales del proyecto para que funcionen bien, pero Android necesita su propia carpeta de activos. ¿tienes uno para eso?
fuente
Las opciones son:
1) Pruebe la letra mayúscula TTF en lugar de ttf en todo su código, en caso de que su archivo original tenga sufijo TTF, porque Android distingue entre mayúsculas y minúsculas.
2) En el archivo build.gradle debajo de su módulo de Android, asegúrese de que:
Y no:
En otras palabras, asegúrese de que sea su carpeta de activos de Android. Este me funcionó. luego limpie el proyecto de compilación y desinstale la aplicación anterior del dispositivo Android.
fuente
Intente copiar los archivos de fuentes directamente en la carpeta de activos.
fuente
Solo haga una cosa: puede cambiar el método que sigue ahora. puede usar la herramienta "hiero" para la creación de fuentes. Simplemente descargue el archivo jar "hiero" del siguiente enlace
https://libgdx.badlogicgames.com/tools.html
Al utilizar hiero, podrá acceder a casi todas las fuentes. después de crear las fuentes, guárdelo en la carpeta "activo" de sus archivos de proyecto de Android y agregue el siguiente código.
solo prueba este método. funcionará.
fuente
FreeTypeFontGenerator
permite importar cualquier fuente y escribir con ella en cualquier tamaño. Donde Hiero requiere que generes mapas de bits para cada fuente y tamaño. Estoy de acuerdo en que hiero es una gran herramienta, pero esto no responde a la pregunta.Asegúrese de que los archivos estén dentro de / android / assets.
fuente