2012-05-31 20 views
5

Tengo un iPhone 4S con jailbreak con iOS 5.1.1 en ejecución. Tengo Xcode 4.3.2, y he podido ejecutar mis aplicaciones en mi iPhone, pero de una manera extraña. Si hago clic en el botón de depuración en Xcode, intenta abrir la aplicación en mi iPhone con jailbreak, pero falla porque se abre rápidamente y luego se cierra. Aunque esto sucede, si abro la aplicación manualmente, al hacer clic en ella en la pantalla de inicio, funciona bien. Eso es bastante molesto Lo más molesto es que esto hace que ya no permita la depuración, ya que Xcode no ve que se está ejecutando.Desarrollando con Jailbroken iPhone (Xcode)

Esta es la salida que produce:

error: failed to launch '/Users/hetelek/Library/Developer/Xcode/DerivedData/spyapp-flynnmpiqhjoilezvqsbaqdnkesn/Build/Products/Debug-iphoneos/spyapp.app/spyapp' -- failed to get the task for process 3741 

con el ID de proceso de cambio cada vez, por supuesto.

Este es el tutorial que he usado para el desarrollo de mi iDevice jailbreak: http://iphonedevwiki.net/index.php/Xcode#Developing_without_Provisioning_Profile

Gracias por cualquier ayuda.

+0

Obtenga un perfil de desarrollador real, solo cuesta $ 100/año. si estás haciendo un desarrollo serio, entonces solo debes invertir. ¡Mejor ahora que demasiado tarde! –

+2

comprueba si el ejecutable ha sido firmado correctamente con el derecho de "obtener-tarea-permitir". ldid -e puede listar los derechos – YllierDev

Respuesta

8

Intentaré revisar ese tutorial de nuevo solo para asegurarme de que correste la configuración correctamente. Parece que puede instalar las aplicaciones sin problemas, pero el depurador simplemente no se puede conectar a la aplicación después de la instalación. Si realmente necesita el depurador, podría intentar abrir la aplicación en su dispositivo después de la instalación, y luego mientras se está ejecutando (y su dispositivo está conectado a su Mac con Xcode), abra Xcode y vaya a Product -> Attach to Process, y seleccione su aplicación de la lista (si no está allí, ese es otro problema).

Además, pruebe la sugerencia de YllierDev de habilitar get-task-allow en el archivo de Derechos de su aplicación (si no tiene uno, puede crear uno fácilmente desde la página de información de su proyecto en Xcode). Suponiendo que hayas reparado el tutorial correctamente, eso debería ser útil.

-

Para habilitar el 'get-tarea-permitir' en los derechos de su aplicación presentar con Xcode 4.3, haga lo siguiente:

  1. Haga clic en su proyecto en el navegador de proyectos, y seleccione la nombre de su proyecto en la columna 'Objetivos'.
  2. A continuación, vaya a la pestaña de resumen, y debajo de 'Derechos', marque 'Habilitar derechos'.
  3. A continuación, haga clic con el botón derecho/comando y haga clic en el archivo 'YOURAPP.entitlements' en el mapa del proyecto y seleccione 'Mostrar en Finder'.
  4. abren sus puertas en en la edición de textos, y añaden:

    <key>get-task-allow</key> <true/>

    justo antes de </dict>.

  5. Ahora debe depurar y ejecutar bien!
+0

Me pregunto por qué ninguno de los tutoriales que detallan el proceso lo menciona! –

+0

¡Deberíamos tomar todos estos consejos de jailbreak-dev y consolidarlos en una sola respuesta! – duci9y

+0

¡Gracias increíbles! – Edoz

0

Intente reiniciar iPhone y Mac. Tal vez algún proceso está en segundo plano y aún se está ejecutando.

Si no se ayuda, luego limpiar un proyecto y hacer una limpieza completa (how do a Full delete)

Eliminar de una aplicación de iPhone y reconstruir.

Si su aplicación utiliza una librerías, entonces recompile también.

+0

Ya probado, sin cambios. :( – hetelek

+0

se actualiza el texto – CReaTuS

1

Hay una respuesta simple. Las instrucciones en iPhoneDevWiki son casi correctas. Después del write() en el archivo temporal, debe vaciar, de lo contrario, el archivo temporal está vacío. Su ldid3.py debería tener este aspecto:

#!/usr/bin/python 
from sys import argv 
from subprocess import call, check_call 
from os.path import basename, splitext, join 
from tempfile import NamedTemporaryFile 

app = argv[-1] 
obj_path = join(app, splitext(basename(app))[0]) 
if '-gta' not in argv: 
    check_call(['/usr/local/bin/ldid', '-S', obj_path]) 
else: 
    with NamedTemporaryFile() 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>\n""") 
     f.flush() 
     check_call(['/usr/local/bin/ldid', '-S' + f.name, obj_path]) 

tengo depuración trabajar de esta manera con Xcode 4.3.3 y iOS 5.1.1. Esto funciona de la manera que usted quería y nunca tendrá que meterse con los derechos para nuevos proyectos.

+0

Este método todavía funciona con iOS 7 y Xcode 5. ¡Gracias! – 0xcaff

Cuestiones relacionadas