[{"data":1,"prerenderedAt":1582},["ShallowReactive",2],{"navigation_docs_es":3,"-es-developers-build-ios":272,"-es-developers-build-ios-surround":1577},[4,38,110,190,232],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":-1},"Primeros pasos","i-lucide-rocket","\u002Fes\u002Fgetting-started","es\u002F1.getting-started\u002Findex",[10,13,18,23,28,33],{"title":11,"path":7,"stem":8,"icon":12},"Resumen","i-lucide-layout-grid",{"title":14,"path":15,"stem":16,"icon":17},"Instalación","\u002Fes\u002Fgetting-started\u002Finstallation","es\u002F1.getting-started\u002F01.installation","i-lucide-download",{"title":19,"path":20,"stem":21,"icon":22},"Iniciar sesión","\u002Fes\u002Fgetting-started\u002Fsign-in","es\u002F1.getting-started\u002F02.sign-in","i-lucide-log-in",{"title":24,"path":25,"stem":26,"icon":27},"Tu primera instancia","\u002Fes\u002Fgetting-started\u002Ffirst-instance","es\u002F1.getting-started\u002F03.first-instance","i-lucide-play",{"title":29,"path":30,"stem":31,"icon":32},"Android: instalar el APK","\u002Fes\u002Fgetting-started\u002Fandroid","es\u002F1.getting-started\u002F04.android","i-lucide-smartphone",{"title":34,"path":35,"stem":36,"icon":37},"iPhone\u002FiPad: instalar con AltStore\u002FSideStore","\u002Fes\u002Fgetting-started\u002Fiphone-ipad","es\u002F1.getting-started\u002F05.iphone-ipad","i-lucide-tablet-smartphone",{"title":39,"icon":40,"path":41,"stem":42,"children":43,"page":-1},"Launcher","i-lucide-app-window","\u002Fes\u002Flauncher","es\u002F2.launcher\u002Findex",[44,45,50,55,60,65,70,75,80,85,90,95,100,105],{"title":11,"path":41,"stem":42,"icon":12},{"title":46,"path":47,"stem":48,"icon":49},"Instancias","\u002Fes\u002Flauncher\u002Finstances","es\u002F2.launcher\u002F01.instances","i-lucide-boxes",{"title":51,"path":52,"stem":53,"icon":54},"Cargadores de mods","\u002Fes\u002Flauncher\u002Fmod-loaders","es\u002F2.launcher\u002F02.mod-loaders","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Mods","\u002Fes\u002Flauncher\u002Fmods","es\u002F2.launcher\u002F03.mods","i-lucide-puzzle",{"title":61,"path":62,"stem":63,"icon":64},"Modpacks","\u002Fes\u002Flauncher\u002Fmodpacks","es\u002F2.launcher\u002F04.modpacks","i-lucide-package",{"title":66,"path":67,"stem":68,"icon":69},"Compartir modpacks","\u002Fes\u002Flauncher\u002Fshare-modpacks","es\u002F2.launcher\u002F05.share-modpacks","i-lucide-share-2",{"title":71,"path":72,"stem":73,"icon":74},"Importar desde otros launchers","\u002Fes\u002Flauncher\u002Fimport","es\u002F2.launcher\u002F06.import","i-lucide-folder-input",{"title":76,"path":77,"stem":78,"icon":79},"Clips y capturas","\u002Fes\u002Flauncher\u002Fclips","es\u002F2.launcher\u002F07.clips","i-lucide-clapperboard",{"title":81,"path":82,"stem":83,"icon":84},"Amigos y chat","\u002Fes\u002Flauncher\u002Fsocial","es\u002F2.launcher\u002F08.social","i-lucide-messages-square",{"title":86,"path":87,"stem":88,"icon":89},"Logros","\u002Fes\u002Flauncher\u002Fachievements","es\u002F2.launcher\u002F09.achievements","i-lucide-trophy",{"title":91,"path":92,"stem":93,"icon":94},"Skins y capas","\u002Fes\u002Flauncher\u002Fwardrobe","es\u002F2.launcher\u002F10.wardrobe","i-lucide-shirt",{"title":96,"path":97,"stem":98,"icon":99},"Ajustes","\u002Fes\u002Flauncher\u002Fsettings","es\u002F2.launcher\u002F11.settings","i-lucide-settings",{"title":101,"path":102,"stem":103,"icon":104},"Actualizaciones","\u002Fes\u002Flauncher\u002Fupdates","es\u002F2.launcher\u002F12.updates","i-lucide-refresh-cw",{"title":106,"path":107,"stem":108,"icon":109},"Servidores","\u002Fes\u002Flauncher\u002Fservers","es\u002F2.launcher\u002F13.servers","i-lucide-server",{"title":111,"icon":112,"path":113,"stem":114,"children":115,"page":-1},"TRS Client","i-lucide-blocks","\u002Fes\u002Fclient","es\u002F3.client\u002Findex",[116,117,121,126,131,136,141,146,151,156,160,165,170,175,180,185],{"title":11,"path":113,"stem":114,"icon":12},{"title":118,"path":119,"stem":120,"icon":112},"¿Qué es TRS Client?","\u002Fes\u002Fclient\u002Foverview","es\u002F3.client\u002F01.overview",{"title":122,"path":123,"stem":124,"icon":125},"Menú TRS y editor HUD","\u002Fes\u002Fclient\u002Fmenu-and-hud-editor","es\u002F3.client\u002F02.menu-and-hud-editor","i-lucide-layout-dashboard",{"title":127,"path":128,"stem":129,"icon":130},"Rendimiento y FPS","\u002Fes\u002Fclient\u002Fperformance","es\u002F3.client\u002F03.performance","i-lucide-gauge",{"title":132,"path":133,"stem":134,"icon":135},"Módulos de PvP","\u002Fes\u002Fclient\u002Fpvp","es\u002F3.client\u002F04.pvp","i-lucide-swords",{"title":137,"path":138,"stem":139,"icon":140},"Zoom, vista libre y correr fijo","\u002Fes\u002Fclient\u002Fzoom-and-freelook","es\u002F3.client\u002F05.zoom-and-freelook","i-lucide-zoom-in",{"title":142,"path":143,"stem":144,"icon":145},"Minimapa, puntos de ruta y mapa del mundo","\u002Fes\u002Fclient\u002Fminimap-and-world-map","es\u002F3.client\u002F06.minimap-and-world-map","i-lucide-map",{"title":147,"path":148,"stem":149,"icon":150},"Herramientas de redstone","\u002Fes\u002Fclient\u002Fredstone-tools","es\u002F3.client\u002F07.redstone-tools","i-lucide-zap",{"title":152,"path":153,"stem":154,"icon":155},"Biblioteca de circuitos","\u002Fes\u002Fclient\u002Fcircuit-library","es\u002F3.client\u002F08.circuit-library","i-lucide-cpu",{"title":157,"path":158,"stem":159,"icon":94},"Emotes, capas, vestuario y cuentas","\u002Fes\u002Fclient\u002Femotes-and-capes","es\u002F3.client\u002F09.emotes-and-capes",{"title":161,"path":162,"stem":163,"icon":164},"Capturas, clips y panorámicas","\u002Fes\u002Fclient\u002Fscreenshots-and-clips","es\u002F3.client\u002F10.screenshots-and-clips","i-lucide-camera",{"title":166,"path":167,"stem":168,"icon":169},"Notas del mundo","\u002Fes\u002Fclient\u002Fnotes","es\u002F3.client\u002F11.notes","i-lucide-notebook-pen",{"title":171,"path":172,"stem":173,"icon":174},"Chat y comodidad","\u002Fes\u002Fclient\u002Fchat-and-comfort","es\u002F3.client\u002F12.chat-and-comfort","i-lucide-message-square",{"title":176,"path":177,"stem":178,"icon":179},"Social en el juego","\u002Fes\u002Fclient\u002Fsocial-in-game","es\u002F3.client\u002F13.social-in-game","i-lucide-users",{"title":181,"path":182,"stem":183,"icon":184},"Teclas predeterminadas","\u002Fes\u002Fclient\u002Fkeybinds","es\u002F3.client\u002F14.keybinds","i-lucide-keyboard",{"title":186,"path":187,"stem":188,"icon":189},"Hospedar un mundo para amigos","\u002Fes\u002Fclient\u002Fworld-hosting","es\u002F3.client\u002F15.world-hosting","i-lucide-globe",{"title":191,"icon":192,"path":193,"stem":194,"children":195,"page":-1},"Ayuda","i-lucide-life-buoy","\u002Fes\u002Fhelp","es\u002F4.help\u002Findex",[196,197,202,207,212,217,222,227],{"title":11,"path":193,"stem":194,"icon":12},{"title":198,"path":199,"stem":200,"icon":201},"Asistente de errores","\u002Fes\u002Fhelp\u002Fcrash-helper","es\u002F4.help\u002F01.crash-helper","i-lucide-heart-pulse",{"title":203,"path":204,"stem":205,"icon":206},"Problemas frecuentes","\u002Fes\u002Fhelp\u002Fcommon-problems","es\u002F4.help\u002F02.common-problems","i-lucide-circle-help",{"title":208,"path":209,"stem":210,"icon":211},"Java y memoria","\u002Fes\u002Fhelp\u002Fjava","es\u002F4.help\u002F03.java","i-lucide-coffee",{"title":213,"path":214,"stem":215,"icon":216},"Linux","\u002Fes\u002Fhelp\u002Flinux","es\u002F4.help\u002F04.linux","i-lucide-terminal",{"title":218,"path":219,"stem":220,"icon":221},"Registros","\u002Fes\u002Fhelp\u002Flogs","es\u002F4.help\u002F05.logs","i-lucide-scroll-text",{"title":223,"path":224,"stem":225,"icon":226},"Reportar un error","\u002Fes\u002Fhelp\u002Freport-a-bug","es\u002F4.help\u002F06.report-a-bug","i-lucide-bug",{"title":228,"path":229,"stem":230,"icon":231},"Privacidad","\u002Fes\u002Fhelp\u002Fprivacy","es\u002F4.help\u002F07.privacy","i-lucide-shield-check",{"title":233,"icon":234,"path":235,"stem":236,"children":237,"page":-1},"Desarrolladores","i-lucide-code-xml","\u002Fes\u002Fdevelopers","es\u002F5.developers\u002Findex",[238,239,244,249,254,259,263,267],{"title":11,"path":235,"stem":236,"icon":12},{"title":240,"path":241,"stem":242,"icon":243},"Compilar desde el código","\u002Fes\u002Fdevelopers\u002Fbuild-from-source","es\u002F5.developers\u002F01.build-from-source","i-lucide-hammer",{"title":245,"path":246,"stem":247,"icon":248},"Contribuir","\u002Fes\u002Fdevelopers\u002Fcontributing","es\u002F5.developers\u002F02.contributing","i-lucide-git-pull-request",{"title":250,"path":251,"stem":252,"icon":253},"Traducir","\u002Fes\u002Fdevelopers\u002Ftranslating","es\u002F5.developers\u002F03.translating","i-lucide-languages",{"title":255,"path":256,"stem":257,"icon":258},"API pública","\u002Fes\u002Fdevelopers\u002Fpublic-api","es\u002F5.developers\u002F04.public-api","i-lucide-braces",{"title":260,"path":261,"stem":262,"icon":32},"Compila tú mismo la app de Android","\u002Fes\u002Fdevelopers\u002Fbuild-android","es\u002F5.developers\u002F05.build-android",{"title":264,"path":265,"stem":266,"icon":37},"Compila tú mismo la app de iOS con Xcode","\u002Fes\u002Fdevelopers\u002Fbuild-ios","es\u002F5.developers\u002F06.build-ios",{"title":268,"path":269,"stem":270,"icon":271},"TRS Server Rules","\u002Fes\u002Fdevelopers\u002Fserver-rules","es\u002F5.developers\u002F07.server-rules","i-lucide-server-cog",{"id":273,"title":264,"body":274,"description":1570,"extension":1571,"links":1572,"meta":1573,"navigation":1574,"path":265,"seo":1575,"stem":266,"__hash__":1576},"docs_es\u002Fes\u002F5.developers\u002F06.build-ios.md",{"type":275,"value":276,"toc":1535},"minimark",[277,285,330,361,366,471,475,597,615,618,1013,1017,1021,1024,1039,1160,1167,1171,1214,1217,1247,1253,1257,1260,1342,1346,1353,1358,1380,1384,1390,1394,1407,1411,1417,1421,1433,1437,1448,1452,1470,1474,1477,1481,1484,1488,1513,1516,1520,1531],[278,279,280,281,284],"p",{},"La app de iOS es el mismo proyecto de Tauri 2 que el launcher de escritorio, compilado para iPhone y iPad. Esta página\nes para quien colabora en el proyecto y para jugadores que prefieren compilar el IPA ellos mismos en lugar de usar el\nnuestro. Si solo quieres jugar, instala la app oficial: mira ",[282,283,34],"a",{"href":35},".",[286,287,288,294],"warning",{},[278,289,290],{},[291,292,293],"strong",{},"Antes de empezar:",[295,296,297,305,316,327],"ul",{},[298,299,300,301,304],"li",{},"Necesitas un ",[291,302,303],{},"Mac con Xcode",". El proyecto de Xcode solo se puede generar en macOS, por eso no está en el\nrepositorio: lo crea un script.",[298,306,307,310,311,315],{},[291,308,309],{},"Para jugar a Minecraft hacen falta el motor de juego y JIT",", igual que con la app oficial. El motor se añade a la\napp terminada en un paso aparte (mira ",[282,312,314],{"href":313},"#compilar-el-ipa","Compilar el IPA","). Si arrancas la app directamente desde\nXcode, no tiene motor: todo lo demás funciona, pero las partidas no arrancan.",[298,317,318,319,322,323,326],{},"Las apps firmadas con un ",[291,320,321],{},"Apple ID gratuito"," dejan de abrirse a los ",[291,324,325],{},"7 días"," y hay que volver a firmarlas\n(refrescarlas). Con un Apple ID gratuito solo puedes tener 3 apps instaladas por sideload a la vez.",[298,328,329],{},"Solo se compila para dispositivos reales (arm64); no hay build para el simulador de iOS.",[278,331,332,333,337,338,341,342,345,346,349,350,341,353,356,357,360],{},"Los comandos de esta página son los que ejecuta la CI (",[334,335,336],"code",{},".github\u002Fworkflows\u002Fci.yml"," job ",[291,339,340],{},"launcher-ios",", ",[334,343,344],{},"release.yml","\njobs ",[291,347,348],{},"iOS"," e ",[291,351,352],{},"iOS engine",[334,354,355],{},".github\u002Fworkflows\u002Fios-engine.yml","). La CI nunca firma la app: compila un ",[291,358,359],{},"IPA sin\nfirmar",", y AltStore\u002FSideStore lo firman con el Apple ID del usuario al instalarlo.",[362,363,365],"h2",{"id":364},"qué-hay-en-cada-sitio","Qué hay en cada sitio",[367,368,369,382],"table",{},[370,371,372],"thead",{},[373,374,375,379],"tr",{},[376,377,378],"th",{},"Ruta",[376,380,381],{},"Qué es",[383,384,385,404,414,424,438,448,458],"tbody",{},[373,386,387,393],{},[388,389,390],"td",{},[334,391,392],{},"scripts\u002Fios-project.sh",[388,394,395,396,399,400,403],{},"Crea el proyecto de Xcode en ",[334,397,398],{},"src-tauri\u002Fgen\u002Fapple"," (",[334,401,402],{},"tauri ios init",") y añade iconos y claves del Info.plist",[373,405,406,411],{},[388,407,408],{},[334,409,410],{},"scripts\u002Fios-unsigned-ipa.sh",[388,412,413],{},"Compila la biblioteca de Rust y luego un archivo de Xcode sin firma de código, comprimido como IPA",[373,415,416,421],{},[388,417,418],{},[334,419,420],{},"scripts\u002Fios\u002Fbuild-engine.sh",[388,422,423],{},"Compila el motor de juego (Amethyst-iOS en un commit fijo, CMake, MobileGlues, parte de Java)",[373,425,426,431],{},[388,427,428],{},[334,429,430],{},"scripts\u002Fios\u002Fpackage-ipa.sh",[388,432,433,434,437],{},"Mete el motor en la app y la firma con ",[334,435,436],{},"ldid"," y los entitlements",[373,439,440,445],{},[388,441,442],{},[334,443,444],{},"src-tauri\u002Ftauri.ios.conf.json",[388,446,447],{},"Cambios de la configuración de Tauri para iOS (iOS 15, sin actualizador de escritorio)",[373,449,450,455],{},[388,451,452],{},[334,453,454],{},"src-tauri\u002FInfo.ios.plist",[388,456,457],{},"Texto de la cámara (código QR del control remoto del PC) y descarga en segundo plano para las notificaciones",[373,459,460,465],{},[388,461,462],{},[334,463,464],{},"src-tauri\u002Fplugins\u002Ftauri-plugin-trs-game\u002Fios\u002F",[388,466,467,468],{},"Parte en Swift, código del motor, ",[334,469,470],{},"trs-game.entitlements",[362,472,474],{"id":473},"requisitos","Requisitos",[367,476,477,487],{},[370,478,479],{},[373,480,481,484],{},[376,482,483],{},"Herramienta",[376,485,486],{},"Versión \u002F nota",[383,488,489,508,531,549,566,581],{},[373,490,491,497],{},[388,492,493,494],{},"macOS con ",[291,495,496],{},"Xcode",[388,498,499,500,503,504,507],{},"con el SDK de iPhoneOS. El repositorio no fija ninguna versión de Xcode; la CI usa el Xcode por defecto de los runners de GitHub ",[334,501,502],{},"macos-latest"," (app) y ",[334,505,506],{},"macos-15"," (motor)",[373,509,510,518],{},[388,511,512],{},[282,513,517],{"href":514,"rel":515},"https:\u002F\u002Fbrew.sh",[516],"nofollow","Homebrew",[388,519,520,521,524,525,527,528],{},"para ",[334,522,523],{},"xcodegen"," (el script lo instala si falta), ",[334,526,436],{}," y ",[334,529,530],{},"cmake",[373,532,533,536],{},[388,534,535],{},"Node.js y pnpm",[388,537,538,541,542,399,545,548],{},[291,539,540],{},"Node 22",", pnpm en la versión fijada en ",[334,543,544],{},"package.json",[334,546,547],{},"corepack enable",")",[373,550,551,554],{},[388,552,553],{},"Rust",[388,555,556,557,562,563],{},"stable con ",[282,558,561],{"href":559,"rel":560},"https:\u002F\u002Frustup.rs",[516],"rustup",", target ",[334,564,565],{},"aarch64-apple-ios",[373,567,568,574],{},[388,569,570,571],{},"JDK ",[291,572,573],{},"8",[388,575,576,577,580],{},"solo para el motor (CI: Zulu 8). Tiene que ser un JDK 8; ",[334,578,579],{},"build-engine.sh"," lo comprueba",[373,582,583,594],{},[388,584,585,341,588,341,591],{},[334,586,587],{},"git",[334,589,590],{},"python3",[334,592,593],{},"zip",[388,595,596],{},"los usan los scripts",[278,598,599,600,399,603,606,607,610,611,614],{},"La app necesita ",[291,601,602],{},"iOS 15",[334,604,605],{},"minimumSystemVersion"," en ",[334,608,609],{},"tauri.ios.conf.json","). La CI define\n",[334,612,613],{},"IPHONEOS_DEPLOYMENT_TARGET=15.0"," para la app, porque los paquetes Swift de los plugins usan APIs de iOS 14 en adelante;\nel motor se compila para 14.0.",[362,616,314],{"id":617},"compilar-el-ipa",[619,620,622,627,699,703,715,719,731,748,752,788,791,857,880,884,917,951,955,976,993,997],"steps",{"level":621},"3",[623,624,626],"h3",{"id":625},"descarga-el-código-y-las-herramientas","Descarga el código y las herramientas",[628,629,634],"pre",{"className":630,"code":631,"language":632,"meta":633,"style":633},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone https:\u002F\u002Fgithub.com\u002Ftheredstonee\u002FTRS-Launcher.git\ncd TRS-Launcher\npnpm install\nrustup target add aarch64-apple-ios\nbrew install ldid cmake\n","bash","",[334,635,636,651,661,670,684],{"__ignoreMap":633},[637,638,641,644,648],"span",{"class":639,"line":640},"line",1,[637,642,587],{"class":643},"sBMFI",[637,645,647],{"class":646},"sfazB"," clone",[637,649,650],{"class":646}," https:\u002F\u002Fgithub.com\u002Ftheredstonee\u002FTRS-Launcher.git\n",[637,652,654,658],{"class":639,"line":653},2,[637,655,657],{"class":656},"s2Zo4","cd",[637,659,660],{"class":646}," TRS-Launcher\n",[637,662,664,667],{"class":639,"line":663},3,[637,665,666],{"class":643},"pnpm",[637,668,669],{"class":646}," install\n",[637,671,673,675,678,681],{"class":639,"line":672},4,[637,674,561],{"class":643},[637,676,677],{"class":646}," target",[637,679,680],{"class":646}," add",[637,682,683],{"class":646}," aarch64-apple-ios\n",[637,685,687,690,693,696],{"class":639,"line":686},5,[637,688,689],{"class":643},"brew",[637,691,692],{"class":646}," install",[637,694,695],{"class":646}," ldid",[637,697,698],{"class":646}," cmake\n",[623,700,702],{"id":701},"compila-la-interfaz","Compila la interfaz",[628,704,706],{"className":630,"code":705,"language":632,"meta":633,"style":633},"pnpm generate\n",[334,707,708],{"__ignoreMap":633},[637,709,710,712],{"class":639,"line":640},[637,711,666],{"class":643},[637,713,714],{"class":646}," generate\n",[623,716,718],{"id":717},"crea-el-proyecto-de-xcode","Crea el proyecto de Xcode",[628,720,722],{"className":630,"code":721,"language":632,"meta":633,"style":633},"bash scripts\u002Fios-project.sh\n",[334,723,724],{"__ignoreMap":633},[637,725,726,728],{"class":639,"line":640},[637,727,632],{"class":643},[637,729,730],{"class":646}," scripts\u002Fios-project.sh\n",[278,732,733,734,737,738,740,741,743,744,747],{},"Ejecuta ",[334,735,736],{},"pnpm tauri ios init --ci"," si ",[334,739,398],{}," todavía no existe, copia el texto de la cámara y la tarea en\nsegundo plano de ",[334,742,454],{}," al ",[334,745,746],{},"Info.plist"," de la app y pone los iconos de la app (y los iconos de\nevento como iconos alternativos) en el catálogo de recursos.",[623,749,751],{"id":750},"compila-la-app-sin-firmar","Compila la app sin firmar",[628,753,755],{"className":630,"code":754,"language":632,"meta":633,"style":633},"export IPHONEOS_DEPLOYMENT_TARGET=15.0\nbash scripts\u002Fios-unsigned-ipa.sh release build\u002FTRS-Launcher-app.ipa\n",[334,756,757,775],{"__ignoreMap":633},[637,758,759,763,767,771],{"class":639,"line":640},[637,760,762],{"class":761},"spNyl","export",[637,764,766],{"class":765},"sTEyZ"," IPHONEOS_DEPLOYMENT_TARGET",[637,768,770],{"class":769},"sMK4o","=",[637,772,774],{"class":773},"sbssI","15.0\n",[637,776,777,779,782,785],{"class":639,"line":653},[637,778,632],{"class":643},[637,780,781],{"class":646}," scripts\u002Fios-unsigned-ipa.sh",[637,783,784],{"class":646}," release",[637,786,787],{"class":646}," build\u002FTRS-Launcher-app.ipa\n",[278,789,790],{},"Qué pasa por dentro:",[792,793,794,815,825,839],"ol",{},[298,795,796,799,800,803,804,806,807,810,811,814],{},[334,797,798],{},"cargo build --lib --target aarch64-apple-ios --release --features tauri\u002Fcustom-protocol",", con ",[334,801,802],{},"TAURI_CONFIG"," igual\nal contenido de ",[334,805,609],{},". La feature ",[334,808,809],{},"custom-protocol"," integra la interfaz; sin ella la app busca un\nservidor de desarrollo en ",[334,812,813],{},"localhost:3000"," y se cierra enseguida.",[298,816,817,818,821,822,284],{},"La biblioteca ",[334,819,820],{},"libtrs_launcher_lib.a"," se copia a ",[334,823,824],{},"src-tauri\u002Fgen\u002Fapple\u002FExternals\u002Farm64\u002Frelease\u002Flibapp.a",[298,826,827,830,831,834,835,838],{},[334,828,829],{},"scripts\u002Fios\u002Fdisable-rust-phase.py"," desactiva la fase de build de Xcode «Build Rust Code» (",[334,832,833],{},"tauri ios xcode-script","):\nsolo funciona dentro de un ",[334,836,837],{},"tauri ios build"," en marcha, y la biblioteca ya está en su sitio.",[298,840,841,844,845,848,849,852,853,856],{},[334,842,843],{},"xcodebuild … archive"," con ",[334,846,847],{},"CODE_SIGNING_ALLOWED=NO","; después la ",[334,850,851],{},".app"," se comprime como ",[334,854,855],{},"Payload\u002F"," en el IPA.",[278,858,859,860,863,864,867,868,871,872,875,876,879],{},"Para un build debug usa ",[334,861,862],{},"debug"," en lugar de ",[334,865,866],{},"release"," (la biblioteca va entonces a ",[334,869,870],{},"Externals\u002Farm64\u002Fdebug\u002F","). Para\nCurseForge, define ",[334,873,874],{},"CURSEFORGE_API_KEY"," o pon la clave en ",[334,877,878],{},"~\u002F.tauri\u002Fcurseforge-api-key","; es opcional, sin ella CurseForge\nse oculta.",[623,881,883],{"id":882},"compila-el-motor-de-juego","Compila el motor de juego",[628,885,887],{"className":630,"code":886,"language":632,"meta":633,"style":633},"JAVA8_HOME=$(\u002Fusr\u002Flibexec\u002Fjava_home -v 1.8) bash scripts\u002Fios\u002Fbuild-engine.sh build\u002Fengine-ios\n",[334,888,889],{"__ignoreMap":633},[637,890,891,894,897,900,903,906,908,911,914],{"class":639,"line":640},[637,892,893],{"class":765},"JAVA8_HOME",[637,895,896],{"class":769},"=$(",[637,898,899],{"class":643},"\u002Fusr\u002Flibexec\u002Fjava_home",[637,901,902],{"class":646}," -v",[637,904,905],{"class":773}," 1.8",[637,907,548],{"class":769},[637,909,910],{"class":643}," bash",[637,912,913],{"class":646}," scripts\u002Fios\u002Fbuild-engine.sh",[637,915,916],{"class":646}," build\u002Fengine-ios\n",[278,918,919,920,925,926,929,930,341,933,341,936,939,940,527,943,946,947,950],{},"El script descarga ",[282,921,924],{"href":922,"rel":923},"https:\u002F\u002Fgithub.com\u002FAngelAuraMC\u002FAmethyst-iOS",[516],"Amethyst-iOS"," en el commit fijo\n",[334,927,928],{},"9212a1894865e7ac0466029e25ddb0d895544c76",", compara con él los archivos incluidos, compila el motor nativo y MobileGlues\ncon CMake y la parte de Java con el JDK 8. El resultado es una carpeta con ",[334,931,932],{},"Frameworks\u002F",[334,934,935],{},"libs\u002F",[334,937,938],{},"resources\u002F",",\n",[334,941,942],{},"LICENSES\u002F",[334,944,945],{},"engine.json",". Los entornos de Java ",[291,948,949],{},"no"," van dentro: la app los descarga la primera vez que inicias una\npartida.",[623,952,954],{"id":953},"mete-el-motor-en-la-app","Mete el motor en la app",[628,956,958],{"className":630,"code":957,"language":632,"meta":633,"style":633},"bash scripts\u002Fios\u002Fpackage-ipa.sh build\u002FTRS-Launcher-app.ipa build\u002Fengine-ios build\u002FTRS-Launcher.ipa\n",[334,959,960],{"__ignoreMap":633},[637,961,962,964,967,970,973],{"class":639,"line":640},[637,963,632],{"class":643},[637,965,966],{"class":646}," scripts\u002Fios\u002Fpackage-ipa.sh",[637,968,969],{"class":646}," build\u002FTRS-Launcher-app.ipa",[637,971,972],{"class":646}," build\u002Fengine-ios",[637,974,975],{"class":646}," build\u002FTRS-Launcher.ipa\n",[278,977,978,979,981,982,399,985,988,989,992],{},"Copia el motor en la app, añade las claves del Info.plist para la app Archivos, el modo horizontal, el ratón y los\nmandos, y lo firma todo con ",[334,980,436],{},": la app con los entitlements de\n",[334,983,984],{},"src-tauri\u002Fplugins\u002Ftauri-plugin-trs-game\u002Fios\u002Ftrs-game.entitlements",[334,986,987],{},"get-task-allow"," para JIT, el límite de memoria\nampliado y el espacio de direcciones ampliado). Con ",[334,990,991],{},"TRS_IOS_ENTITLEMENTS"," puedes indicar otro archivo.",[623,994,996],{"id":995},"instálalo","Instálalo",[278,998,999,1000,1003,1004,1007,1008,1012],{},"Copia ",[334,1001,1002],{},"build\u002FTRS-Launcher.ipa"," a tu iPhone o iPad e instálalo en AltStore o SideStore con ",[291,1005,1006],{},"My Apps → +",". Lo firman con\ntu Apple ID, igual que la app oficial. Otras herramientas que firman un IPA con tu Apple ID deberían funcionar también,\npero no las hemos probado. Después, ",[282,1009,1011],{"href":1010},"\u002Fes\u002Fgetting-started\u002Fiphone-ipad#activar-jit","activa JIT"," para jugar.",[1014,1015,1016],"note",{},"Cuando AltStore\u002FSideStore vuelven a firmar la app con un Apple ID gratuito, normalmente se pierden los dos entitlements\nde memoria. La app comprueba en tiempo de ejecución lo que tiene de verdad y elige la memoria de Java según eso, así que\nel juego recibe menos memoria que con TrollStore.",[362,1018,1020],{"id":1019},"ejecutarla-desde-xcode-con-tu-propio-apple-id","Ejecutarla desde Xcode con tu propio Apple ID",[278,1022,1023],{},"También puedes arrancar la app directamente desde Xcode en un iPhone conectado y firmarla con tu propio equipo (un Apple\nID gratuito sirve como «Personal Team»). Es práctico si trabajas en la interfaz. Dos cosas que debes saber:",[295,1025,1026,1033],{},[298,1027,1028,1029,1032],{},"Por este camino la app ",[291,1030,1031],{},"no tiene motor de juego",": al iniciar una instancia avisa de que falta el motor. El inicio\nde sesión, social, vestuario, modpacks y todo lo demás funcionan.",[298,1034,1035,1036,284],{},"La CI nunca firma con un equipo, así que ",[291,1037,1038],{},"no hemos probado este camino",[619,1040,1041,1045,1052,1079,1086,1090,1109,1116,1120,1139,1143],{"level":621},[623,1042,1044],{"id":1043},"compila-la-biblioteca-de-rust-para-debug","Compila la biblioteca de Rust para Debug",[278,1046,1047,1048,1051],{},"Sigue los pasos hasta ",[282,1049,718],{"href":1050},"#crea-el-proyecto-de-xcode"," y luego:",[628,1053,1055],{"className":630,"code":1054,"language":632,"meta":633,"style":633},"export IPHONEOS_DEPLOYMENT_TARGET=15.0\nbash scripts\u002Fios-unsigned-ipa.sh debug build\u002FTRS-Launcher-debug.ipa\n",[334,1056,1057,1067],{"__ignoreMap":633},[637,1058,1059,1061,1063,1065],{"class":639,"line":640},[637,1060,762],{"class":761},[637,1062,766],{"class":765},[637,1064,770],{"class":769},[637,1066,774],{"class":773},[637,1068,1069,1071,1073,1076],{"class":639,"line":653},[637,1070,632],{"class":643},[637,1072,781],{"class":646},[637,1074,1075],{"class":646}," debug",[637,1077,1078],{"class":646}," build\u002FTRS-Launcher-debug.ipa\n",[278,1080,1081,1082,1085],{},"Así la biblioteca queda en ",[334,1083,1084],{},"src-tauri\u002Fgen\u002Fapple\u002FExternals\u002Farm64\u002Fdebug\u002Flibapp.a"," y la fase de build de Rust queda\ndesactivada en el proyecto, de modo que Xcode puede compilar la app por su cuenta.",[623,1087,1089],{"id":1088},"abre-el-proyecto","Abre el proyecto",[628,1091,1093],{"className":630,"code":1092,"language":632,"meta":633,"style":633},"open src-tauri\u002Fgen\u002Fapple\u002F*.xcodeproj\n",[334,1094,1095],{"__ignoreMap":633},[637,1096,1097,1100,1103,1106],{"class":639,"line":640},[637,1098,1099],{"class":643},"open",[637,1101,1102],{"class":646}," src-tauri\u002Fgen\u002Fapple\u002F",[637,1104,1105],{"class":765},"*",[637,1107,1108],{"class":646},".xcodeproj\n",[278,1110,1111,1112,1115],{},"Elige el esquema que termina en ",[334,1113,1114],{},"_iOS"," y tu iPhone como destino.",[623,1117,1119],{"id":1118},"elige-tu-equipo-y-tu-bundle-id","Elige tu equipo y tu bundle ID",[278,1121,1122,1123,1126,1127,1130,1131,1134,1135,1138],{},"En el target de la app, en ",[291,1124,1125],{},"Signing & Capabilities",", elige tu ",[291,1128,1129],{},"Team"," y cambia el ",[291,1132,1133],{},"Bundle Identifier"," por uno\npropio (por ejemplo ",[334,1136,1137],{},"io.github.tunombre.trslauncher","): Apple solo deja usar un bundle ID a un equipo.",[623,1140,1142],{"id":1141},"ejecuta","Ejecuta",[278,1144,1145,1146,1149,1150,399,1153,1156,1157,284],{},"Pulsa ",[291,1147,1148],{},"Run",". Desde iOS 16, el iPhone pide primero el ",[291,1151,1152],{},"Modo de desarrollador",[291,1154,1155],{},"Ajustes → Privacidad y seguridad →\nModo de desarrollador","). Con un Apple ID gratuito puede que además tengas que confiar en tu perfil de desarrollador en\n",[291,1158,1159],{},"Ajustes → General → VPN y gestión de dispositivos",[1161,1162,1163,1164,1166],"tip",{},"Los ajustes de firma de Xcode se guardan en el proyecto generado. Si borras ",[334,1165,398],{}," y lo vuelves a crear,\nse pierden.",[362,1168,1170],{"id":1169},"hazla-tu-propia-app","Hazla tu propia app",[295,1172,1173,1179,1201],{},[298,1174,1175,1178],{},[291,1176,1177],{},"Bundle ID:"," AltStore\u002FSideStore firman el IPA con tu Apple ID, así que para eso no tienes que cambiar nada. Para\nXcode, cambia el bundle ID allí (mira arriba).",[298,1180,1181,1190,1191,1194,1195,1197,1198,1200],{},[291,1182,1183,1184,606,1187,284],{},"No cambies ",[334,1185,1186],{},"identifier",[334,1188,1189],{},"src-tauri\u002Ftauri.conf.json"," También se usa para Android, donde el paquete de Kotlin y el\ncódigo de Rust dependen de él, y el build de Android se detiene (mira\n",[282,1192,260],{"href":1193},"\u002Fes\u002Fdevelopers\u002Fbuild-android#hazla-tu-propia-app","). Un ",[334,1196,1186],{}," solo para iOS\nen ",[334,1199,609],{}," podría funcionar, pero no está probado.",[298,1202,1203,1206,1207,1210,1211,1213],{},[291,1204,1205],{},"Deja como está el ID de la tarea en segundo plano"," ",[334,1208,1209],{},"dev.theredstonee.trslauncher.push-poll",": aparece en\n",[334,1212,454],{}," y en el código Swift del plugin de notificaciones, e iOS solo ejecuta las tareas que figuran\nen el Info.plist.",[278,1215,1216],{},"Lo que sigue funcionando en tu propio build, según el código:",[295,1218,1219,1225,1231,1241],{},[298,1220,1221,1224],{},[291,1222,1223],{},"El inicio de sesión con Microsoft"," usa el código de dispositivo (escribes un código en la página de Microsoft); no\ndepende del bundle ID.",[298,1226,1227,1230],{},[291,1228,1229],{},"Los servicios de TRS"," (amigos, chat, capas, API de TRS) hablan con la misma API; no se comprueba ni la app ni su\nfirma.",[298,1232,1233,1236,1237,1240],{},[291,1234,1235],{},"Los enlaces"," como ",[334,1238,1239],{},"trs-launcher:\u002F\u002Fpack\u002F\u003Ccode>"," usan el mismo esquema en todos los builds.",[298,1242,1243,1246],{},[291,1244,1245],{},"Actualizaciones:"," tu build no está ligado a nuestra fuente de AltStore\u002FSideStore. Lo actualizas compilando e\ninstalando de nuevo.",[278,1248,1249,1250,284],{},"Si algo falla en tu propio build, ",[282,1251,1252],{"href":224},"avísanos",[362,1254,1256],{"id":1255},"ejecutar-las-comprobaciones","Ejecutar las comprobaciones",[278,1258,1259],{},"Las mismas comprobaciones que la CI:",[628,1261,1263],{"className":630,"code":1262,"language":632,"meta":633,"style":633},"pnpm generate\ncd src-tauri\nIPHONEOS_DEPLOYMENT_TARGET=15.0 cargo clippy --workspace --target aarch64-apple-ios -- -D warnings\n# plugin del juego para iOS, Rust y su paquete Swift (job \"iOS engine\"):\nIPHONEOS_DEPLOYMENT_TARGET=14.0 cargo build -p tauri-plugin-trs-game --target aarch64-apple-ios\n",[334,1264,1265,1271,1278,1312,1318],{"__ignoreMap":633},[637,1266,1267,1269],{"class":639,"line":640},[637,1268,666],{"class":643},[637,1270,714],{"class":646},[637,1272,1273,1275],{"class":639,"line":653},[637,1274,657],{"class":656},[637,1276,1277],{"class":646}," src-tauri\n",[637,1279,1280,1283,1285,1288,1291,1294,1297,1300,1303,1306,1309],{"class":639,"line":663},[637,1281,1282],{"class":765},"IPHONEOS_DEPLOYMENT_TARGET",[637,1284,770],{"class":769},[637,1286,1287],{"class":646},"15.0",[637,1289,1290],{"class":643}," cargo",[637,1292,1293],{"class":646}," clippy",[637,1295,1296],{"class":646}," --workspace",[637,1298,1299],{"class":646}," --target",[637,1301,1302],{"class":646}," aarch64-apple-ios",[637,1304,1305],{"class":646}," --",[637,1307,1308],{"class":646}," -D",[637,1310,1311],{"class":646}," warnings\n",[637,1313,1314],{"class":639,"line":672},[637,1315,1317],{"class":1316},"sHwdD","# plugin del juego para iOS, Rust y su paquete Swift (job \"iOS engine\"):\n",[637,1319,1320,1322,1324,1327,1329,1332,1335,1338,1340],{"class":639,"line":686},[637,1321,1282],{"class":765},[637,1323,770],{"class":769},[637,1325,1326],{"class":646},"14.0",[637,1328,1290],{"class":643},[637,1330,1331],{"class":646}," build",[637,1333,1334],{"class":646}," -p",[637,1336,1337],{"class":646}," tauri-plugin-trs-game",[637,1339,1299],{"class":646},[637,1341,683],{"class":646},[362,1343,1345],{"id":1344},"problemas","Problemas",[623,1347,1349,1350,1352],{"id":1348},"build-phase-tauri-ios-xcode-script-nicht-gefunden","«Build-Phase ",[334,1351,833],{}," nicht gefunden»",[278,1354,1355,1357],{},[334,1356,410],{}," desactiva esa fase de build la primera vez que se ejecuta; una segunda ejecución ya no la\nencuentra y se detiene con este mensaje. La CI siempre empieza con un proyecto nuevo. En local, borra el proyecto generado\ny vuelve a crearlo:",[628,1359,1361],{"className":630,"code":1360,"language":632,"meta":633,"style":633},"rm -rf src-tauri\u002Fgen\u002Fapple\nbash scripts\u002Fios-project.sh\n",[334,1362,1363,1374],{"__ignoreMap":633},[637,1364,1365,1368,1371],{"class":639,"line":640},[637,1366,1367],{"class":643},"rm",[637,1369,1370],{"class":646}," -rf",[637,1372,1373],{"class":646}," src-tauri\u002Fgen\u002Fapple\n",[637,1375,1376,1378],{"class":639,"line":653},[637,1377,632],{"class":643},[637,1379,730],{"class":646},[623,1381,1383],{"id":1382},"errores-sobre-el-deployment-target-o-apis-de-ios-14","Errores sobre el deployment target o APIs de iOS 14",[278,1385,1386,1387,1389],{},"Define ",[334,1388,613],{}," antes de compilar la app (14.0 para la comprobación del plugin del motor): los\npaquetes Swift necesitan al menos iOS 14.",[623,1391,1393],{"id":1392},"la-app-se-cierra-nada-más-abrirla","La app se cierra nada más abrirla",[278,1395,1396,1397,1400,1401,1403,1404,1406],{},"Si compilaste la biblioteca de Rust a mano, seguramente falta ",[334,1398,1399],{},"--features tauri\u002Fcustom-protocol",", y la app espera un\nservidor de desarrollo en ",[334,1402,813],{},". Usa ",[334,1405,410],{},", que siempre lo añade.",[623,1408,1410],{"id":1409},"jdk-8-fehlt-java8_home-setzen-o-java8_home-ist-kein-jdk-8","«JDK 8 fehlt (JAVA8_HOME setzen)» o «JAVA8_HOME ist kein JDK 8»",[278,1412,1413,1414,1416],{},"La parte de Java del motor necesita exactamente un JDK 8. Instala uno y haz que ",[334,1415,893],{}," apunte a él.",[623,1418,1420],{"id":1419},"ldid-fehlt-brew-install-ldid","«ldid fehlt (brew install ldid)»",[278,1422,1423,1426,1427,1429,1430,284],{},[334,1424,1425],{},"package-ipa.sh"," firma con ",[334,1428,436],{},": ",[334,1431,1432],{},"brew install ldid",[623,1434,1436],{"id":1435},"vendored-datei-weicht-von-upstream-ab","«vendored Datei weicht von Upstream ab»",[278,1438,1439,1440,1443,1444,1447],{},"Un archivo de ",[334,1441,1442],{},"ios\u002FEngine\u002Fvendor\u002Famethyst-ios"," no coincide con el commit fijo de Amethyst-iOS. Solo pueden diferir los\narchivos parcheados que aparecen en el ",[334,1445,1446],{},"UPSTREAM.md"," de esa carpeta: deshaz tu cambio o actualiza la lista.",[623,1449,1451],{"id":1450},"el-juego-se-cierra-nada-más-empezar","El juego se cierra nada más empezar",[278,1453,1454,1455,1458,1459,1462,1463,399,1466,1469],{},"Casi siempre es porque ",[291,1456,1457],{},"JIT no está activo",". Mira ",[282,1460,1461],{"href":1010},"Activar JIT",". El\nregistro del motor está en la app Archivos, en ",[291,1464,1465],{},"En mi iPhone → TRS Launcher",[334,1467,1468],{},"trs-engine.log",").",[623,1471,1473],{"id":1472},"minecraft-263-no-arranca","Minecraft 26.3 no arranca",[278,1475,1476],{},"26.3 todavía no funciona en iOS (al motor le falta allí la integración con SDL3). Usa 26.2 o anterior.",[623,1478,1480],{"id":1479},"no-se-puede-verificar-la-app-al-cabo-de-una-semana","«No se puede verificar la app» al cabo de una semana",[278,1482,1483],{},"Se acabaron los 7 días del Apple ID gratuito. Refresca la app en AltStore\u002FSideStore o vuelve a ejecutarla desde Xcode.",[362,1485,1487],{"id":1486},"licencia-y-nombre","Licencia y nombre",[278,1489,1490,1491,399,1494,1497,1498,1501,1502,1505,1506,1509,1510,1512],{},"TRS Launcher es software libre bajo la ",[291,1492,1493],{},"GNU General Public License v3.0",[334,1495,1496],{},"LICENSE",", avisos de copyright en ",[334,1499,1500],{},"NOTICE",").\nPuedes compilar, cambiar y compartir la app. Si compartes un IPA, la GPL exige que sea bajo la misma licencia y que\npongas a disposición el ",[291,1503,1504],{},"código fuente completo"," de ese build exacto, con tus cambios. El motor de iOS se basa en\nAmethyst-iOS (GPL-3.0) e incluye más partes de terceros; sus textos de licencia se copian dentro de la app\n(",[334,1507,1508],{},"licenses\u002Fengine",") y aparecen en ",[334,1511,1500],{},": déjalos.",[278,1514,1515],{},"El repositorio no tiene reglas propias sobre la marca. Aun así: si repartes tu propio build, dale otro nombre y otro\nbundle ID para que nadie lo confunda con el TRS Launcher oficial, y remite a tu código fuente, no a nuestro soporte.",[362,1517,1519],{"id":1518},"siguientes-pasos","Siguientes pasos",[1521,1522,1523,1527],"card-group",{},[1524,1525,1526],"card",{"icon":32,"title":260,"to":261},"El APK con tu propia clave de firma, en Windows y Linux.",[1524,1528,1530],{"icon":37,"title":1529,"to":35},"iPhone y iPad","Instala la app oficial con AltStore o SideStore.",[1532,1533,1534],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":633,"searchDepth":653,"depth":653,"links":1536},[1537,1538,1539,1548,1554,1555,1556,1568,1569],{"id":364,"depth":653,"text":365},{"id":473,"depth":653,"text":474},{"id":617,"depth":653,"text":314,"children":1540},[1541,1542,1543,1544,1545,1546,1547],{"id":625,"depth":663,"text":626},{"id":701,"depth":663,"text":702},{"id":717,"depth":663,"text":718},{"id":750,"depth":663,"text":751},{"id":882,"depth":663,"text":883},{"id":953,"depth":663,"text":954},{"id":995,"depth":663,"text":996},{"id":1019,"depth":653,"text":1020,"children":1549},[1550,1551,1552,1553],{"id":1043,"depth":663,"text":1044},{"id":1088,"depth":663,"text":1089},{"id":1118,"depth":663,"text":1119},{"id":1141,"depth":663,"text":1142},{"id":1169,"depth":653,"text":1170},{"id":1255,"depth":653,"text":1256},{"id":1344,"depth":653,"text":1345,"children":1557},[1558,1560,1561,1562,1563,1564,1565,1566,1567],{"id":1348,"depth":663,"text":1559},"«Build-Phase tauri ios xcode-script nicht gefunden»",{"id":1382,"depth":663,"text":1383},{"id":1392,"depth":663,"text":1393},{"id":1409,"depth":663,"text":1410},{"id":1419,"depth":663,"text":1420},{"id":1435,"depth":663,"text":1436},{"id":1450,"depth":663,"text":1451},{"id":1472,"depth":663,"text":1473},{"id":1479,"depth":663,"text":1480},{"id":1486,"depth":653,"text":1487},{"id":1518,"depth":653,"text":1519},"Compila el IPA de TRS Launcher para iPhone y iPad en un Mac: proyecto de Xcode, biblioteca de Rust, motor de juego, sideload y ejecución con tu propio Apple ID.","md",null,{},{"icon":37},{"title":264,"description":1570},"NLuUCtKzV5s0oDW2Z8-8yp-x6XUFtmkhEaelO9Z_pRo",[1578,1580],{"title":260,"path":261,"stem":262,"description":1579,"icon":32,"children":-1},"Compila el APK de TRS Launcher desde el código: SDK y NDK de Android, targets de Rust, builds debug y release, tu propia clave de firma y tu propio ID de app.",{"title":268,"path":269,"stem":270,"description":1581,"icon":271,"children":-1},"Plugin y mod de servidor para bloquear, forzar o limitar funciones del TRS Client en tu servidor: plataformas, configuración, protocolo e IDs de módulos.",1792830338527]