Aplicación de iPhone ¿Menos App Store?


199

Si creo una aplicación en mi Mac, ¿hay alguna forma de que pueda ejecutarse en un iPhone sin pasar por la tienda de aplicaciones?

No importa si el iPhone tiene que tener jailbreak, siempre que pueda ejecutar una aplicación creada usando el SDK oficial. Por razones por las que no entraré, no puedo permitir que este programa pase por la tienda de aplicaciones.


1
A partir de Xcode 7, ahora es posible ejecutar una aplicación en un dispositivo conectado sin registrarse para obtener una cuenta de desarrollador o liberar el dispositivo. Vea esta guía para más detalles.
Suragch

Puede usar AppBox , una aplicación de Mac que usa su cuenta de Dropbox para distribuir sus aplicaciones ad-hoc y empresariales. Pruébelo
Vineet Choudhary

Respuestas:


187

Programa oficial de desarrolladores

Para un iPhone estándar, deberá pagar los US $ 99 / año para ser miembro del programa de desarrolladores. Luego puede usar el sistema adhoc para instalar su aplicación en hasta 100 dispositivos. El programa de desarrollador tiene los detalles, pero implica agregar UUID para cada uno de los dispositivos a su paquete de aplicación. Los UUID pueden recuperarse más fácilmente con Ad Hoc Helper disponible en la App Store. Para obtener más detalles sobre este método, consulte el artículo sobre pruebas beta de Craig Hockenberry en iPhone 2.0

IPhone con jailbreak

Para iPhones con jailbreak, puede usar el siguiente método que he probado personalmente usando la aplicación de ejemplo AccelerometerGraph en iPhone OS 3.0.

Crear certificado autofirmado

Primero, deberá crear un certificado autofirmado y parchear su SDK de iPhone para permitir el uso de este certificado:

  1. Inicie Keychain Access.app. Sin elementos seleccionados, en el menú Llavero, seleccione Asistente de certificado y luego Crear un certificado.

    Nombre:
    Certificado de desarrollador de iPhone Tipo: Firma de código
    Permítame anular los valores predeterminados: Sí

  2. Haga clic en continuar

    Validez: 3650 días.

  3. Haga clic en continuar

  4. En blanco el campo de dirección de correo electrónico.

  5. Haga clic en Continuar hasta completar.

    Debería ver "Este certificado raíz no es de confianza". Esto es de esperarse.

  6. Configure el SDK de iPhone para permitir el uso del certificado autofirmado:

    sudo / usr / bin / sed -i .bak 's / XCiPhoneOSCodeSignContext / XCCodeSignContext /' /Developer/Platforms/iPhoneOS.platform/Info.plist

    Si tiene Xcode abierto, reinícielo para que este cambio surta efecto.

Implementación manual a través de WiFi

Los siguientes pasos requieren opensshy uikittoolsdeben instalarse primero. Reemplace jasoniphone.localcon el nombre de host del dispositivo de destino. Asegúrese de ajustar su propia contraseña tanto en el mobileyroot usuarios después de instalar SSH.

Para compilar e instalar manualmente su aplicación en el teléfono como una aplicación del sistema (sin pasar por el sistema de instalación de Apple):

  1. Proyecto, Establecer SDK activo, Dispositivo y Establecer configuración de compilación activa, Lanzamiento.

  2. Compile su proyecto normalmente (usando Build, no Build & Go).

  3. En el build/Release-iphoneosdirectorio tendrá un paquete de aplicaciones. Use su método preferido para transferir esto a / Aplicaciones en el dispositivo.

    scp -r AccelerometerGraph.app root@jasoniphone:/Applications/

  4. Informe a SpringBoard que se ha instalado la nueva aplicación:

    ssh mobile@jasoniphone.local uicache

    Esto solo debe hacerse cuando agrega o elimina aplicaciones. Las aplicaciones actualizadas solo necesitan ser relanzadas.

Para hacerte la vida más fácil durante el desarrollo, puedes configurar la autenticación de clave SSH y agregar estos pasos adicionales como un paso de compilación personalizado en tu proyecto.

Tenga en cuenta que si desea eliminar la aplicación más adelante, no puede hacerlo a través de la interfaz estándar de SpringBoard y deberá usar SSH y actualizar SpringBoard:

ssh root@jasoniphone.local rm -r /Applications/AccelerometerGraph.app &&
ssh mobile@jasoniphone.local uicache

2
El mío no se construirá - Xcode inmediatamente da un error de firma de código tan pronto como trato de construir ...
Dedicado el

1
@ Rev316 uicachedebería estar allí si tiene el uikittoolspaquete instalado.
Jason capeó el

Te sigo pero encontré este error: stackoverflow.com/questions/2161877/…
hungbm06

Además, desea configurar un par de claves privada / pública a través de ssh para que las cosas no tengan contraseña
conradev

2
¿Qué pasa con el perfil de aprovisionamiento? ¿Hay alguna manera de obtener uno sin suscribirse al programa de desarrollador?
Teodor Kostov

18

Sí, una vez que se haya unido al Programa de Desarrolladores de iPhone y haya pagado a Apple $ 99, puede aprovisionar sus aplicaciones en hasta 100 dispositivos iOS.


2
¿Por qué hay un límite de instalación de 100?
Marcus Leon el

25
Por lo tanto, la gente no puede usar esto como una forma de evitar la tienda de aplicaciones por completo.
willc2

2
Y el límite de 100 se cuenta como el número de dispositivos que ha registrado ese año en el Portal de aprovisionamiento de iOS, no el número actual que tiene. Entonces, si agrega 5 dispositivos y luego elimina los 5, tiene 95 (no 100) más dispositivos que puede agregar.
Scott C Wilson

1
Pero la cantidad de dispositivos utilizados se restablece una vez que renuevas tu programa de desarrollador.
dgund

1
Y los perfiles de aprovisionamiento ad-hoc caducan en 3 meses, por lo que no puede distribuir aplicaciones de forma permanente ni siquiera al conjunto limitado (100) de dispositivos que ha registrado.
Bogatyr el

14
  • Crea tu aplicación
  • Subir a un sitio de crack
  • (Si su aplicación es lo suficientemente buena) la versión crack se publicará minutos más tarde y estará lista para que todos la descarguen ;-)

8

Con la ayuda de esta publicación , he creado un script que se instalará a través de la aplicación Installous para una implementación rápida:

# compress application.
/bin/mkdir -p $CONFIGURATION_BUILD_DIR/Payload
/bin/cp -R $CONFIGURATION_BUILD_DIR/MyApp.app $CONFIGURATION_BUILD_DIR/Payload
/bin/cp iTunesCrap/logo_itunes.png $CONFIGURATION_BUILD_DIR/iTunesArtwork
/bin/cp iTunesCrap/iTunesMetadata.plist $CONFIGURATION_BUILD_DIR/iTunesMetadata.plist

cd $CONFIGURATION_BUILD_DIR

# zip up the HelloWorld directory

/usr/bin/zip -r MyApp.ipa Payload iTunesArtwork iTunesMetadata.plist

Lo que falta en la publicación mencionada anteriormente es iTunesMetadata. Sin esto, Installous no instalará las aplicaciones correctamente. Aquí hay un ejemplo de un iTunesMetadata:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>appleId</key>
    <string></string>
    <key>artistId</key>
    <integer>0</integer>
    <key>artistName</key>
    <string>MYCOMPANY</string>
    <key>buy-only</key>
    <true/>
    <key>buyParams</key>
    <string></string>
    <key>copyright</key>
    <string></string>
    <key>drmVersionNumber</key>
    <integer>0</integer>
    <key>fileExtension</key>
    <string>.app</string>
    <key>genre</key>
    <string></string>
    <key>genreId</key>
    <integer>0</integer>
    <key>itemId</key>
    <integer>0</integer>
    <key>itemName</key>
    <string>MYAPP</string>
    <key>kind</key>
    <string>software</string>
    <key>playlistArtistName</key>
    <string>MYCOMPANY</string>
    <key>playlistName</key>
    <string>MYAPP</string>
    <key>price</key>
    <integer>0</integer>
    <key>priceDisplay</key>
    <string>nil</string>
    <key>rating</key>
    <dict>
        <key>content</key>
        <string></string>
        <key>label</key>
        <string>4+</string>
        <key>rank</key>
        <integer>100</integer>
        <key>system</key>
        <string>itunes-games</string>
    </dict>
    <key>releaseDate</key>
    <string>Sunday, December 12, 2010</string>
    <key>s</key>
    <integer>143441</integer>
    <key>softwareIcon57x57URL</key>
    <string></string>
    <key>softwareIconNeedsShine</key>
    <false/>
    <key>softwareSupportedDeviceIds</key>
    <array>
        <integer>1</integer>
    </array>
    <key>softwareVersionBundleId</key>
    <string>com.mycompany.myapp</string>
    <key>softwareVersionExternalIdentifier</key>
    <integer>0</integer>
    <key>softwareVersionExternalIdentifiers</key>
    <array>
        <integer>1466803</integer>
        <integer>1529132</integer>
        <integer>1602608</integer>
        <integer>1651681</integer>
        <integer>1750461</integer>
        <integer>1930253</integer>
        <integer>1961532</integer>
        <integer>1973932</integer>
        <integer>2026202</integer>
        <integer>2526384</integer>
        <integer>2641622</integer>
        <integer>2703653</integer>
    </array>
    <key>vendorId</key>
    <integer>0</integer>
    <key>versionRestrictions</key>
    <integer>0</integer>
</dict>
</plist>

Obviamente, reemplace todas las instancias de MyApp con el nombre de su aplicación y MyCompany con el nombre de su empresa.

Básicamente, esto se instalará en cualquier dispositivo con jailbreak con Installous instalado. Una vez configurado, esto se traduce en una implementación muy rápida, ya que se puede instalar desde cualquier lugar, simplemente cárguelo en el sitio web de su empresa, descargue el archivo directamente al dispositivo y cópielo / muévalo ~/Documents/Installous/Downloads.


@ToolmakerSteve Lo dudo, pero dado que ahora puedes cargar aplicaciones iOS con cualquier ID de Apple de forma gratuita, no veo la necesidad de hacerlo.
Richard J. Ross III

7

Con el próximo Xcode 7 ahora es posible instalar aplicaciones en sus dispositivos sin una licencia de desarrollador de Apple, por lo que ahora es posible omitir la tienda de aplicaciones y no tiene que hacer jailbreak a su dispositivo.

Ahora todos pueden obtener su aplicación en su dispositivo Apple.

Xcode 7 y Swift ahora hacen que sea más fácil para todos crear aplicaciones y ejecutarlas directamente en sus dispositivos Apple. Simplemente inicie sesión con su ID de Apple y convierta su idea en una aplicación que pueda tocar en su iPad, iPhone o Apple Watch. Descargue Xcode 7 beta y pruébelo usted mismo hoy. No se requiere membresía del programa.

Citado de: https://developer.apple.com/xcode/

Actualizar:

XCode 7 ahora se lanza:

Desarrollo gratuito en el dispositivo Ahora todos pueden ejecutar y probar su propia aplicación en un dispositivo, de forma gratuita. Puede ejecutar y depurar sus propias creaciones en una Mac, iPhone, iPad, iPod touch o Apple Watch sin ningún costo y sin programas a los que unirse. Todo lo que necesitas hacer es ingresar tu ID de Apple gratis en Xcode. Incluso puede usar la misma ID de Apple que ya usa para App Store o iTunes. Una vez que haya perfeccionado su aplicación, el Programa de Desarrolladores de Apple puede ayudarlo a obtenerla en la App Store.

Consulte Inicio de su aplicación en dispositivos para obtener información detallada sobre la instalación y ejecución en dispositivos.


4

Vale la pena señalar que si va por la ruta de jailbreak, es posible (¿probable?) Que una actualización del iPhone OS matara su capacidad para ejecutar estas aplicaciones. Yo iría a la ruta oficial y pagaría los $ 99 para obtener la autorización. Además de no tener que preocuparse de que sus aplicaciones sean golpeadas, también tiene la oportunidad (si lo desea) de lanzar sus aplicaciones en la tienda.


2

Después de copiar la aplicación al iPhone de la manera descrita por @Jason Weathered, asegúrese de "chmod + x" de la aplicación, de lo contrario no se ejecutará.


1

* Cambios / Notas para que esto funcione para Xcode 3.2.1 y iPhone SDK 3.1.2

Implementación manual a través de WiFi

2) Asegúrese de reiniciar Xcode después de modificar Info.plist

3) El comando "uicache" no se encuentra, usando killall -HUP SpringBoard funcionó bien para mí.

Aparte de eso, puedo confirmar que esto funciona bien.

Los usuarios de Mac que usan PwnageTool 3.1.4 funcionaron muy bien para Jailbreaking (DL a través de torrent).


Ah Gracias Jason, ¡aprecio la publicación bien documentada! Es posible que desee mencionar la instalación del paquete UIKit Tools de Cydia para protuberancias Jailbreak como yo.
Rev316

1

Si parches /Developer/Platforms/iPhoneOS.platform/Info.plisty luego intentas depurar una aplicación que se ejecuta en el dispositivo usando un perfil de provisión de desarrollo real de Apple, probablemente no funcionará. Los síntomas son mensajes de error extraños com.apple.debugservery puede usar cualquier identificador de paquete sin obtener un error al construir en Xcode. La solución es restaurar Info.plist.


0

Puede usar AppBox , una aplicación de Mac que usa su cuenta de Dropbox para distribuir aplicaciones ad-hoc y empresariales, si desea instalar desde cualquier otro navegador.

https://github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/releases


Opciones

Archivar y cargar IPA

  • Simplemente seleccione Project / Workspace para archivar -> make ipa -> upload ipa -> send mail -> y apague mac

Subir solo IPA

  • Simplemente seleccione el archivo IPA para cargar ipa -> enviar correo -> y cierre mac

Característica

  • Mantener el mismo enlace
    • Esta característica mantendrá la misma URL corta para todas las futuras ipa cargadas con el mismo identificador de paquete.
    • Si esta opción está habilitada, también puede descargar la compilación anterior con la misma url.
  • Enlace de distribución de la aplicación de correo electrónico automático
  • Apagado automático de Mac después de la distribución
  • Tamaño máximo de carga => Igual al almacenamiento de su cuenta de Dropbox
  • Caducidad de la aplicación cargada => Hasta que elimine de su Dropbox
  • Instalaciones por aplicación => Ilimitado
  • Tablero*

    * Estará disponible en futuras versiones


AppBox vs Diawi

Captura de pantalla

Subir IPA

Archivar y cargar IPA

Subiendo IPA

Pruébalo aquí https://github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/releases

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.