Solución de errores en libGDX al subir la versión iOS a iTunes Connect (Info.plist.xml)

Recientemente he publicado mi primer videojuego para iOS hecho con libGDX: Rainbow Diamonds.

Después de empaquetar la aplicación para distribuirla en el App Store de Apple, me encontré algunos problemas que me impedían hacer la subida a iTunes Connect. Estos errores se producen porque el archivo Info.plist.xml generado al crear el proyecto con libGDX no contiene toda la información necesaria para distribuir la aplicación en el App Store. Además, la modificación del fichero también me obliga a incluir nuevos recursos (iconos y launch screens).

Aclaro que en mi caso se trata de un videojuego para iPhone y iPad que funciona con orientación apaisada. En otros casos la configuración y los recursos necesarios pueden varias ligeramente.

Info.plist.xml

A continuación os dejo tanto el archivo original del proyecto (incompleto) como el archivo modificado (que permite la distribución de la aplicación) para que podáis ver las diferencias.

Archivo original (NO es válido)

El fichero original que se genera al crear el proyecto, y que no permite la publicación, sería tal que así:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleDisplayName</key>
    <string>${app.name}</string>
    <key>CFBundleExecutable</key>
    <string>${app.executable}</string>
    <key>CFBundleIdentifier</key>
    <string>${app.id}</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>${app.name}</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>${app.version}</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>${app.build}</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>
    <key>UIStatusBarHidden</key>
    <true/>
    <key>UIDeviceFamily</key>
    <array>
        <integer>1</integer>
        <integer>2</integer>
    </array>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
        <string>opengles-2</string>
    </array>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>CFBundleIcons</key>
    <dict>
        <key>CFBundlePrimaryIcon</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>Icon</string>
                <string>Icon-72</string>
            </array>
        </dict>
    </dict>
</dict>
</plist>

Archivo modificado

Esta versión del archivo sí permite distribuir la aplicación para iPhone e iPad.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleDisplayName</key>
    <string>${app.name}</string>
    <key>CFBundleExecutable</key>
    <string>${app.executable}</string>
    <key>CFBundleIconFile</key>
    <string>Icon-57.png</string>
    <key>CFBundleIconFiles</key>
    <array>
        <string>Icon-29</string>
        <string>Icon-40</string>
        <string>Icon-50</string>
        <string>Icon-57</string>
        <string>Icon-58</string>
        <string>Icon-72</string>
        <string>Icon-76</string>
        <string>Icon-80</string>
        <string>Icon-87</string>
        <string>Icon-100</string>
        <string>Icon-114</string>
        <string>Icon-120</string>
        <string>Icon-144</string>
        <string>Icon-152</string>
        <string>Icon-180</string>
    </array>
    <key>CFBundleIconFiles~ipad</key>
    <array>
        <string>Icon-29</string>
        <string>Icon-40</string>
        <string>Icon-50</string>
        <string>Icon-57</string>
        <string>Icon-58</string>
        <string>Icon-72</string>
        <string>Icon-76</string>
        <string>Icon-80</string>
        <string>Icon-87</string>
        <string>Icon-100</string>
        <string>Icon-114</string>
        <string>Icon-120</string>
        <string>Icon-144</string>
        <string>Icon-152</string>
        <string>Icon-180</string>
    </array>
    <key>CFBundleIdentifier</key>
    <string>${app.id}</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>${app.name}</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>${app.version}</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>${app.build}</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>
    <key>UIStatusBarHidden</key>
    <true/>
    <key>UIDeviceFamily</key>
    <array>
        <integer>1</integer>
        <integer>2</integer>
    </array>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
        <string>opengles-2</string>
    </array>
    <key>UIRequiresFullScreen</key>
    <true/>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>MinimumOSVersion</key>
    <string>7.1.2</string>
</dict>
</plist>

Nuevos recursos

Será necesario además incluir nuevos iconos e imágenes de launch screens para todos los dispositivos soportados.

Iconos

Con el nuevo archivo, se declaran más iconos de diferentes tamaños, con lo cual será necesario incluir las versiones de estos iconos delntro del directorio data/ del módulo ios de nuestro juego.

Nombre del archivo Dimensiones
Icon-29.png 29×29 pixeles
Icon-40.png 40×40 pixeles
Icon-50.png 50×50 pixeles
Icon-57.png 57×57 pixeles
Icon-58.png 58×58 pixeles
Icon-72.png 72×72 pixeles
Icon-76.png 76×76 pixeles
Icon-80.png 80×80 pixeles
Icon-87.png 87×87 pixeles
Icon-100.png 100×100 pixeles
Icon-114.png 114×114 pixeles
Icon-120.png 120×120 pixeles
Icon-144.png 144×144 pixeles
Icon-152.png 152×152 pixeles
Icon-180.png 180×180 pixeles

Launch screens

Las pantallas de inicio, o launch screens, son la primera imagen que se muestra al usuario mientas está cargando la aplicación. En función de los dispositivos y orientaciones soportadas, nuestra aplicación debe incluir launch screens de diferentes tamaños. En mi caso, la aplicación incluye las siguientes:

Nombre del archivo Dimensiones
Default.png 320×480 pixeles
Default@2x.png 640×960 pixeles
Default~ipad.png 768×1004 pixeles
Default@2x~ipad.png 1536×2008 pixeles
Default-Landscape~ipad.png 1024×768 pixeles
Default-1024w-1366h@2x~ipad.png 2048×2732 pixeles

 

Para saber más

Puedes consultar toda la información que podemos incluir en el archivo Info.plist.xml en la documentación oficial de Apple.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*