Distribuye de forma remota una aplicación de iOS comstackda en Xcode 7 sin App Store, sub progtwig de desarrollador o jailbreak?

Siguiendo estas instrucciones (véase también la documentation del desarrollador de Apple y la respuesta de BoltClock a la aplicación Test iOS en el dispositivo sin progtwig desarrollador de Apple o jailbreak ), pude comstackr una aplicación iOS (en este caso, una aplicación emuladora de console de videojuegos que no cumple con los lineamientos de Apple y nunca se permitirá en la tienda de aplicaciones de Apple) en Xcode 7, fírmalo con mi count personal de iCloud, cárgalo en mi iPhone (conectándolo a mi Mac mediante USB y seleccionando mi iPhone en el menu xcode -> Producto -> Destino) y permite que mi teléfono lo ejecute al "confiar" en las aplicaciones con esta firma en Configuración -> General -> Perfil, que instala el certificate asociado a mi count de icloud en el dispositivo.

Me gustaría replicar estos pasos con una descarga aérea. ¿Puedo hacer que Xcode produzca un ejecutable que pueda compartir con mi hermano, que tiene un iPhone, pero que no tiene acceso a una Mac con Xcode?

  • ¿Pueden las aplicaciones ver tu ID de Apple?
  • Agregar dispositivos iOS 11 a DEP usando el Configurador de Apple
  • Entrada de audio iOS a través de USB
  • ¿Hay una aplicación tipo terminal para iOS?
  • Abra la URL de Facebook en la aplicación de Facebook
  • Cómo grabar una película de pantalla de un iPad?
  • La networking StackExchange logró algo como esto aparentemente para su progtwig beta de aplicación iOS, mediante el uso de la distribución empresarial de Apple a través de Mobile Device Management, como se menciona en esta pregunta . También está el BuildStore ( http://builds.io/ ), que por $ 10 / año también habilita esta funcionalidad, al parecer al agregar usuarios a un "equipo de desarrolladores" asociado a una count pagada del Progtwig de desarrolladores de Apple (ver documentos de Apple dev ) . Con Xcode 7, ¿es posible hacer tal cosa sin una empresa o incluso una count de desarrollador paga regular?

    actualización: Gracias a la ayuda de Stacksza, he hecho algunos progresos, que resumiré aquí.

    1. XCode creará un file (Producto -> Archivo), pero no le permite exportar un file a un file .ipa para la distribución ad hoc sin suscribirse al nivel de count de pago ADP.
    2. Sin embargo, no hay problema, porque la herramienta xcode de la command-line crea un ejecutable .ipa, incluso sin una count ADP paga. Use un command como xcodebuild -exportArchive -archivePath Provenance-Release\ 11-20-15\,\ 22.24.xcarchive/ -exportOptionsPlist ~/manifest.plist -exportPath ~/Provenance (vea la respuesta de Khawar en Cómo crear ipa en xcode 6 sin Cuenta de desarrollador de Apple? )
    3. Pero este command requiere que especifique un file .plist de manifiesto. La respuesta de Razvan en Over The Air (OTA) iOS IPA File Distribution For Public? contiene un ejemplo manifest.plist, así como instrucciones para el formatting de hyperlink necesario para proporcionar un enlace de descarga, que debe estar alojado en una página web SSL. Puede ser que la URL SSL deba calcular el ID del package de la aplicación, no estoy seguro.
    4. Pero lo anterior solo funciona si la aplicación está provista para el dispositivo que la descarga y el dispositivo ya ha instalado el certificate de desarrollador. Entonces, por ejemplo, un dispositivo que previamente se ha conectado a través de USB a mi Xcode ahora puede download la aplicación por el air, lo cual es genial. Esto es progreso. Pero para dispositivos limpios, obtengo el error Could not install embedded profile: 0xe8008012 (This provisioning profile cannot be installed on this device.) (como se ve en la console del dispositivo, que se puede ver en Xcode -> Ventana -> Dispositivos, o más en la aplicación Apple Configurator).
    5. Para que se aprovisione una aplicación para un dispositivo, debe contener el UDID del dispositivo en el file embedded.mobileprovision , consulte ¿Cómo incrusta un perfil de aprovisionamiento en una aplicación iOS? ¿Cómo automatizar la comprobación de un campo en la provisión embedded.mobile de ipa? , ¿Cómo averiguar qué perfil se utilizó para comstackr el file * .ipa? , y ¿hay alguna forma de ver qué UDID están incluidos en una compilation? . Sin embargo, no puede simplemente editar este file para agregar el UDID, porque el CODESIGNATURE de la aplicación no coincide y el dispositivo informará el error. Failed to verify code signature of /private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7jBjpk‌​/extracted/Payload/Provenance.app : 0xe8008017 (A signed resource has been added, modified, or deleted.)}
    6. Ok, entonces tenemos que renunciar a la aplicación. Xcode proporciona una herramienta de command-line llamada codesign que puede hacer esto. Las instrucciones están en ¿Cómo volver a firmar el file ipa? y vuelva a firmar IPA (iPhone) y renuncie a una aplicación de iPhone, inserte una nueva identificación de package y envíela a Xcode Organizer para cargar y cómo volver a firmar manualmente una IPA con un nuevo perfil de aprovisionamiento . Tuve que especificar mi certificate de desarrollador, cuyo nombre exacto se puede encontrar en Acceso a Llaveros, en la pestaña Certificados, y se ve como "Desarrollador de iPhone: username@mac.com (ABCDEFGHIJ)". Entonces el command es como codesign -f -s "iPhone Developer: username@mac.com (ABCDEFGHIJ)" Payload/Provenance.app . Los commands de ejemplo en las instrucciones anteriores incluyen un indicador llamado --resource-rules , pero no encontré ese file en mi aplicación comstackda, por lo que eliminé ese indicador. Me pregunto qué hará y si es necesario. Editar: La excelente publicación de blog Inside Code Signing de Thomas Kollbach explica que el --resource-rules solía usarse para indicar qué partes de una aplicación deben firmarse, pero dado que iOS8 está en desuso, y toda la aplicación debe estar firmada.
    7. Ahora que la aplicación tiene agregado el UDID y está firmado, downloadlo en el dispositivo nuevo Could not install embedded profile: 0xe8008003 (This provisioning profile is malformed los errores Could not install embedded profile: 0xe8008003 (This provisioning profile is malformed y A valid provisioning profile for this executable was not found . El problema ahora es que el dispositivo aún no ha instalado el certificate de desarrollador. Cuando descargue vía Xcode, antes de que la aplicación se ejecute, debe encontrar el certificate instalado en Configuración -> General -> Perfil, select su certificate y toque "confianza". Sin embargo, esta opción no aparece después de la descarga inalámbrica de la aplicación ad hoc, por lo que no estoy seguro de cómo proceder. Creo que necesito alguna forma de instalar el certificate de desarrollador en el dispositivo. De acuerdo con la installation del perfil de suministro en iOS 8.0.2 , solía ser posible simplemente enviando el certificate por correo electrónico al dispositivo, pero eso ya no funciona a partir de iOS 8. No he intentado confirmarlo. ¿Cómo puedo instalar mi certificate de desarrollador en un dispositivo iOS de forma remota?
    8. Traté de exportar mi certificate de desarrollador de iPhone desde Keychain Access y enviarlo por correo electrónico al dispositivo. El dispositivo pudo instalar el certificate, pero se mostró con una advertencia roja de que no estaba firmado, mientras que cuando el certificate se instaló a través de Xcode / USB no tenía esa advertencia. Según Rhythmic Fistman, ¿ es posible volver a encriptar un file embedded.mobileprovision? , el perfil debe estar firmado por Apple para funcionar. Este puede ser el punto de fricción. Apple solo firmará su certificate si tiene una count de pago ADP.
    9. Esta publicación de blog sobre el aprovisionamiento por Sean Heber fue muy esclarecedora sobre la teoría general de los certificates de desarrollador y los perfiles de aprovisionamiento (junto con los de Kollbach deberían exigirse que se los lea). Contiene este párrafo:

      La razón por la que todo esto funciona y es seguro es que Apple genera los perfiles de aprovisionamiento en el portal y luego los firma con sus propias keys privadas antes de entregárselos. La firma de los perfiles de aprovisionamiento es algo que solo Apple puede hacer. Por lo tanto, el file que descarga no puede alterarse sin dejarlo inválido. IOS no aceptará un perfil de aprovisionamiento inválido y, por lo tanto, Apple puede controlar exactamente qué puede y no puede aprovisionarse por un desarrollador simplemente restringiendo el acceso a la firma del perfil de aprovisionamiento a cosas que el portal de desarrollador le da permiso para configurar en el primer lugar – a pesar de que los perfiles de aprovisionamiento pueden admitir cualquier cantidad de otras opciones increíbles que no puede usar sin jailbreaking. Es por eso que tiene que registrar dispositivos de testing en el portal, agregar sus certificates al portal, etc. – solo las cosas en el portal (y por lo tanto los numbers que pueden ser controlados y arbitrarios por Apple) se pueden include en un entorno generado y perfil de aprovisionamiento debidamente firmado. El portal es donde se aplican las políticas y limitaciones de aprovisionamiento de Apple.

    Esto parece responder definitivamente a mi pregunta (¿puedo hacer que la aplicación se ejecute sin una count ADP pagada?) Con un "no". Aunque este artículo es anterior a Xcode 7. Aparentemente Xcode 7 enviará el UDID de un dispositivo al portal de Apple, y recibirá en respuesta un perfil de aprovisionamiento firmado por Apple, que contiene ese UDID. Xcode 7 solo hace esto cuando el dispositivo se conecta a través de USB y es reconocido por Xcode, pero uno se pregunta si se podría crear una request manual de Xcode para Apple. Eso se profundiza en la ingeniería inversa de las cosas de Apple de lo que me siento cómodo, y probablemente viola ToS o lo que sea, así que creo que estoy satisfecho con la respuesta "no".

    De acuerdo con la página de acerca de BuildStore , gestionan algo similar a través de correo electrónico, por lo que puede ser posible.

    Xcode "Crear y archivar" desde la command-line es bastante antiguo (circa xcode 3), pero sugiere utilizar xcrun lugar de xcodebuild que he estado usando.

  • ¿Falta la aplicación Health.app en mi iPhone?
  • ¿Dónde puedo encontrar los términos de uso (licencia) de iOS Enterprise Developer Program?
  • Paginación mes a mes en la aplicación Calendario
  • ¿Los perfiles de provisión instalados no se ven en iOS8?
  • No puedo habilitar la copy de security de iCloud en mi teléfono
  • Cómo acceder a Journals desde iCloud.com
  • 3 Solutions collect form web for “Distribuye de forma remota una aplicación de iOS comstackda en Xcode 7 sin App Store, sub progtwig de desarrollador o jailbreak?”

    ¡La respuesta es casi SÍ!

    Logré instalar nuevas comstackciones de la misma aplicación en los dispositivos a través de Fabric.io sin la suscripción de Apple Dev. (Supongo que también puedes distribuirlos con iTunes. Envía ipa to tester, y debería poder instalarlo a través de iTunes).

    La única desventaja es que debe conectar el dispositivo a Xcode al less una vez . Entonces puede instalar remotamente nuevas versiones. (No encontré la manera de hacerlo manualmente conociendo el udid)

    Cuando conecta el dispositivo "desconocido" a xcode 7, hay un button de fix issue en Target general settings . Solucione el problema y Xcode generará un nuevo perfil de Aprovisionamiento con este dispositivo incluido. (Puede encontrarlo en ~/Library/MobileDevice/Provisioning Profiles )

    Entonces puedes usar este perfil de aprovisionamiento para distribuir aplicaciones a través de Fabric.io

    1. Registrarse en Fabric.io
    2. Tejido de configuration para su proyecto (hay una guía paso a paso)
    3. Asegúrese de que xcode use la derecha prov. perfil para firmarlo Automatic funcionó para mí.
    4. Xcode> proyecto> file
    5. el asistente de tela detectará la compilation y podrá distribuirla.

    Lo siento chicos que no son lo suficientemente competentes con Xcode, no tengo mucho time para agregar less guía propensa a errores, pero espero que esta respuesta ayude a alguien con ideas.

    SUGERENCIA: use este complemento quicklook para ver el interior de ipas y prov. perfiles!

    A partir de una versión de iOS 9.x publicada desde que mi respuesta se publicó originalmente, esto ya no es una posibilidad. Apple ahora restringe las descargas de OTA a counts no libres, como lo muestran los errores en los loggings del dispositivo cuando falla la installation.

    He probado esto extensamente, ya que esto también sería increíble para mis aplicaciones.

    ¿Puedo distribuir mis aplicaciones OTA sin una Membresía de Progtwigdor (cuesta dinero)?

    Puede crear y firmar una IPA y crear el file Manifiesto para ella, pero no podrá instalarse en el dispositivo. La razón de esto es que Xcode necesita configurar el IPA para ese dispositivo (supuestamente firmándolo correctamente con el UDID). Incluso puede ver esto si intenta conectar un nuevo dispositivo a la Mac y ejecutar su aplicación a través de Xcode. La respuesta corta es no.

    ¿Qué puedo hacer para que esto funcione?

    Puedes registrarte en el Progtwig para Desarrolladores con Apple (cuesta dinero) y agregar el UDID de su dispositivo a tu perfil, luego crear un file IPA y manifiesto, uploadlos a un server web y enviarle la URL.

    Realmente es para la security, ya que la barrera de precios suele ser lo que impide que las aplicaciones maliciosas se distribuyan en la web. Sin mencionar save la mayoría de las descargas de aplicaciones en la App Store.

    Me he registrado para el progtwig de desarrollador? ¿Cómo lo distribuyo ahora?

    Debe tener un server web HTTPS (y un certificate SSL para que pueda crear su propia raíz). También debe haber agregado su UDID a su perfil de Desarrollador (no estoy exactamente seguro de cómo hacerlo). Debe usar Xcode para crear el IPA (Producto> Archivo> Exportar> Guardar para implementación ad-hoc> Iniciar session con ID de Apple> Seguir instrucciones) y obtendrá un Plist y un file IPA. Coloque los dos en su server y cambie los valores en el file Plist para que coincidan con las URL HTTPS en su server. Luego, utiliza un enlace especial para vincular al manifiesto de Plist, y aparecerá preguntando al usuario que instale su aplicación. Si todo va bien, el usuario tendrá su aplicación. También debe codificar su propio método de actualización si así lo desea.

    Si esta es una aplicación que desea distribuir en este punto, podría tener más sentido ponerla en la App Store, o si se trata de una testing beta, use TestFlight. Si tiene una count de desarrollador puede usar TestFlight y omitir todo esto para la testing de la aplicación. Todo lo que necesita es su correo electrónico y hacer que instale la aplicación TestFlight en App Store. TestFlight se puede gestionar desde iTunes Connect.

    Básicamente, alguien tiene que firmar la aplicación. Puede get el file IPA, pero no se ejecutará en dispositivos arbitrarios. Concéntrese en eso y usted decidirá rápidamente si desea soportar la molestia de cada persona que usa Xcode o si pagarle a Apple para que firme sus aplicaciones tiene sentido.

    Si confía en que iOS 9 no firma con cualquier ID de Apple anterior, todos los probadores deben iniciar session con su ID de Apple para ejecutar la aplicación.

    Puede pagar para que Apple maneje las counts y las firmes pagando un año de counts de desarrollador. A continuación, puede enviar por correo electrónico, abrir la aplicación en cualquier server, utilizar TestFlight o, de forma más fácil, otros methods que no sean la entrega de su ID de Apple a los evaluadores / usuarios de la aplicación.

    Siempre puedes enviar el código fuente a tu hermano si tiene Xcode, pero mencionaste que era el punto de no tener a alguien con una Mac para instalar y firmar la aplicación.

    Es más fácil romper la cárcel que falsificar la cadena de certificates de Apple, pero no lo recomiendo.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).