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.
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.
4. Guarda el archivo y reinicia Xcode.
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.
Me aseguro de que la Firma de Código esté configurada para usar el certificado configurado en el paso 1.
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.
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!)
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?