2011-09-18 11 views
5

Estoy desarrollando una aplicación de Cydia. Ha estado en desarrollo por un tiempo, y nunca he tenido ningún problema hasta hace poco, cuando reanudé el desarrollo después de unos meses. Hay un par de cosas que han cambiado desde la última vez que trabajé en él:Implementación de aplicaciones de iOS en/Aplicaciones de XCode a través de script de fase de compilación (Jailbroken)

  1. actualizado a Lion
  2. Se traslada a Xcode 4
  3. Actualizado a 4.3.5 en mi iPad, iPhone a 5,0

De la investigación que he hecho, he llegado a la conclusión de que había algo "inusual" en mi configuración anterior. Descubrí que las aplicaciones aprovisionadas se colocan en el "directorio de espacio aislado" /private/var/mobile/Applications, y las aplicaciones del sistema que obtienen acceso de lectura a todo el sistema de archivos entre en /Applications. Supongo que al usar herramientas actualizadas y Lion, rompí todo lo que me daba privilegios de lectura en todo el sistema. Por lo tanto, necesito información sobre cómo hacer que Xcode se implemente directamente en el directorio del sistema que no está en la zona de pruebas.

Aunque hay algunas advertencias. No quiero tener que usar un instalador, quiero que Xcode lo haga automáticamente después de Build y Run. También quiero poder adjuntar el depurador para poder ver la consola.

¿Alguien con experiencia en esto me puede enseñar cómo usar los Scripts de fase de compilación para hacer la magia necesaria para tomar el binario con signo y desplegarlo automáticamente después de cada compilación? Me imagino que esto es posible, porque la salida de la consola es una herramienta tan valiosa, que sería demasiado difícil desarrollar aplicaciones como Cydia.

¡Gracias por tu ayuda!

+0

Esto puede ayudar - http://stackoverflow.com/questions/4127147/objective-c-nsfileposixpermissions-to-human-readable-nsstring – Coffee

Respuesta

2

Agregué un script como fase de compilación personalizada. El script firma la aplicación, crea un paquete, lo copia al teléfono e lo instala.

La fase de construcción es "ejecutar un script" con/bin/sh y añadió "$ {} project_dir /MyApp/install.sh"

Los scripts (muy básicas - ningún control de errores) es inferior a (sustituir con los valores apropiados):

(LatestBuild es un enlace a la carpeta de compilación) (ldid se instala con proyecto iosopendev)

cd $HOME/Projects/iPhone/MyProject/MyApp 
cp -r ../LatestBuild/MyApp.app com.test.MyApp/Applications/ 
ldid -S com.test.MyApp/Applications/MyApp.app/MyApp 
rm com.test.MyApp.deb 2>&1 
/opt/local/bin/dpkg-deb -b com.test.MyApp 
scp com.test.MyApp.deb [email protected]:/var/root 
ssh [email protected] "dpkg -r com.test.MyApp" 
ssh [email protected] "dpkg -i com.test.MyApp.deb" 
ssh [email protected] "killall -9 MyApp" 
#ssh [email protected] "killall -HUP SpringBoard" 
cd - 

se puede mejorar mucho - pero solo funciona para mis necesidades

4

El consenso general entre la comunidad es que esto no es deseable. Un sistema de compilación como Theos junto con el dispositivo GDB y un paquete syslog o deviceconsole es lo que muchos están usando.

+0

Gracias por el aviso. Eres un nombre muy conocido en la comunidad de jailbreak, así que confío en tu respuesta. ¿Es esta la forma en que haces tu trabajo? – Justin

+0

Así es como realizo mi trabajo, sí. Además uso cycript para realizar algunos experimentos. – rpetrich

0

No soy muy conocedor de xcode, pero como la mayoría de los IDE estoy asumiendo de una forma u otra que puede hacer que ejecute un script de compilación posterior si puede averiguar de qué se trata tan simple como un comando scp para cargar desde allí puede usar ldid -S nombredeaplicación en el directorio en el que se cargó la aplicación.

Puede, si quiere permitir que su aplicación resida en/Aplicaciones, aunque actualizar a 4.3.5 lo más probable es que lo fuerce en un Jailbreak atado No conozco un JB sin ataduras para 4.3.5, así que eso es una molestia si terminan teniendo que reiniciar.

En cuanto a los depuradores dar gdb (se puede obtener desde cydia) un ir es realmente útil :). Lo que hago es simplemente hacer que xcode ejecute un script posterior a la construcción para usar scp para cargarlo en su dispositivo y luego firmarlo manualmente con ldid, esa es la manera más fácil que puedo pensar a menos que tenga acceso a un ideje de desarrollador.

Déme unos minutos Escribiré un guión y trataré de describir cómo funciona. Necesito uno cualquiera ya que finalmente conseguí una cadena de herramientas abierta que funcionaba principalmente. :)

Un simple script de carga

#!/bin/bash 
scp -r $1 [email protected]$3:$4 

$1 is lets say your app folder ill use my dpatcher as an example 

$2 is user name either mobile or root(if you upload as root you need to chmod permissions to 755) 

$3 is your idevices local ip(ie your routers ip for it) 

usted puede encontrar su ip con SBSettings o yendo a la configuración pulse la flecha azul al lado de su punto de acceso y se le dirá.

$4 is where you want it to be most likely /Applications or /var/mobile/Applications 

lo he nombrado cargar.sh, pero puede que el nombre nada

Un ejemplo

upload.sh dpatcher.app [email protected] /Applications 

Entonces todo lo que hacemos es ssh y firmarlo con ldid -S nameofapp

Si desea cargar los archivos individuales como eliminar -r eso es para subidas recursivas (es decir, carpetas)

la razón por la que debe usar scp o sftp para cargar archivos es que ftp AFAIK normal no es compatible sin el uso de aplicaciones de terceros.

No estoy seguro de cómo integrar con Xcode. Hago todo con vi, emacs o nano (y no tengo un Mac).

Cuestiones relacionadas