La firma Flutter no es válida cuando se prueba en un dispositivo iOS

11

TL; DR

Vea la respuesta a continuación: https://stackoverflow.com/a/60013390/1121497

Parece que fue un problema con iOS 13.3 porque acabo de instalar 13.4 y ahora Flutter funciona en mi iPhone. :)


Estoy tratando de ejecutar una nueva aplicación Flutter (la aplicación de muestra creada por flutter create) en un dispositivo iOS (un iPhone XS). Xcode logra instalarlo, pero luego se bloquea con este mensaje:

dyld: Library not loaded: @rpath/Flutter.framework/Flutter
  Referenced from: /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Runner
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter: code signature invalid for '/private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter'

Si lo intento flutter run, la aplicación también se abre y se bloquea. Y el comando sigue esperando para siempre:

$ flutter run
Launching lib/main.dart on Ferran Maylinch’s iPhone in debug mode...

Automatically signing iOS for device deployment using specified development team in Xcode project: 25D86TPBWG
Running Xcode build...                                                  

 ├─Assembling Flutter resources...                           4.3s
 └─Compiling, linking and signing...                        13.3s
Xcode build done.                                           21.0s
Installing and launching...                                             
(This is taking an unexpectedly long time.)

En Xcode configuré un Equipo (Equipo personal) y el Certificado de firma (Certificado de desarrollo de Apple) parece estar bien porque puedo instalar un proyecto Hello world Swift en mi dispositivo.

Nota: No estoy pagando una cuenta del Programa de Desarrolladores de Apple . ¿Es absolutamente necesario ejecutar aplicaciones Flutter en dispositivos iOS?

He seguido las instrucciones de macOS y flutter doctordice que tengo todo lo que necesito para iOS:

[] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57, locale en-ES)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[] Xcode - develop for iOS and macOS (Xcode 11.3)
[!] Android Studio (version 3.5)Flutter plugin not installed; this adds Flutter specific functionality.Dart plugin not installed; this adds Dart specific functionality.
[] IntelliJ IDEA Ultimate Edition (version 2019.3.1)
[!] VS Code (version 1.41.1)Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[] Connected device (1 available)

! Doctor found issues in 3 categories.

Como puede ver, utilicé el canal estable para descartar problemas con el canal beta, pero generalmente trabajo en el canal beta para crear flutter para la web (que funciona bien).

En el simulador de iOS, la aplicación también funciona bien.

Recientemente me di cuenta de que no tengo el archivo ios/Podfile. Encontré esta publicación hablando de eso. No sé si esto es importante o no en mi caso, pero intenté agregar manualmente este Podfile . De todos modos, me sale el mismo error de firma.

Frustrado por esto, cambié a NativeScript por ahora.

Ferran Maylinch
fuente
¿Está intentando ejecutarlo en un dispositivo real en modo de depuración o liberación?
Sunkuu7
@SlahLayouni Estaba en modo de depuración. Intenté el modo Release y falla con el mismo error.
Ferran Maylinch
Intente compilar la versión primero y luego ejecútela desde xcode como versión. flutter build ios --release
Sunkuu7
1) ¿Has probado el simulador de iOS? 2) ¿Has implementado / ejecutado un "Hello World" en Swift / Xcode en tu dispositivo iPhone? El certificado personal debe ser bueno para la implementación en su teléfono.
Morrison Chang

Respuestas:

8

EDITAR: Esto se corrigió en iOS 13.4, que se lanzó el 24 de marzo.

Esta es una regresión iOS 13.3.1 no relacionada con Flutter. Pude reproducir el bloqueo sin ningún código de Flutter o CocoaPods creando un nuevo proyecto Xcode, agregando un objetivo de marco y eligiendo un perfil de aprovisionamiento de Equipo personal.

Consulte la edición de GitHub: https://github.com/flutter/flutter/issues/49504#issuecomment-581554697 .

El error no debe afectar los perfiles de aprovisionamiento del equipo de la cuenta de desarrollador o las aplicaciones que ya están firmadas y distribuidas en la App Store.

Desafortunadamente, la única solución puede ser evitar actualizar los dispositivos de desarrollo a 13.3.1 hasta que esto se resuelva.

Jenn
fuente
¡Muchas gracias! Espero que esto se solucione lo antes posible!
Ferran Maylinch
Entonces, ¿esto es sobre el problema del nivel de iOS? También me encuentro con este problema en iPhone con la versión iOS 13.3.1
Adromil Balais
Sí, este es un problema con iOS 13.3.1 y luego rechaza los marcos firmados del perfil de aprovisionamiento de Personal Team. No es específico de Flutter. Los enlaces en el comentario de GitHub hacen referencia a otros proyectos, y pude reproducir fácilmente con un nuevo marco en Xcode sin incrustar Flutter.
Jenn
¡Acabo de probar ahora con iOS 13.4 y funciona! Podría ejecutar mi aplicación Flutter en un iPhone real desde Xcode y también desde IntelliJ IDEA. Supongo que también funcionará desde la línea de comandos.
Ferran Maylinch
4

Hasta donde puedo ver, es un problema de compatibilidad de Flutter con iOS 13.3.1. En mi caso, mi aplicación funciona perfectamente bien en iPhone XR con iOS 13.3 pero se bloquea al iniciarse en otro iPhone XR con iOS 13.3.1. No se puede probar en el simulador, ya que es una aplicación de cámara pero funciona tanto en dispositivos Android físicos como en emuladores de Android.

Novato
fuente
Tienes razón. Acabo de probar con mi iPad con 13.3. Mi teléfono no funciona con 13.3.1. Voy a actualizar a beta 2 y probar :-)
Ken Hui
13.3.1 Public beta 2 tiene el mismo problema.
Ken Hui
3
  1. ¿Aceptaste el acuerdo de licencia de xcode? si no, inténtalo sudo xcodebuild -license.
  2. ¿Se actualizaron sus pods? si no, navegue a la carpeta ios en el proyecto flutter en su terminal y escriba pod installluegopod update

Si esto no funciona, vaya a la carpeta ios en su proyecto de flutter y abra Runner.xcworkspace tocándolo dos veces. Debe tener un aspecto como este:

ingrese la descripción de la imagen aquí

Cuando se abre xcode, haga clic en Runner en la esquina superior izquierda.

ingrese la descripción de la imagen aquí

Luego vaya a Firma y capacidades y, en el menú desplegable "Equipo", seleccione un campo. Si no existe ninguno, cree una cuenta.

ingrese la descripción de la imagen aquí

Luego, en el "Identificador de paquete", debería aparecer el nombre del paquete de su aplicación. Agregue .app al final. Por ejemplo, si es "com.example.yourapp" conviértalo en "com.example.yourapp.app" y presione Intro.

Presione el botón de reproducción en la parte superior izquierda para ejecutar la aplicación en el dispositivo seleccionado.

Yudhishthir Singh
fuente
No tengo Podfile. Estoy mirando esta publicación stackoverflow.com/questions/51599686/…
Ferran Maylinch
Instale cocoapods en su máquina y ejecute los comandos de pod en su directorio ios.
Yudhishthir Singh
Tengo cocoapods. ¿Qué comandos pod debo usar?
Ferran Maylinch
instalación de pod y luego actualización de pod
Yudhishthir Singh
He hecho modificaciones a mi respuesta, por favor, eche un vistazo.
Yudhishthir Singh
1

¿Puedes seguir el paso uno por uno?

flutter channel master
flutter upgrade
flutter clean
flutter build ios
Dev
fuente
He intentado eso También en el canal beta.
Ferran Maylinch
El error está relacionado con las capacidades de firma, la rama flutter no tiene nada que ver con eso.
Yudhishthir Singh
1

Esta publicación no es una respuesta porque estoy luchando con este problema también y escribo esto ya que ha pasado un tiempo sin una solución

Todo lo que quiero es proporcionar más detalles a OP y otros miembros aquí. Así que tengo todo como OP declaró.

Esto es lo que he intentado:

  1. Podfile no se crea (incluso después de ejecutarse en Simulator, etc.) y es por eso que he intentado incluir uno de una aplicación de ejemplo de flutter de Flutter Github.

    • Directorio de iOS borrado
    • Se agregó un Podfile
    • Ran actualización de pod.
    • Advertencias fijas (configuraciones de liberación y depuración de Pod incluidas en Xcode)
    • Agregué FLUTTER_ROOT a la configuración definida por el usuario (como estaba ausente) y recibí el error Xcode-backend.sh (no recuerdo exactamente, lo siento)
    • Construido

Entonces, estos pasos producen: este error en el simulador. Los mismos errores de firma que sin Pod en el dispositivo físico

  • Eliminó todos los certificados de Keychain Access y los restauró a través de Xcode.

    Resultado: nada ha cambiado

  • Se eliminó Xcode, Pod y la configuración relacionada con él. Certificados eliminados. Restaurado todo después de un reinicio (instalación nueva)

    Resultado: de nuevo, ni construir con pod ni sin proporcionar los mismos errores

  • He actualizado Flutter al canal de desarrollo (1.14.1) y he regenerado el proyecto usando flutter create .

    Reran construye. Con vainas y sin ellas. Todavía lo mismo

  • También he tratado de cambiar la firma de Apple Developer a iOS Developer en todo el destino (Pod incluido)

    En esto obtuve algunos errores porque incluso intenté firmar Pods-Runner (había una pequeña esperanza). Pero en general nada nuevo.

  • Cuando ejecuto un dispositivo en iOS 13.3.1 Beta, actualicé Target a 13.2 (¿máximo disponible en este momento?).

    No

  • He habilitado macOS-builds y he creado una aplicación para Mac

    Funciona según lo previsto, todo está bien.

Para resumir:

  • Este problema no depende del proyecto Pod / Non-Pod.
  • Nada ha cambiado con respecto a este problema entre el flutter más reciente y estable y el último desarrollador (como se escribió)
  • Este error no se soluciona mediante la reinstalación de Xcode y no está relacionado con los certificados de llavero
  • El problema aparece solo cuando se compila solo para un dispositivo iOS físico (iPhone X en mi caso). El simulador (sin Pod) funciona bien.

Por cierto. Todo se estaba ejecutando en MacBook Pro 13 con Catalina 10.15.3 instalado y Xcode 11.3.1.

Cada ejecución tenía el indicador -v y no se encontró nada sospechoso en los registros durante la compilación s

De nuevo. Lo siento si hice algo mal al publicar esto, pero no quería duplicar este problema o sugerir OP una edición, ya que esta publicación es bastante larga.

Emin Guliev
fuente
Muchas gracias por esta respuesta. No es la solución, pero es muy útil. Obviamente, hay algo mal con Flutter. Parece que Google no sabe exactamente qué espera Apple, o Apple no está interesada en dejar que Flutter funcione sin problemas ... :)
Ferran Maylinch
Por cierto, ayer probé Flutter en otra Mac, con Mojave (la mía tiene Catalina), y obtuve el mismo error.
Ferran Maylinch
Lo más probable es que esto sea algo relacionado con CodeSign o Flutter. Deberíamos abrir un número github.com/flutter/flutter/issues
Emin Guliev
Si. Buena idea. Avísame si lo haces, o puedo hacerlo yo mismo.
Ferran Maylinch
0

Intente cambiar al canal estable a través de flutter channel stable, ejecutar flutter upgradey luego navegar al proyecto de la aplicación y ejecutarflutter run

Gioele Pannetto
fuente
Lamentablemente, recibo el mismo error. Incluso creé una nueva aplicación de aleteo después de cambiar al canal estable. Actualicé mi pregunta para mostrar que ahora estoy en el canal estable.
Ferran Maylinch
También agregué la salida de flutter run.
Ferran Maylinch
0

Solo para ejecutar la aplicación en modo de depuración, no necesita ninguna cuenta paga de Apple. 1) Abra el xCode para ese proyecto y seleccione el dispositivo y ejecútelo.

Abra el XCode de ese proyecto y verifique que la Configuración de compilación ya que la ruta FLUTTER_ROOT es correcta, si no, cree la raíz del aleteo y dé la ruta.

balaji ks
fuente
Tengo una correcta FLUTTER_ROOT. Ese no es el problema ... :(
Ferran Maylinch
0

¿Ha comprobado este enlace que puede proporcionarle la salida deseada https://github.com/flutter/flutter/issues/16507 . avíseme si funciona puede ser un problema de firma, esta publicación le dará la idea de qué está yendo mal. Gracias

sagar acharya
fuente
No tengo Podfile, así que estoy comprobando esto: stackoverflow.com/questions/51599686/… De todos modos, no sé qué Podfile necesito. Creé uno pero sigo teniendo el mismo error. Entonces, tal vez no necesito un Podfile o de todos modos el problema es otro.
Ferran Maylinch
0

Ok, teniendo un momento para crear respuesta:

Basándose en la respuesta de Subaharan Vel , pregunta: Flutter Podfile y las carpetas de Pods no creadas en el directorio ios y la respuesta sugiere que compilar para el simulador de iOS puede crear un podfile en un lugar incorrecto (debería crearse automáticamente directamente en el directorio de iOS. Por lo tanto, parece probable que su Podfile existe en algún lugar allí. Intente encontrarlo o simplemente elimine todo el directorio ios, limpie el proyecto y vuelva a crearlo . También asegúrese de que este no sea el caso Crear un Podfile para agregar pods de iOS antes de agregar cualquier complemento de Flutter nunca conecta los pods de plugin en El Podfile existente .

Buena suerte, espero que te ayude

Adam Tucholski
fuente
No hay en ninguna Podfileparte. Corro find . -name Podfiley no consigo nada. Eliminé el iosdirectorio pero ahora, ¿cómo puedo recrearlo? Si corro flutter build iosme sale el error Application not configured for iOS.
Ferran Maylinch
@Ferran Maylinch Simplemente repita todos los pasos de Surbahan Vel (primer enlace): eliminó el directorio ios y se volvió a crear después del proyecto de limpieza. Si es necesario, agregue podfile manualmente (desde stackoverflow.com/a/53492243/7183675 , elimine los pods innecesarios desde allí, también verifique el segundo comentario debajo de esta respuesta). Como último recurso, puede ayudar si agrega al menos un paquete a pubspec para obligar a Flutter a crear Podfile automáticamente. Incluso si este paquete no está realmente en uso
Adam Tucholski
0

No es una solución ideal, pero lo siguiente funcionó para mí.

  1. Actualice su dispositivo a iOS 13.4 beta.
  2. Realizar una carrera de aleteo
  3. La construcción debe ser exitosa.
  4. Lanzará "Su versión de Xcode puede ser demasiado antigua para su versión de iOS" error .
  5. La aplicación se instala en el dispositivo. Nota: La aplicación no se iniciará automáticamente cuando finalice el proceso.
  6. Haga clic en el icono de la aplicación instalada en su dispositivo para iniciar la aplicación.

Sin embargo, no podrá ver nada en la ventana de depuración ya que el proceso finaliza después de arrojar el error. No es una solución ideal, pero definitivamente es una solución alternativa hasta que obtengamos la próxima actualización de Xcode. 

Dhruva Phulsundar
fuente