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


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

Author: Suragch, 2008-10-29

12 answers

Parece que la aplicación no está firmada. Descarga ldid desde Cydia y luego úsalo 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

 56
Author: rpetrich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-30 23:48:56

He usado una mezcla de dos howtos: Jason y alex . Con el segundo tenemos la ventaja de poder depurar. En su mayoría solo copiaré ambos a continuación (y simplificaré el de Alex):

Actualizar Jan 2012: esto todavía funciona en SDK 4.2.1 y iOS 5.0.1 - Acabo de probarlo todo en un nuevo equipo y dispositivo!


1. Crear Certificado Autofirmado

Parchee el SDK de su iPhone para permitir el uso del presente certificado:

  1. Inicie Acceso a Llavero.app. Sin elementos seleccionados, en el menú Llavero seleccione Asistente de certificado y, a continuación, Cree un certificado.

    • Nombre: Desarrollador de iPhone
    • Tipo de certificado: Firma de código
    • Permítanme anular los valores predeterminados:
  2. Haga clic en Continuar

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

  4. Borre el campo de dirección Email.

  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 tienes Xcode abierto, reinícialo para que este cambio tome efecto.

Y si estás en iOS 5, eso es todo! ¡Pruébalo ahora! Puede que no permita la depuración, pero la aplicación estará allí!

Yo estaba muy sorprendido por esto porque, como usted debe saber, no tengo ni idea de lo que todos esos hackings son todo! Todo lo que hice fue mejorar un poco lo que encontré en otros lugares, como señalé.

Así que sí, el método completo ya no funciona de la misma manera y no podía molestarme para 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 de todo este método dejó de funcionar, y no me podía importar ya que ya tenemos la licencia largamente esperada. (Maldito número DUNS toma tan largo...)

.

.


.

.

.

2. Habilitar Xcode para construir en dispositivo Jailbreak

  1. En su iPhone con jailbreak, instale la aplicación AppSync agregando la fuente http://cydia.hackulo.us

  2. Elimine los requisitos del SDK para la firma de 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. Paga atención a la parte iPhoneOS5.0.sdk. Si, por ejemplo, está utilizando 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. Concluir la eliminación de requisitos a través de parches 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. Abre "Proyecto>Editar Configuración del proyecto" (desde el menú). Haga clic en la pestaña "Build". Buscar " Firma de código Identity " and its child "Any iPhoneOS Device" in the list, and set both to the entry "No Firmar Código":

    texto alt

    Después de esto, no dude en deshacer el paso 3. Al menos en mi caso salió bien.

  6. Configurando Xcode a code sign con nuestro certificado autofirmado personalizado (el primer cómo hacerlo). Este paso probablemente se puede omitir si no desea ser capaz de 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
    

    Conecta tu iPhone y abre Xcode. Abrir Ventana>Organizador. Seleccione el dispositivo de la lista en el lado izquierdo, y haga clic en " Usar para el desarrollo."Se le solicitará un inicio de sesión en el sitio web de aprovisionamiento, haga clic en cancelar. Está ahí para facilitar el aprovisionamiento legítimo, pero no hace que el no aprovisionamiento ilegítimo sea más difícil.

    Ahora Tienes que hacer esta última parte para cada nuevo proyecto que hagas. Vaya al menú Proyecto > Nueva Fase de compilación > Nueva Fase de compilación de Script de ejecución. En la ventana, copiar / pegar 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 1a parte:

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

Para la segunda 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

Para el resto, es solo revertir lo que hiciste en XCode y eliminar /Developer/iphoneentitlements401/gen_entitlements.py si quieres:

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
 91
Author: cregox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:27

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 hacer jailbreak a 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 dale una lectura):

1. Añade tu ID de Apple en Xcode

Vaya a XCode > Preferencias > Pestaña Cuentas > Botón Agregar (+) > Agregar ID de Apple. Ver los documentos para más ayuda.

introduzca la descripción de la imagen aquí

2. Haga clic en la pestaña General en el Navegador del proyecto

introduzca la descripción de la imagen aquí

3. Elige tu ID de Apple en el menú emergente Equipo.

introduzca la descripción de la imagen aquí

4. Conecte su dispositivo y selecciónelo en el menú scheme.

introduzca la descripción de la imagen aquí

5. Haga clic en el botón Solucionar problemas

introduzca la descripción de la imagen aquí

Si obtiene un error sobre el el nombre del paquete no es válido, cámbialo a algo único.

6. Ejecute su aplicación

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

introduzca 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, obtendrá un error de seguridad porque la aplicación que desea ejecutar no es de la Tienda de aplicaciones.

introduzca la descripción de la imagen aquí

En su dispositivo , vaya a Configuración > General > Perfil > tu-nombre-ID-de-Apple > Confianza tu-nombre-ID-de-Apple > Confianza.

8. Ejecute su aplicación en su dispositivo de nuevo.

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

 41
Author: Suragch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-24 06:15:35

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

 9
Author: micmcg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-29 23:29:06

Tendrás que hacer jailbreak a tu dispositivo.

 8
Author: Can Berk Güder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-29 11:08:09

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

 6
Author: Leo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-11 17:28:03

Nada de lo que he visto en ningún lugar indica que puede implementar ad-hoc en un iPhone real sin un certificado (pagado).

 5
Author: Matthew Phillips,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-14 07:42:02

Estaba pasando por 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 de pago. Solo puedes pedirle al Propietario del Id de la aplicación(uno de pago) que te agregue como miembro del equipo. No estoy seguro. Sigo buscando en eso.

 4
Author: Akshay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-08 05:48:31

No, es fácil hacer esto. En Xcode, establezca la configuración activa en Release. Cambie el dispositivo de Simulador a Dispositivo, sea cual sea el SDK. Si desea exportar directamente a su iPhone, conéctelo a su computadora. Presiona Construir y listo. 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: (iPhone no estaba conectado)

Vaya a su carpeta de proyectos y luego a la carpeta de compilación dentro. Ir a la carpeta Release-iphoneos y llevar la aplicación dentro, arrastrar y soltar en el icono de iTunes. Cuando sincronices tu dispositivo iTouch, lo copiará en tu dispositivo. También se mostrará en iTunes como una aplicación para el iPhone.

Espero que esto ayude!

P.d.: 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 obtenga información de la barra de menú. Haga clic en Construir en la parte superior. Bajo Código Firma, cambiar la Identidad de Firma de código - Cualquier dispositivo iPhone OS para ser No Firmar.

 3
Author: cdespinosa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-14 05:43:53

Esto realmente todo depende de la versión de Xcode que esté utilizando, ya que las diferentes versiones utilizan diferentes métodos para implementarse 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.

 2
Author: Magnatek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-09 01:17:15

La solución publicada por Cawas también funciona perfectamente con XCode4. Sin embargo, hay algunos cambios en la interfaz de usuario del IDE, por lo que necesita hacer una investigación para encontrar Run Script:)

En la vista del Navegador del proyecto, 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 script de ejecución, luego pegue el script "codesign" publicado por Cawas.

 2
Author: Gobol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-22 19:23:50

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

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-27 11:29:29