Acceso a la command-line al directory de la aplicación iOS (sandbox) desde Mac

Necesito acceder al directory de sandbox para una aplicación instalada en un dispositivo iOS, utilizando la command-line (no gui) desde una Mac o Linux. Esto es para ayudar con el desarrollo y la automation de testings. Al colocar un file Json en el entorno limitado, puedo configurar parameters como posts de debugging adicionales e intervalos de actualización más pequeños.

Una herramienta como iFunBox funciona perfectamente, pero solo es gráfica, lo que requiere numerosos clics para hacerlo. Los correos electrónicos a los desarrolladores no fueron respondidos. Tampoco es compatible con AppleScript. Encontré otra aplicación que proporcionó un module Fuse, pero resultó fallida, especialmente si la aplicación se desinstaló y luego se reinstaló (para restablecer la experiencia del usuario por primera vez). Informé sobre los problemas al desarrollador pero no hay una solución en el horizonte.

Las cosas que necesito hacer son:

  • Pruebe si está instalada una aplicación con un id de package específico
  • Crear el directory Library / Caches / MYLIBNAME si no existe
  • Copie un file json ~ 100 byte de la Mac a ese directory
  • Obtenga una copy de ese file.
  • Una solución que solo funciona desde Linux también es aceptable.
  • Los dispositivos no están jailbreak y preferiría no necesitarlo como requisito

En algunos casos, no tengo el código fuente de la aplicación, ya que es un tercero que usa mi biblioteca, por lo que comstackr diferentes versiones de la aplicación no es práctico.

La respuesta está debajo en muchos comentarios gracias a lxt. El resumen es:

  • Diversas bibliotecas y progtwigs asociados con libimobiledevice pueden resolver los problemas.
    • Utilice iFuse parcheado para montar un entorno limitado de aplicaciones
    • Use idevicesyslog para ver el logging de la console
    • Use ideviceinstaller para instalar / desinstalar aplicaciones
  • Las diversas bibliotecas y progtwigs asociados con libimobiledevice son increíblemente difíciles, si no imposibles, de comstackr como está en Linux o Mac, y no hay una distribución unificada de la fuente o binarys
    • Para Ubuntu, intente libimobiledevice (puede tener 3 sufijos), ideviceinstaller y libimobiledevice-utils packages
    • Para Mac, una búsqueda de libimobiledevice-macosx puede llevarlo a algún lado.

Esto va a ser un poco complicado, porque creo que has descubierto que el nombre de la aplicación se genera aleatoriamente en cada installation. No creo que haya pasado por eso, desde luego que lo sé. Esto explica los problemas con los que se está ejecutando al simular una nueva installation (… el nombre del directory de la aplicación cambia a un nuevo hash aleatorio y, a continuación, está atascado).

Aunque mi preference sería acceder a este file de configuration de otra manera (quizás a través de una networking, y tener algún código que solo se ejecute en las versiones de testing / testing), si quieres hacer esto, te sugiero que intentes algo así como escribir un script que cuando quiera simular una nueva installation elige el directory de la aplicación que más recientemente se modificó. Pero esto es muy hacky.

Si no puede insert un código condicional que solo se ejecuta en depuraciones / comstackciones de testing, creo que el esquema de nomenclatura de aplicaciones aleatorias que iOS usa a nivel del sistema de files será problemático para cualquier enfoque que adopte.

Actualización : con respecto a iFuse y libimobiledevice: de inmediato se limita al directory de documentos. Esto se debe a que los autores de iFuse no confunden a los usuarios de nivel de input, y también porque la estructura es un poco diferente dependiendo de la versión de iOS. Puede comentar las líneas en la fuente iFuse: fuse_opt_add_arg(&args, "-osubdir=Documents"); – para get acceso al directory de la biblioteca a través del assembly. Obviamente necesitará volver a comstackr iFuse si hace esto.

Puede hacer uso de la Biblioteca MobileDevice

Sé que esta es una vieja pregunta y dudo que alguien esté buscando aquí, pero pensé que mencionaría que puedes usar 'brew install libimobiledevice' para comstackr en la Mac. Hay muchas dependencies y Homebrew realmente ayuda a que sea un process fácil instalando para usted.