{"id":656,"date":"2017-09-10T13:13:41","date_gmt":"2017-09-10T12:13:41","guid":{"rendered":"http:\/\/www.pixnbgames.com\/blog\/?p=656"},"modified":"2017-09-10T13:13:41","modified_gmt":"2017-09-10T12:13:41","slug":"solucion-de-errores-en-libgdx-al-subir-la-version-ios-a-itunes-connect-info-plist-xml","status":"publish","type":"post","link":"https:\/\/www.pixnbgames.com\/blog\/libgdx\/solucion-de-errores-en-libgdx-al-subir-la-version-ios-a-itunes-connect-info-plist-xml\/","title":{"rendered":"Soluci\u00f3n de errores en libGDX al subir la versi\u00f3n iOS a iTunes Connect (Info.plist.xml)"},"content":{"rendered":"<p>Recientemente he publicado mi primer videojuego para iOS hecho con libGDX: <a href=\"http:\/\/www.pixnbgames.com\/rainbowd.html\" target=\"_blank\" rel=\"noopener\">Rainbow Diamonds<\/a>.<\/p>\n<p>Despu\u00e9s de empaquetar la aplicaci\u00f3n para distribuirla en el App Store de Apple, me encontr\u00e9 algunos problemas que me imped\u00edan hacer la subida a iTunes Connect. Estos errores se producen porque el archivo <em>Info.plist.xml<\/em> generado al crear el proyecto con libGDX no contiene toda la informaci\u00f3n necesaria para distribuir la aplicaci\u00f3n en el App Store. Adem\u00e1s, la modificaci\u00f3n del fichero tambi\u00e9n me obliga a incluir nuevos recursos (iconos y launch screens).<\/p>\n<p><i>Aclaro que en mi caso se trata de un videojuego para iPhone y iPad que funciona con orientaci\u00f3n apaisada. En otros casos la configuraci\u00f3n y los recursos necesarios pueden varias ligeramente.<\/i><\/p>\n<h3>Info.plist.xml<\/h3>\n<p>A continuaci\u00f3n os dejo tanto el archivo original del proyecto (incompleto) como el archivo modificado (que permite la distribuci\u00f3n de la aplicaci\u00f3n) para que pod\u00e1is ver las diferencias.<\/p>\n<h4>Archivo original (NO es v\u00e1lido)<\/h4>\n<p>El fichero original que se genera al crear el proyecto, y que no permite la publicaci\u00f3n, ser\u00eda tal que as\u00ed:<\/p>\n<pre lang=\"Xml\"><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<!DOCTYPE plist PUBLIC \"-\/\/Apple\/\/DTD PLIST 1.0\/\/EN\" \"http:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd\">\r\n<plist version=\"1.0\">\r\n<dict>\r\n    <key>CFBundleDevelopmentRegion<\/key>\r\n    <string>en<\/string>\r\n    <key>CFBundleDisplayName<\/key>\r\n    <string>${app.name}<\/string>\r\n    <key>CFBundleExecutable<\/key>\r\n    <string>${app.executable}<\/string>\r\n    <key>CFBundleIdentifier<\/key>\r\n    <string>${app.id}<\/string>\r\n    <key>CFBundleInfoDictionaryVersion<\/key>\r\n    <string>6.0<\/string>\r\n    <key>CFBundleName<\/key>\r\n    <string>${app.name}<\/string>\r\n    <key>CFBundlePackageType<\/key>\r\n    <string>APPL<\/string>\r\n    <key>CFBundleShortVersionString<\/key>\r\n    <string>${app.version}<\/string>\r\n    <key>CFBundleSignature<\/key>\r\n    <string>????<\/string>\r\n    <key>CFBundleVersion<\/key>\r\n    <string>${app.build}<\/string>\r\n    <key>LSRequiresIPhoneOS<\/key>\r\n    <true\/>\r\n    <key>UIViewControllerBasedStatusBarAppearance<\/key>\r\n    <false\/>\r\n    <key>UIStatusBarHidden<\/key>\r\n    <true\/>\r\n    <key>UIDeviceFamily<\/key>\r\n    <array>\r\n        <integer>1<\/integer>\r\n        <integer>2<\/integer>\r\n    <\/array>\r\n    <key>UIRequiredDeviceCapabilities<\/key>\r\n    <array>\r\n        <string>armv7<\/string>\r\n        <string>opengles-2<\/string>\r\n    <\/array>\r\n    <key>UISupportedInterfaceOrientations<\/key>\r\n    <array>\r\n        <string>UIInterfaceOrientationPortrait<\/string>\r\n        <string>UIInterfaceOrientationLandscapeLeft<\/string>\r\n        <string>UIInterfaceOrientationLandscapeRight<\/string>\r\n    <\/array>\r\n    <key>CFBundleIcons<\/key>\r\n    <dict>\r\n        <key>CFBundlePrimaryIcon<\/key>\r\n        <dict>\r\n            <key>CFBundleIconFiles<\/key>\r\n            <array>\r\n                <string>Icon<\/string>\r\n                <string>Icon-72<\/string>\r\n            <\/array>\r\n        <\/dict>\r\n    <\/dict>\r\n<\/dict>\r\n<\/plist>\r\n\r\n<\/pre>\n<h4>Archivo modificado<\/h4>\n<p>Esta versi\u00f3n del archivo s\u00ed permite distribuir la aplicaci\u00f3n para iPhone e iPad.<\/p>\n<pre lang=\"Xml\"><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<!DOCTYPE plist PUBLIC \"-\/\/Apple\/\/DTD PLIST 1.0\/\/EN\" \"http:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd\">\r\n<plist version=\"1.0\">\r\n<dict>\r\n    <key>CFBundleDevelopmentRegion<\/key>\r\n    <string>en<\/string>\r\n    <key>CFBundleDisplayName<\/key>\r\n    <string>${app.name}<\/string>\r\n    <key>CFBundleExecutable<\/key>\r\n    <string>${app.executable}<\/string>\r\n    <key>CFBundleIconFile<\/key>\r\n    <string>Icon-57.png<\/string>\r\n    <key>CFBundleIconFiles<\/key>\r\n    <array>\r\n        <string>Icon-29<\/string>\r\n        <string>Icon-40<\/string>\r\n        <string>Icon-50<\/string>\r\n        <string>Icon-57<\/string>\r\n        <string>Icon-58<\/string>\r\n        <string>Icon-72<\/string>\r\n        <string>Icon-76<\/string>\r\n        <string>Icon-80<\/string>\r\n        <string>Icon-87<\/string>\r\n        <string>Icon-100<\/string>\r\n        <string>Icon-114<\/string>\r\n        <string>Icon-120<\/string>\r\n        <string>Icon-144<\/string>\r\n        <string>Icon-152<\/string>\r\n        <string>Icon-180<\/string>\r\n    <\/array>\r\n    <key>CFBundleIconFiles~ipad<\/key>\r\n    <array>\r\n        <string>Icon-29<\/string>\r\n        <string>Icon-40<\/string>\r\n        <string>Icon-50<\/string>\r\n        <string>Icon-57<\/string>\r\n        <string>Icon-58<\/string>\r\n        <string>Icon-72<\/string>\r\n        <string>Icon-76<\/string>\r\n        <string>Icon-80<\/string>\r\n        <string>Icon-87<\/string>\r\n        <string>Icon-100<\/string>\r\n        <string>Icon-114<\/string>\r\n        <string>Icon-120<\/string>\r\n        <string>Icon-144<\/string>\r\n        <string>Icon-152<\/string>\r\n        <string>Icon-180<\/string>\r\n    <\/array>\r\n    <key>CFBundleIdentifier<\/key>\r\n    <string>${app.id}<\/string>\r\n    <key>CFBundleInfoDictionaryVersion<\/key>\r\n    <string>6.0<\/string>\r\n    <key>CFBundleName<\/key>\r\n    <string>${app.name}<\/string>\r\n    <key>CFBundlePackageType<\/key>\r\n    <string>APPL<\/string>\r\n    <key>CFBundleShortVersionString<\/key>\r\n    <string>${app.version}<\/string>\r\n    <key>CFBundleSignature<\/key>\r\n    <string>????<\/string>\r\n    <key>CFBundleVersion<\/key>\r\n    <string>${app.build}<\/string>\r\n    <key>LSRequiresIPhoneOS<\/key>\r\n    <true\/>\r\n    <key>UIViewControllerBasedStatusBarAppearance<\/key>\r\n    <false\/>\r\n    <key>UIStatusBarHidden<\/key>\r\n    <true\/>\r\n    <key>UIDeviceFamily<\/key>\r\n    <array>\r\n        <integer>1<\/integer>\r\n        <integer>2<\/integer>\r\n    <\/array>\r\n    <key>UIRequiredDeviceCapabilities<\/key>\r\n    <array>\r\n        <string>armv7<\/string>\r\n        <string>opengles-2<\/string>\r\n    <\/array>\r\n    <key>UIRequiresFullScreen<\/key>\r\n    <true\/>\r\n    <key>UISupportedInterfaceOrientations<\/key>\r\n    <array>\r\n        <string>UIInterfaceOrientationLandscapeLeft<\/string>\r\n        <string>UIInterfaceOrientationLandscapeRight<\/string>\r\n    <\/array>\r\n    <key>MinimumOSVersion<\/key>\r\n    <string>7.1.2<\/string>\r\n<\/dict>\r\n<\/plist>\r\n<\/pre>\n<h3>Nuevos recursos<\/h3>\n<p>Ser\u00e1 necesario adem\u00e1s incluir nuevos iconos e im\u00e1genes de launch screens para todos los dispositivos soportados.<\/p>\n<h4>Iconos<\/h4>\n<p>Con el nuevo archivo, se declaran m\u00e1s iconos de diferentes tama\u00f1os, con lo cual ser\u00e1 necesario incluir las versiones de estos iconos delntro del directorio <em>data\/<\/em> del m\u00f3dulo <em>ios<\/em> de nuestro juego.<\/p>\n<table>\n<thead>\n<tr>\n<th>Nombre del archivo<\/th>\n<th>Dimensiones<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Icon-29.png<\/td>\n<td>29&#215;29 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-40.png<\/td>\n<td>40&#215;40 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-50.png<\/td>\n<td>50&#215;50 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-57.png<\/td>\n<td>57&#215;57 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-58.png<\/td>\n<td>58&#215;58 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-72.png<\/td>\n<td>72&#215;72 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-76.png<\/td>\n<td>76&#215;76 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-80.png<\/td>\n<td>80&#215;80 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-87.png<\/td>\n<td>87&#215;87 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-100.png<\/td>\n<td>100&#215;100 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-114.png<\/td>\n<td>114&#215;114 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-120.png<\/td>\n<td>120&#215;120 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-144.png<\/td>\n<td>144&#215;144 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-152.png<\/td>\n<td>152&#215;152 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Icon-180.png<\/td>\n<td>180&#215;180 pixeles<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>Launch screens<\/h4>\n<p>Las pantallas de inicio, o launch screens, son la primera imagen que se muestra al usuario mientas est\u00e1 cargando la aplicaci\u00f3n. En funci\u00f3n de los dispositivos y orientaciones soportadas, nuestra aplicaci\u00f3n debe incluir launch screens de diferentes tama\u00f1os. En mi caso, la aplicaci\u00f3n incluye las siguientes:<\/p>\n<table>\n<thead>\n<tr>\n<th>Nombre del archivo<\/th>\n<th>Dimensiones<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Default.png<\/td>\n<td>320&#215;480 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Default@2x.png<\/td>\n<td>640&#215;960 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Default~ipad.png<\/td>\n<td>768&#215;1004 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Default@2x~ipad.png<\/td>\n<td>1536&#215;2008 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Default-Landscape~ipad.png<\/td>\n<td>1024&#215;768 pixeles<\/td>\n<\/tr>\n<tr>\n<td>Default-1024w-1366h@2x~ipad.png<\/td>\n<td>2048&#215;2732 pixeles<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h3>Para saber m\u00e1s<\/h3>\n<p>Puedes consultar toda la informaci\u00f3n que podemos incluir en el archivo Info.plist.xml en la <a href=\"https:\/\/developer.apple.com\/library\/content\/documentation\/General\/Reference\/InfoPlistKeyReference\/Introduction\/Introduction.html\" target=\"_blank\" rel=\"noopener\">documentaci\u00f3n oficial de Apple<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recientemente he publicado mi primer videojuego para iOS hecho con libGDX: Rainbow Diamonds. Despu\u00e9s de empaquetar la aplicaci\u00f3n para distribuirla en el App Store de Apple, me encontr\u00e9 algunos problemas que me imped\u00edan hacer la subida a iTunes Connect. Estos <a class=\"more-link\" href=\"https:\/\/www.pixnbgames.com\/blog\/libgdx\/solucion-de-errores-en-libgdx-al-subir-la-version-ios-a-itunes-connect-info-plist-xml\/\">Seguir leyendo <span class=\"screen-reader-text\">  Soluci\u00f3n de errores en libGDX al subir la versi\u00f3n iOS a iTunes Connect (Info.plist.xml)<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[14],"tags":[51,15],"language":[5],"_links":{"self":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/656"}],"collection":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/comments?post=656"}],"version-history":[{"count":11,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/656\/revisions"}],"predecessor-version":[{"id":667,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/656\/revisions\/667"}],"wp:attachment":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/media?parent=656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/categories?post=656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/tags?post=656"},{"taxonomy":"language","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/language?post=656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}