¿Es posible compilar y ejecutar un proyecto Xcode en un dispositivo con jailbreak sin un certificado de desarrollador pagado?

Tanto por diversión como por razones presupuestarias, me gustaría tomar un paquete que normalmente requeriría una cuenta de desarrollador y crear una aplicación para ejecutarla en un dispositivo iOS con jailbreak.

Tengo un iPod Touch de quinta generación, con jailbreak usando evasi0n, con iOS 6.1.

Estoy usando Xcode 4.6 con OS X (10.8.2) Lion.

Respuestas (3)

Los siguientes pasos instructivos para lograr este propósito se toman de: http://iphonedevwiki.net/index.php/Xcode

Mis hallazgos y acciones se proporcionan en cada paso.

1. Cree un certificado de firma de código autofirmado con el nombre "Desarrollador de iPhone" en el llavero de "inicio de sesión" (predeterminado) usando Acceso a Llaveros.

  • Tomé capturas de pantalla mientras seguía las instrucciones anteriores.
  • Dejé la mayoría de los campos en blanco o con su valor predeterminado.

ingrese la descripción de la imagen aquí

2. Abierto /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist(4.2 o inferior: /Developer/Platforms/iPhoneOS.platform/Info.plist). Es posible que necesite permiso de root.

  • Estoy usando Xcode 4.6, así que abrí el .plistarchivo anterior.

3. Reemplace todas las apariciones de XCiPhoneOSCodeSignContextpor XCCodeSignContext. Hay tres de ellos (XCode Versión 3.2.4+).

  • Hice tres modificaciones como indican las capturas de pantalla.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

4. Guarde el archivo y reinicie Xcode.

  • Guardó el archivo.

5. Asegúrese de tener ldid en su Mac. Coloque una copia en algún lugar, por ejemplo, en /usr/local/bin.

6. Cree el script de Python ldid3.py justo al lado del programa ldid. Hazlo ejecutable. Rellénalo con:

#!/usr/bin/env python

from sys import argv
from subprocess import check_call
from os.path import basename, dirname, splitext, join
from tempfile import NamedTemporaryFile

app = argv[-1]
ldid_path = join(dirname(__file__), 'ldid')
obj_path = join(app, splitext(basename(app))[0])

if '-gta' not in argv:
    check_call([ldid_path, '-S', obj_path])
else:
    with NamedTemporaryFile('w+b', 0) as f:
        f.write("""
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>get-task-allow</key>
    <true/>
  </dict>
</plist>
        """)
        check_call([ldid_path, '-S' + f.name, obj_path])
  • Creé un nuevo archivo de texto sin formato y copié y pegué el código anterior en él.
  • Guardé este archivo como ldid3.pyy lo almacené en el /usr/local/bindirectorio.
  • En la terminal, ejecutó chmod 777 /usr/local/bin/ldid3.py.

7. Abrir iPhoneCodeSign.xcspec. Este archivo se puede encontrar en [Para Xcode 4.6: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec]:

8. Cambie la entrada en el archivo de llamar codesigna ldid3.py.

  • Según las instrucciones oficiales, convirtió el archivo de especificaciones en texto sin formato escribiendo en la consola:sudo plutil -convert xml1 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec
  • Abrí el archivo con TextEdit.
  • Reemplazado <key>CommandLine</key><string>/usr/bin/codesign</string>con <key>CommandLine</key><string>/usr/local/bin/ldid3.py</string>.

9. Guarde el archivo y reinicie Xcode.

  • Guardé el archivo y salí de TextEdit.

10. Cree un archivo /var/mobile/tdmtanfen el dispositivo para habilitar la "omisión de TDMTANF" de Apple en installd (advertencia: hacerlo también lo colocará en un GameCenter aislado).

  • Creo un archivo de texto vacío en Windows, lo tdmtanfllamo , lo introduzco mediante SSH en mi iPod, lo subo a /var/mobile/, y reinicio mi iPod.

Ahora que todo eso ha terminado...

Abro mi proyecto Xcode existente y presiono Ejecutar. Funciona en el simulador de iOS sin ningún problema.

ingrese la descripción de la imagen aquí

Me aseguro de que la firma de código esté configurada para usar el certificado configurado en el paso 1.

ingrese la descripción de la imagen aquí

Construyo la aplicación (Proyecto > Construir). Sigue un mensaje de éxito.

Tomo la carpeta TicTacToe.appde mi aplicación /Libary/Developer/Xcode/DerivedData/TicTacToe-cjgzmoxtflyegtfypsbxbuiuwxns/Build/Products/Debug-iphoneos/y la transfiero a mi máquina con Windows para instalarla en mi iPod.

En un intento de instalar la aplicación en mi iPod, la arrastré TicTacToe.appa la sección de aplicaciones de la Utilidad de configuración del iPhone, pero recibí este mensaje de error que dice que mi aplicación "no es una aplicación móvil válida".

También intenté instalar manualmente la aplicación usando iFunbox y la aplicación AppCake que se encuentra en Cydia. Ambos fallan.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Como punto de interés, porque mientras busqué en Google, noté que muchas personas mencionan la importancia de esto: tengo AppSync instalado. (Perdón por la enorme captura de pantalla. Si debo quitarla, ¡házmelo saber!)

ingrese la descripción de la imagen aquí

Conclusión

Entonces, a pesar de seguir las instrucciones de cerca, varias veces, la Utilidad de configuración de iPhone no reconoce mi aplicación como una aplicación válida. No puedo instalar la aplicación manualmente usando programas como iFunbox o aplicaciones de Cydia como AppCake.

Sospecho que la aplicación no es válida, pero después de haber seguido las instrucciones cuidadosamente, no estoy seguro de por qué.

¿Alguien puede decirme por qué mi aplicación no es válida y qué puedo hacer para solucionarlo, además de gastar dinero?

Sin embargo, fue una lectura interesante.
No, me alegro de haberlo leído y probablemente volveré a leerlo en el futuro. Gracias por compartirlo.
Esto fue muy útil para mí cuando trabajaba en Xcode 4.2 e iOS 4, espero que alguien pueda actualizar el procedimiento a Xcode 4.6
Después de descargar ldid, debe cambiar sus permisos a 755 con chmod 755 ldid. Esto me estaba causando un error de salida 1.

Puede conectar su dispositivo y seleccionar su dispositivo iOS como destino de ejecución. cuando se ejecuta, la aplicación se instala automáticamente en su dispositivo. O puede seleccionar su dispositivo iOS, entonces no es necesario ejecutarlo, solo compilarlo y archivarlo. Después de eso, distribuya... elija Guardar para Enterprise o Ad-Hoc Deployment. Obtendrá su archivo .ipa. Espero que te ayude..

Continuando con la respuesta de @joncom ... puede agregar los archivos .app a su iPhone directamente, solo con unos pocos pasos adicionales.

  • copie el .apparchivo en su escritorio y luego comprímalo
  • renombrar el [yourappname].zipa[yourappname].ipa
  • luego continúe y descargue AppSync de cydia
  • descargue e instale el archivo .ipa en su dispositivo

NOTA:

también puede hacer esto directamente sin pasar por todas las modificaciones del código python que mencionó @joncom. Lea más aquí