9 votos

¿Es posible compilar y ejecutar un proyecto de 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 construir una aplicación para ejecutar en un dispositivo iOS con jailbreak.

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

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

6voto

Joncom Puntos 206

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

Mis hallazgos y acciones se proporcionan debajo de cada paso.

1. Crea un certificado de firma de código autofirmado con el nombre "iPhone Developer" en el llavero "login" (predeterminado) utilizando Keychain Access.

  • Tomé capturas de pantalla mientras seguía la instrucción anterior.
  • Dejé la mayoría de los campos en blanco o con sus valores predeterminados.

introduzca la descripción de la imagen aquí

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

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

3. Reemplaza todas las apariciones de XCiPhoneOSCodeSignContext por XCCodeSignContext. Hay tres de ellas (versión de XCode 3.2.4+).

  • Hice tres modificaciones como indican las capturas de pantalla.

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

4. Guarda el archivo y reinicia Xcode.

  • Guardé el archivo.

5. Asegúrate de tener ldid en tu Mac. Coloca una copia en algún lugar, por ejemplo en /usr/local/bin.

6. Crea un script Python ldid3.py justo al lado del programa ldid. Hazlo ejecutable. Llé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("""

    get-task-allow

        """)
        check_call([ldid_path, '-S' + f.name, obj_path])
  • Creé un nuevo archivo de texto plano y copié y pegué el código anterior en él.
  • Guardé este archivo como ldid3.py y lo almacené en el directorio /usr/local/bin.
  • En la terminal, ejecuté chmod 777 /usr/local/bin/ldid3.py.

7. Abre 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. Cambia la entrada en el archivo de llamar a codesign a ldid3.py.

  • Según la instrucción oficial, convertí el archivo de especificación a texto plano 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.
  • Reemplacé CommandLine/usr/bin/codesign con CommandLine/usr/local/bin/ldid3.py.

9. Guarda el archivo y reinicia Xcode.

  • Guardé el archivo y cerré TextEdit.

10. Crea un archivo /var/mobile/tdmtanf en el dispositivo, para habilitar el "bypass de TDMTANF de Apple" en installd (advertencia: al hacerlo también te colocará en un GameCenter bajo sandbox).

  • Creé un archivo de texto vacío en Windows, lo nombré tdmtanf, accedí por SSH a mi iPod, lo subí a /var/mobile/, y reinicié mi iPod.

Ahora que todo eso ha terminado...

Abro mi proyecto existente de Xcode y presiono Run. Funciona en el simulador de iOS sin problemas.

introduzca 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.

introduzca la descripción de la imagen aquí

Compilo la aplicación (Proyecto > Build). Un mensaje de éxito sigue.

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

En un intento por instalar la aplicación en mi iPod, arrastré TicTacToe.app a la sección de aplicaciones de iPhone Configuration Utility, pero recibí un mensaje de error que decía 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 encontrada en Cydia. Ambos fallaron.

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

Como punto de interés, porque al buscar en Google, me di cuenta de que muchas personas mencionan la importancia de esto: Tengo AppSync instalado. (Lo siento por la enorme captura de pantalla. Si debo eliminarla, ¡por favor avísame!)

introduzca la descripción de la imagen aquí

Conclusión

Por lo tanto, a pesar de seguir las instrucciones detenidamente, varias veces, mi aplicación no es reconocida por iPhone Configuration Utility 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 es en efecto inválida, pero al seguir 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 que no tengo?

0 votos

Fue una lectura interesante, sin embargo.

0 votos

No - me alegra haberlo leído y probablemente volveré a él en el futuro. Gracias por compartirlo.

0 votos

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

0voto

Vijay Gharge Puntos 31

Puedes conectar tu dispositivo y seleccionar tu Dispositivo iOS como objetivo de ejecución. Cuando se ejecute, la aplicación se instalará automáticamente en tu dispositivo. O puedes seleccionar tu Dispositivo iOS, luego no es necesario ejecutar, simplemente compilar y archivar. Después de eso, distribuirlo... elige Guardar para implementación empresarial o Ad-Hoc. Obtendrás tu archivo .ipa. Espero que esto te pueda ayudar..

0voto

Aijaz Puntos 1

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

  • copia el archivo .app en tu escritorio, y luego comprímelo
  • renombrar el archivo [nombredeartuapp].zip a [nombredeartuapp].ipa
  • luego descarga AppSync desde cydia
  • descarga e instala el archivo .ipa en tu dispositivo

NOTA:

también puedes hacer esto directamente sin tener que pasar por la modificación de código en python mencionada por @joncom.. lee más aquí

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X