¿Cómo puedo implementar una aplicación para iPhone de Xcode en un dispositivo iPhone real?

157

¿Cómo puedo implementar una aplicación de iPhone desde Xcode a un dispositivo iPhone real sin tener un certificado de Apple de US $ 99?

DFG
fuente
Vea esta respuesta a una pregunta que hice anteriormente para obtener una muy buena guía sobre cómo ponerla en su iPhone con jailbreak.
Dan Walker
2
Xcode 7 tiene aprovisionamiento gratuito ahora, por lo que no es necesario registrarse para obtener una cuenta de desarrollador de Apple para probar aplicaciones en un dispositivo real. Vea esta respuesta para más detalles.
Suragch

Respuestas:

56

Parece que la aplicación no está firmada. Descargue ldid de Cydia y luego utilícelo así:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

También asegúrese de que el binario esté marcado como ejecutable: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph

rpetrich
fuente
3
Sí, necesitarás hacer jailbreak a tu dispositivo para que este método funcione. (obviamente)
esqew el
¿Cómo se inicia el comando ldid -S ...? ¿Necesitas una consola SSH para eso? ¿Hay alguna forma gratuita de obtener un cliente SSH en un iPhone con jailbreak?
Dan Leahu
tanderson: hay un paquete ldid en Cydia y puedes compilar uno para OS X
rpetrich
rpetrich Creo que sus preguntas son cómo escribir y usar el comando, no cómo adquirir el paquete. @tanderson puede pasar por Open SSH (y luego conectarse al teléfono desde su escritorio) o una Terminal dentro del propio iPhone. Ambas aplicaciones son descargas gratuitas de Cydia . Con SSH tiene la ventaja de que también puede usarlo para simplemente copiar su aplicación al teléfono con él. Si hace esto mucho, asegúrese de verificar las otras respuestas: puede hacer que XCode le haga todo el trabajo, pero es un procedimiento problemático engañarlo para que lo haga.
cregox
92

He usado una combinación de dos howtos: Jason y alex . Con el segundo tenemos la ventaja de poder depurar. Sobre todo copiaré los dos a continuación (y simplificaré los de Alex):

Actualización de enero de 2012: esto todavía funciona en SDK 4.2.1 e iOS 5.0.1. ¡Acabo de probarlo todo en una nueva computadora y dispositivo!


1. Crear certificado autofirmado

Parche su SDK de iPhone para permitir el uso de este certificado:

  1. Inicie Keychain Access.app. Sin elementos seleccionados, en el menú Llavero, seleccione Asistente de certificado y luego Crear un certificado.

    • Nombre: Desarrollador de iPhone
    • Tipo de certificado: firma de código
    • Permítame anular los valores predeterminados:
  2. Haga clic en continuar

    • Validez: 3650 días.
  3. Haga clic en continuar

  4. En blanco el campo de dirección de correo electrónico .

  5. Haga clic en Continuar hasta completar .

    Debería ver "Este certificado raíz no es de confianza" . Esto se espera.

  6. Configure el SDK de iPhone para permitir el uso del certificado autofirmado:

    sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist

    Si tiene Xcode abierto, reinícielo para que este cambio surta efecto.

Y si estás en iOS 5, ¡ya está! ¡Pruebalo ahora! Puede que no permita la depuración, ¡pero la aplicación estará allí!

Me sorprendió mucho esto porque, como deberían saber , ¡no tengo idea de qué se tratan todos esos ataques! Todo lo que hice fue mejorar un poco lo que encontré en otros lugares, como señalé.

Entonces, sí, todo el método ya no funciona de la misma manera y no pude molestarme en encontrar uno nuevo ... Excepto por esto, que usa una herramienta llamada Theos pero no pude pasar por todo el proceso.

Finalmente, si necesita desinstalarlo por cualquier razón, verifique el final de esta publicación. En mi caso, tuve que hacerlo porque no podía entender por qué todo el azul este método dejó de funcionar, y ya no podía importarme ya que ya teníamos la licencia tan esperada. (El maldito número DUNS lleva tanto tiempo ...)

.

.


.

.

.

2. Habilite Xcode para construir en un dispositivo con jailbreak

  1. En su iPhone con jailbreak, instale la aplicación AppSync agregando la fuente ** http://repo.hackyouriphone.org **

  2. Elimine los requisitos del SDK para la firma del código y los derechos (¡me encanta sed !):

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
  3. Presta atención a laiPhoneOS5.0.sdkparte. Si, por ejemplo, está usando iOS 4.2 SDK, simplemente reemplácelo en consecuencia:

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
  4. Concluya la eliminación de requisitos mediante el parcheo de Xcode. Esto significa edición binaria:

    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\xc3\x26\x00\x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support

    Si tiene Xcode abierto, reinícielo para que este cambio (y el último) surta efecto.

  5. Abra "Proyecto> Editar configuración del proyecto" (desde el menú). Haga clic en la pestaña "Compilar" . Busque "Identidad de firma de código" y su hijo "Cualquier dispositivo iPhoneOS" en la lista, y establezca ambos en la entrada "No firmar código" :

    texto alternativo

    Después de esto, siéntase libre de deshacer el paso 3. Al menos en mi caso todo salió bien.

  6. Configurando Xcode para firmar con nuestro certificado autofirmado personalizado (el primer tutorial). Este paso probablemente se puede omitir si no desea poder depurar:

    mkdir /Developer/iphoneentitlements401
    cd /Developer/iphoneentitlements401
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py

    Conecte su iPhone y abra Xcode. Ventana abierta> Organizador. Seleccione el dispositivo de la lista en el lado izquierdo y haga clic en "Usar para desarrollo". Se le pedirá que inicie sesión en el sitio web de aprovisionamiento, haga clic en cancelar. Está ahí para facilitar el aprovisionamiento legítimo, pero no dificulta el no aprovisionamiento ilegítimo.

    Ahora tiene que hacer esta última parte para cada nuevo proyecto que realice . Vaya al menú Proyecto> Nueva fase de compilación> Nueva fase de compilación del script de ejecución. En la ventana, copie / pegue esto:

    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi

.

.


.

.

Desinstalar

Para la primera parte:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Info.plist.bak /Developer/Platforms/iPhoneOS.platform/Info.plist

Para la 2da parte:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
sudo mv -f iPhoneOS\ Build\ System\ Support.original iPhoneOS\ Build\ System\ Support

en caso de que haya hecho el paso 3 en lugar de 2, simplemente modifíquelo en consecuencia también:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist

por lo demás, es solo revertir lo que hizo en XCode y eliminarlo /Developer/iphoneentitlements401/gen_entitlements.pysi lo desea:

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
cregox
fuente
Intenté seguir estas instrucciones, pero ahora 'Scheme' es del tipo My Mac 64 bit, y ya no tengo ninguna opción para ejecutar un simulador o un iPhone real, por lo que ni siquiera puedo probar el código. Estaba usando SDK 4.3, no estoy seguro de si eso importa
nosatalian
1
En realidad, actualice: después de cambiar el SDK base en la configuración del proyecto de iphoneos a iOS 4.3, las cosas funcionan. Aunque xcode dice 'Error al iniciar el programa remoto: no se pudo obtener la tarea para el proceso'. Puedo iniciar la aplicación haciendo clic en ella.
nosatalian
1
Recibo este error: The identity used to sign the executable is no longer valid. ... (0xE8008018) incluso cuando expiro 3650 días. Parece que el teléfono está haciendo una comprobación.
Stephen
funciona este truco de "parchear XCode" para 4.3.2 o lo va a frenar
Gabor
1
Punto 6. En mi caso, tuve que cambiar los permisos del archivo /Developer/iphoneentitlements401/gen_entitlements.py para que el usuario normal lo ejecute. Con esto el procedimiento funciona perfectamente.
abidibo
43

Aprovisionamiento gratuito después de Xcode 7

Para probar su aplicación en un dispositivo real en lugar de pagar la tarifa de desarrollador de Apple (o liberar su dispositivo), puede usar el nuevo aprovisionamiento gratuito que admite Xcode 7 e iOS 9.

Aquí están los pasos tomados más o menos de la documentación (que es bastante buena, así que lean):

1. Agregue su ID de Apple en Xcode

Vaya a XCode> Preferencias> pestaña Cuentas> botón Agregar (+)> Agregar ID de Apple. Consulte los documentos para obtener más ayuda.

ingrese la descripción de la imagen aquí

2. Haga clic en la pestaña General en el Navegador de proyectos

ingrese la descripción de la imagen aquí

3. Elija su ID de Apple en el menú emergente Equipo.

ingrese la descripción de la imagen aquí

4. Conecte su dispositivo y elíjalo en el menú del esquema.

ingrese la descripción de la imagen aquí

5. Haga clic en el botón Solucionar problemas

ingrese la descripción de la imagen aquí

Si recibe un error acerca de que el nombre del paquete no es válido, cámbielo a algo único.

6. Ejecute su aplicación

En Xcode, haga clic en el botón Construir y ejecutar.

ingrese la descripción de la imagen aquí

7. Confíe en el desarrollador de la aplicación en la configuración del dispositivo

Después de ejecutar su aplicación, recibirá un error de seguridad porque la aplicación que desea ejecutar no es de la App Store.

ingrese la descripción de la imagen aquí

En su dispositivo , vaya a Configuración> General> Perfil> su nombre de ID de Apple > Confíe en su nombre de ID de Apple > Confiar.

8. Ejecute su aplicación en su dispositivo nuevamente.

Eso es. Ahora puede ejecutar su propio (o cualquier otra aplicación para la que tenga el código fuente) sin tener que repartir los $ 99 dólares. Gracias, Apple, por finalmente permitir esto.

Suragch
fuente
1
muchas gracias. esto funcionó perfectamente sin la licencia de desarrollador de Apple pagada.
kishorer747
Sin embargo, esto tiene algunos problemas: solo puede instalar hasta 3 aplicaciones a la vez y debe renovar el certificado cada semana.
SilverWolf - Restablece a Monica
@seaturtle, gracias por la actualización. Eventualmente desembolsé el dinero para la licencia de desarrollador, así que no me he mantenido al día con esta respuesta. Eso es muy malo sobre las limitaciones. Hay algunas cosas sobre Android que son mucho mejores que Apple.
Suragch
9

No puede, no si está hablando de aplicaciones creadas con el SDK oficial y desplegadas directamente desde xcode.

micmcg
fuente
8

Tendrás que hacer jailbreak a tu dispositivo.

Can Berk Güder
fuente
1
Siga el método de @ rpetrich y haga SSH el ejecutable en la carpeta del dispositivo / Aplicaciones, debería funcionar después de un reinicio / respring.
esqew el
6

Hay una manera de implementar aplicaciones de iPhone sin pagar a Apple. Tendrá que hacer jailbreak a su dispositivo y seguir las instrucciones en http://www.alexwhittemore.com/?p=398

León
fuente
También una guía perfecta, con un enfoque diferente de @Dan ... Usé ambos, aunque.
cregox
5

Nada de lo que he visto en ninguna parte indica que puede implementar ad-hoc en un iPhone real sin un certificado (pagado).

Matthew Phillips
fuente
4

Estaba revisando el desarrollador de Apple anoche y allí, en el Certificado de aprovisionamiento, encontré algo como: "Firmar miembros del equipo". Creo que hay una manera de agregar miembros del equipo al perfil pagado. Simplemente puede pedirle al Propietario del Id. De la aplicación (pagado) que lo agregue como miembro del equipo. No estoy seguro. Todavía estoy buscando eso.

Akshay
fuente
Sí, puedes sumar miembros del equipo. Hay un límite de 200 dispositivos por año.
cregox
Cawas: ¿sabe cómo agregar un miembro a su ID de Apple?
Akshay
solo recibimos notificaciones si agrega la @ antes del nombre. Como usted mismo dijo, primero debe obtener una cuenta de pago. Entonces debería ser realmente simple porque no pude encontrar ningún tutorial sobre cómo hacerlo. Nunca lo hice yo mismo, aunque.
cregox 01 de
3

No, es fácil hacer esto. En Xcode, establezca la Configuración activa en Release. Cambie el dispositivo de Simulator a Device, sea cual sea el SDK. Si desea exportar directamente a su iPhone, conéctelo a su computadora. Presione Build and Go. Si su iPhone no está conectado a su computadora, aparecerá un mensaje diciendo que su iPhone no está conectado.

Si esto se aplica a usted: (el iPhone no estaba conectado)

Vaya a la carpeta de sus proyectos y luego a la carpeta de compilación dentro. Vaya a la carpeta Release-iphoneos y lleve la aplicación adentro, arrastre y suelte el ícono de iTunes. Cuando sincronice su dispositivo iTouch, lo copiará a su dispositivo. También aparecerá en iTunes como una aplicación para iPhone.

¡Espero que esto ayude!

PD: Si dice algo acerca de que un certificado no es válido, simplemente haga clic en el proyecto en Xcode, el pequeño icono del proyecto en la pila de archivos a la izquierda, y presione Apple + I, o haga clic en Obtener información en la barra de menú. Haga clic en Construir en la parte superior. En Firma de código, cambie la Identidad de firma de código: cualquier dispositivo con iPhone OS no se debe firmar.

cdespinosa
fuente
77
El OP no tiene un certificado de firma ni un perfil de aprovisionamiento. Estas instrucciones son para los miembros del Programa para desarrolladores de iPhone de $ 99, pero no abordan la cuestión de cómo ejecutar en el dispositivo sin registrarse en el programa.
cdespinosa
2

Esto realmente depende de la versión de Xcode que esté utilizando, ya que las diferentes versiones utilizan diferentes métodos para implementar en su iPhone sin un perfil de aprovisionamiento.

Xcode 3.2.1 es una buena versión y es fácil de resolver, pero necesitamos saber qué versión está utilizando.

Magnatek
fuente
2

La solución publicada por Cawas también funciona perfectamente con XCode4. Sin embargo, hay algunos cambios en la interfaz de usuario de IDE, por lo que debe investigar un poco para encontrar Run Script :)

En la vista Navegador de proyectos, haga clic en el elemento raíz del proyecto, luego en la ventana central seleccione Destino, luego haga clic en la pestaña Fases de compilación y en la parte inferior verá el botón Agregar fase de compilación, haga clic y seleccione Agregar secuencia de comandos de ejecución, luego pegue "codeign" "guión publicado por Cawas.

Gobol
fuente
1

No hay solución alternativa. Solo puede implementar aplicaciones ad hoc si están registradas en su dispositivo. Esto le impide crear su propia tienda de aplicaciones.


fuente