Recientemente he adquirido un MacBook Pro, lo primero de todo fue bajar el SDK de iPhone y ponerme a trastearlo un poco, como sabéis para poder instalar un programa creado por nosotros debemos pasar por caja, así que empecé a gloogear un poco hasta encontrar un interesante tutorial en el que nos explicaba como poder instalarlo en cualquier teléfono, eso sí, jailbreakeado y distribuirlo vía Cydia.
Son dos las cosas que hay que hacer para poder enviar nuestra aplicación a Cydia:
1.1. Compilar la aplicación de forma que pueda ser ejecutada en cualquier iPhone. Para ello es necesario saltarse la firma del código.
1.2. Seguir unos pasos para crear un paquete con la aplicación y poder distribuirlo en Cydia.
:: Compilar la aplicación para JailBreak
Como antes he dicho, sólamente se necesita saltarse la firma de código in Xcode. Cosa fácil de conseguir haciendo los 6 siguientes pasos:
1.1. Necesitamos un certificado en nuestro mac (Acceso a Llaveros), para que cuando Xcode compile una aplicación no nos de ningún error. Para crear un certificado sigue los siguientes pasos, asegurándonos de tener cerrado Xcode:
1.1.1. Abrir “Acceso a Llaveros” desde: Aplicaciones -> Utilidades.
1.1.2. Acceso a Llaveros -> Asistente para Certificados -> Crear un certificado...
1.1.3. Seguimos los pasos del asistente hasta crear el certificado:
1.2. Creamos una copia de seguridad (Basta con que lo copies en un lugar donde sepas que no lo vas a borrar con otro nombre) del siguiente fichero: /Developer/Platforms/iPhoneOS.platform/Info.plit y luego lo editamos sustituyendo todos valores XCiPhoneOSCodeSignContext por XCCodeSignContext.
1.3. Configuramos Xcode así en la esquina superior izquierda: “Device | Release | ...”
1.4. Abrimos Xcode -> Project -> Edit Project Settings -> Build. Buscamos Code Signing Identity y le asignamos los siguientes valores “Any iPhone OS Device” = “iPhone Developer”, el nombre del certificado que creamos anteriormente.
1.5. Compilamos Buid -> Build y nuestra aplicación estará compilada en <Directorio del proyecto>/build/Release-iphones/
1.6. Momento de comprobar si nuestra aplicación se instala bien:
1.6.1. Para ello necesitamos tener instalado en nuestro teléfono “Link Identity Editor” si no lo tienes ejecuta Cydia, busca e instala ‘ldid’.
1.6.2. Copiamos nuestra Aplicacion.app que está en el directorio descrito anteriormente en nuestro teléfono en: /Applications
1.6.3. Una vez esto entramos vía ssh a nuestro teléfono como root y ejecutamos:
1.6.3.1. ldid -S /Applications/Aplicacion.app/Aplicacion
1.6.3.2. killall SpringBoard
Si la aplicación se ejecuta corréctamente funcionará en cualquier iPhone.
:: Crear el paquete con la aplicación para un repositorio Cydia
Para crearlo, sólamente necesitamos preparar una carpeta que contenga los ficheros que queramos instalar y como deben aparecer en el sistema de ficheros de nuestro iPhone. Además necesitaremos crear una carpeta llamada “DEBIAN” en el raiz de nuestro paquete que contenga un fichero llamado “control” que contiene toda la información de la aplicación. Si por ejemplo, necesitamos instalar un programa y un demonio para el programa, tendremos que crear la siguiente estructura de carpetas (dependiendo de que queramos instalar):
+-- MiPrograma | +-- Applications | | +-- MiPrograma.app | | +-- Info.plist | | +-- MiPrograma | +-- DEBIAN | +-- control +-- System +-- Library +-- LaunchDeamons +-- com.scenebeta.MiPrograma.plist
El contenido del fichero control es una serie de nombres y valores seperados por dos puntos, uno por línea. Aquí hay un ejemplo completo.
Package: com.scenebeta.MiPrograma Name: MiPrograma Version: 1.0.0-1 Architecture: iphoneos-arm Description: Un ejemplo usando APT Homepage: http://iapps.scenebeta.com Depiction: http://iapps.scenebeta.com/noticia/MiPrograma Maintainer: Facine <[email protected]> Author: Manu García <[email protected]> Sponsor: SceneBeta <http://www.scenebeta.com/> Section: Games
El paquete puede ahora crearse con el contenido de la carpeta Aplicacion ejecutando dpkg-deb. El resultado será un fichero .deb que podrá ser instalado y comprobado en el iPhone. Dependiendo la versión que tengamos de dpkg-deb, podremos recibir cierto número de alertas sobre “user-defined fields” que simplemente ignoraremos, son ciertos fields exclusivos usados por Cydia.
Cuando se crean ficheros tar (parte interna de la estructura de los paquetes Debian), se crean en los sistemas apple unos ficheros adicionales ._* que contienen cierta información que pueden crear conflictos con otros paquetes si ya existen. Para desativar esto necesitamos exportar las siguientes variables del entorno.
# export COPYFILE_DISABLE # export COPY_EXTENDED_ATTRIBUTES_DISABLE # dpkg-deb -b MiPrograma warning, `MiPrograma/DEBIAN/control' contains user-defined field `Name' warning, `MiPrograma/DEBIAN/control' contains user-defined field `Homepage' warning, `MiPrograma/DEBIAN/control' contains user-defined field `Author' dpkg-deb: building package `com.scenebeta.MiPrograma' in `MiPrograma.deb'. dpkg-deb: ignoring 3 warnings about the control file(s) # ls -la MiPrograma.deb -rw-r--r-- 1 root root 906 2010-06-27 21:48 MiPrograma.deb
Ya tenemos creado nuestro paquete, simplemente faltaría probarlo en nuestro terminal y distribuirlo.
Comentarios
Urgente Error en Sign
Buenas, quisiera saber por que sale este error al momento de compilar, hice todos los paso pero me sale este error, como puedo solucionarlo??
Check dependencies
[BEROR]Code Sign error: a valid provisioning profile matching the application's Identifier 'FacineSoft.CameraApp' could not be found
Estoy usando el xcode 4 por que voy a ponerlo en un iPhone 4
Gracias
Nuevo SDK
Alguien ya probo si el nuevo sdk 4 Para el ios 4.3.3 se puede usar este mismo tutorial?
Inténtalo, cuando el Xcode se
Inténtalo, cuando el Xcode se actualiza es para mejoras ;)
Saludos.
Errores en el Keychain
Ya lo resolví...
Gracias.
Despliegue de aplicaciones iPhone 4.1
Estoy intentando desplegar mi aplicacion en un iPhone 4.1 con Jailbreak. He seguido estas intrucciones pero no consigo que se inicio la aplicacion dentro de /Applications.
Sin embargo si desde el propio XCode ejecuto "Build and Run", la aplicación se despliega en un directorio temporal "/private/var/mobile/Applications/5625A934-E621-4FD4-B76E-E4870FF0DA11" y entonces ya puede ejecutarla sin problemas.
Mi problema es que la debo ejecutar como root y en /Applications porque accede a ficheros fuera del SandBox y quiero publicarla en Cydia. Siguiendo este manual, lo máximos que consigo es que una vez copiada la app en /Applications y hecho el "ldil"veo que en el log me aparece el siguiente error "<Error>: handle_vending: Could not stat /private/var/mobile/Applications/5625A934-E621-4FD4-B76E-E4870FF0DA11: No such file or directory", que es el directorio temporal
Por otro lado, entiendo que la manera oficial de desplegar y publicar una aplicacón en Cydia, es esta "http://thebigboss.org/hosting-repository/submit-your-app/compile-for-cydia-submission" y no parece lo mismo ¿Alguna idea?
- iPhone: 4.1 con Jailbreak
- XCode 3.2.4
- Project Settings: Base SDK --> iOS Device 4.1
Gracias!
Ya lo he conseguido .
Ya lo he conseguido . Simplemente es que estaba instalada y la habia movido. La desinstale desde el "Organizer" y listo. Ahora lo que falla es el "ldil", que dice algo asi como" MyAPP malformed object (unknown load command 4)
util/ldid.cpp(582): _assert(0:WEXITSTATUS(status) == 0)"
La apliacion se ejecuta de todas formas, pero com accede a ficheros fuera del SandBox, falla. He probado a dar permisos, "sticky bit"..etc y nada ¿Alguna sugerencia?
:O wow gracias!! Vamos a
:O wow gracias!!
Vamos a Hackintoshearlo >=D
saludos
¿Donde Descargo el Link Identity Editor?
¿Donde Descargo el Link Identity Editor? no lo encuentro en las sources que tengo instaladas en cydia, ¿podria alguien poner la source do donde bajarlo?, Gracias q aquine me ayude :D
2.81, 1.50, 3.52 m33-4,3.11 m33-2, 3.80 M33-5 ,3.90 m33, 4.01 m33-2 ,5.00 m33-3, 5.50 GEN-D3 Buscando la perfeccion PSP
Wii Hombrew channel 1,8 wii.scenebeta.com
iPhone 3G v4.1 Jailbreak iapps.scenebeta.com
Está en un repo por defecto
Está en un repo por defecto de cydia, dale a buscar y pon "LDID" (lo pongo en mayúscula para no confundir las letras) y le das al botón buscar, verás que es la única que sale.
el repo es "Cydia/Telesphoreo"
El silencio es el ruido más fuerte, quizá el más fuerte de los ruidos.
Muy buen aporte
Ayudas asi vienen muy bien a la comunidad, aportes completos y útiles.
Un saludo Facine =)
Muchas gracias, un placer
Muchas gracias, un placer aportar mi granito de arena.
saludos!
De granito nada, me acabas de
De granito nada, me acabas de abrir las puertas hacia el Scenery.
GRACIAS!!
espero pronto poder hacerlo..
espero pronto poder hacerlo.. gracias por darte el trabajo facine
Muy bueno ^^
Lastima que no tengo MacBook, pero pronto, pronto comprare una, muajajaaj
Salu2!
interesante voy a probarlo en
interesante voy a probarlo en la tarde