iOS 6.x abre la línea de comando en jailbreak

Antes de iOS 6.x, utilicé open package_id para abrir una aplicación desde la línea de comandos en un dispositivo iOS. En iOS 6.x si uso este comando, SpringBoard falla. Open está disponible en BigBoss y el autor es Conrad Kramer.

¿Hay alguna alternativa o solución para el comando open de BigBoss?

Actualizar:

Parece que el /usr/bin/open se ha actualizado para iOS 6 en Cydia, por lo que te recomiendo que pruebes eso primero.


Respuesta Original:

¡Extraño open , también! Pero, hasta que se actualice para iOS 6, puede simplemente construir su propia aplicación no gráfica (solo un progtwig main , no un UIApplicationMain() ) y hacer lo mismo usted mismo.

Voy a omitir el análisis de los argumentos de la línea de comando de int main(int argc, char *argv[] , pero una vez que conozca el Id. De paquete ( CFBundleIdentifier ) de la aplicación que desea abrir, abra el marco privado de SpringBoardServices y CFBundleIdentifier para iniciar la aplicación:

 #include  #define SBSERVPATH "/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices" -(void) openApp: (NSString*) bundleId { // the SpringboardServices.framework private framework can launch apps, // so we open it dynamically and find SBSLaunchApplicationWithIdentifier() void* sbServices = dlopen(SBSERVPATH, RTLD_LAZY); int (*SBSLaunchApplicationWithIdentifier)(CFStringRef identifier, Boolean suspended) = dlsym(sbServices, "SBSLaunchApplicationWithIdentifier"); int result = SBSLaunchApplicationWithIdentifier((__bridge CFStringRef)bundleId, false); dlclose(sbServices); } 

Este código requiere la com.apple.springboard.launchapplications para que su progtwig de línea de comando lo use con éxito, como usuario mobile . Vea aquí para agregar un derecho . Necesitarías un archivo entitlements.xml para tu ejecutable, como este:

 < !DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">   com.apple.springboard.launchapplications    

Y luego fírmalo con

 ldid -Sentitlements.xml MyCommandLineTool 

Nota: No he probado esto, pero esta respuesta establece que una alternativa para usar los derechos es ejecutar el comando como raíz .