Assinatura de vibração inválida quando tentada em um dispositivo iOS

11

TL; DR

Veja a resposta abaixo: https://stackoverflow.com/a/60013390/1121497

Parece que houve um problema no iOS 13.3 porque eu acabei de instalar o 13.4 e agora o Flutter funciona no meu iPhone. :)


Estou tentando executar um novo aplicativo Flutter (o aplicativo de exemplo criado por flutter create) em um dispositivo iOS (um iPhone XS). O Xcode consegue instalá-lo, mas depois trava com esta mensagem:

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'

Se eu tentar flutter run, o aplicativo também abre e trava. E o comando continua esperando para sempre:

$ 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.)

No Xcode, configurei uma equipe (equipe pessoal) e o certificado de assinatura (certificado de desenvolvimento da Apple) parece bom porque posso instalar um projeto Hello world Swift no meu dispositivo.

Nota: não estou pagando uma conta do Apple Developer Program . Isso é absolutamente necessário para executar aplicativos Flutter em dispositivos iOS?

Segui as instruções do macOS e flutter doctordisse que tenho tudo o que preciso para o 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 você pode ver, eu usei o canal estável, para descartar problemas com o canal beta, mas geralmente trabalho no canal beta para criar flutter para a web (que funciona bem).

No simulador do iOS, o aplicativo também funciona bem.

Recentemente notei que não tenho o arquivo ios/Podfile. Eu encontrei este post falando sobre isso. Não sei se isso é importante ou não no meu caso, mas tentei adicionar manualmente esse Podfile . De qualquer forma, recebo o mesmo erro de assinatura.

Frustrado com isso, mudei para o NativeScript por enquanto.

Ferran Maylinch
fonte
Você está tentando executá-lo no dispositivo real no modo de depuração ou liberação?
Sunkuu7
@SlahLayouni Estava no modo de depuração. Eu tentei o modo Release e ele falhou com o mesmo erro.
Ferran Maylinch
Tente a versão de compilação primeiro e execute-a a partir do xcode como versão. flutter build ios --release
Sunkuu7
1) Você já experimentou o iOS Simulator 2) Você implantou / executou um "Hello World" no Swift / Xcode no seu dispositivo iPhone? O certificado pessoal deve ser bom para implantação no seu telefone.
Morrison Chang

Respostas:

8

EDIT: Isso foi corrigido no iOS 13.4, lançado em 24 de março.

Esta é uma regressão do iOS 13.3.1 não relacionada ao Flutter. Consegui reproduzir a falha sem nenhum código Flutter ou CocoaPods criando um novo projeto do Xcode, adicionando um destino de estrutura e escolhendo um perfil de provisionamento de equipe pessoal.

Consulte a edição do GitHub: https://github.com/flutter/flutter/issues/49504#issuecomment-581554697 .

O bug não deve afetar os perfis ou aplicativos de provisionamento da equipe da Conta do desenvolvedor que já estão assinados e distribuídos na App Store.

Infelizmente, a única solução alternativa pode ser evitar atualizar os dispositivos de desenvolvimento para 13.3.1 até que isso seja resolvido.

Jenn
fonte
Muito obrigado! Espero que isso seja corrigido o mais rápido possível!
Ferran Maylinch
Portanto, isso está relacionado à questão do nível do iOS? Também estou encontrando esse problema no iPhone com a versão iOS 13.3.1
Adromil Balais
Sim, esse é um problema com o iOS 13.3.1 e posterior, rejeitando as estruturas assinadas do perfil de aprovisionamento do Personal Team. Não é específico para o Flutter. Os links no comentário do GitHub referenciam outros projetos, e eu pude facilmente reproduzir com uma nova estrutura no Xcode sem incorporar o Flutter.
Jenn
Eu apenas tentei agora com o iOS 13.4 e funciona! Eu poderia executar meu aplicativo Flutter em um iPhone real do Xcode e também do IntelliJ IDEA. Eu acho que também funcionará na linha de comando.
Ferran Maylinch 29/03
4

Tanto quanto posso ver, é um problema de compatibilidade com o Flutter no iOS 13.3.1. No meu caso, meu aplicativo funciona perfeitamente bem no iPhone XR com iOS 13.3, mas falha ao iniciar em outro iPhone XR com iOS 13.3.1. Não é possível testar no simulador, pois é um aplicativo de câmera, mas funciona em dispositivos Android físicos e emuladores Android.

Novato
fonte
Você está certo. Acabei de testar com o meu iPad com 13.3. Meu telefone não funciona com 13.3.1. Ir para atualizar para o beta 2 e tentar :-)
Ken Hui
13.3.1 A versão beta 2 pública está tendo o mesmo problema.
Ken Hui
3
  1. Você concordou com o contrato de licença do xcode? se não, tente sudo xcodebuild -license.
  2. Seus pods são atualizados? se não, navegar para ios pasta no projeto vibração em seu terminal e digite pod install, em seguida,pod update

Se isso não funcionar, vá para a pasta ios no seu projeto flutter e abra Runner.xcworkspace tocando duas vezes nele. Deve ficar assim:

insira a descrição da imagem aqui

Quando o xcode abrir, clique em Runner no canto superior esquerdo.

insira a descrição da imagem aqui

Em seguida, vá para Assinatura e recursos e, no menu suspenso "Equipe", selecione um campo. Se não houver, crie uma conta.

insira a descrição da imagem aqui

Em seguida, no "Identificador de pacote", o nome do pacote do seu aplicativo deve aparecer. Adicione .app no ​​final. Por exemplo, se seu "com.example.yourapp" torná-lo "com.example.yourapp.app" e pressione enter.

Pressione o botão play no canto superior esquerdo para executar o aplicativo no dispositivo selecionado.

Yudhishthir Singh
fonte
Eu não tenho Podfile. Estou vendo este post stackoverflow.com/questions/51599686/…
Ferran Maylinch 15/01
Instale cocoapods na sua máquina e execute os comandos pod no diretório ios.
Yudhishthir Singh 16/01
Eu tenho cocoapods. Quais comandos pod devo usar?
Ferran Maylinch 16/01
instalação do pod e atualização do pod
Yudhishthir Singh
Fiz edições na minha resposta, dê uma olhada.
Yudhishthir Singh
1

Você pode seguir o passo um por um

flutter channel master
flutter upgrade
flutter clean
flutter build ios
Dev
fonte
Eu tentei isso. Também no canal beta.
Ferran Maylinch 16/01
O erro está relacionado aos recursos de assinatura, o ramo de vibração não tem nada a ver com isso.
Yudhishthir Singh
1

Este post não é uma resposta, porque também estou lutando com esse problema e escrevendo isso, pois já faz um tempo sem uma correção

Tudo o que eu quero é fornecer mais detalhes ao OP e a outros membros aqui. Então, eu tenho tudo como OP afirmou.

Isto é o que eu tentei:

  1. O Podfile não é criado (mesmo após a execução no Simulator e etc.) e é por isso que tentei incluir um de um aplicativo de exemplo de flutter do Flutter Github.

    • Diretório iOS limpo
    • Adicionado um Podfile
    • Ran pod update.
    • Correção de avisos (desde que o Pod depure e libere configurações para o Xcode)
    • Adicionado FLUTTER_ROOT nas configurações definidas pelo usuário (como estava ausente) e eu estava recebendo o erro Xcode-backend.sh (não lembro exatamente, desculpe)
    • Construído

Portanto, essas etapas produzem: esse erro no simulador. Os mesmos erros de assinatura que sem o Pod no dispositivo físico

  • Excluiu todos os certificados do Keychain Access e os restaurou via Xcode.

    Resultado: nada mudou

  • Removido Xcode, Pod e configuração relacionada a ele. Certificados removidos. Restaurou tudo após uma reinicialização (nova instalação)

    Resultado: Novamente, nem construa com o pod nem sem os mesmos erros

  • Atualizei o Flutter para o canal dev (1.14.1) e regenerei o projeto usando flutter create .

    Reran constrói. Com vagens e sem. Continua o mesmo

  • Também tentei alterar a assinatura do desenvolvedor da Apple para o desenvolvedor do iOS em todos os destinos (Pod incluído)

    Nisto eu tenho alguns erros porque eu até tentei assinar o Pods-Runner (havia uma pequena esperança). Mas no geral nada de novo.

  • Ao executar um dispositivo no iOS 13.3.1 Beta, atualizei o Target para 13.2 (máximo disponível no momento?).

    Não

  • Ativei o macOS-builds e criei um aplicativo para Mac

    Funciona como estendido, está tudo bem.

Resumindo:

  • Esse problema não depende do projeto Pod / Non-Pod.
  • Nada mudou em relação a esse problema entre o flutter mais recente e o mais recente dev (como post escrito)
  • Esse bug não foi corrigido pela reinstalação do Xcode e não está relacionado aos certificados de chaveiro
  • O problema aparece apenas ao criar apenas um dispositivo iOS físico (iPhone X no meu caso). Simulador (sem Pod) funciona bem.

Btw. Tudo estava funcionando no MacBook Pro 13 com o Catalina 10.15.3 instalado e o Xcode 11.3.1.

Cada execução estava com o sinalizador -v e nada suspeito foi encontrado nos logs durante a compilação s

Novamente. Lamento se fiz algo errado ao postar isso, mas não queria duplicar esse problema ou sugerir uma edição ao OP, pois esse post é bastante longo.

Emin Guliev
fonte
Muito obrigado por esta resposta. Não é a solução, mas é muito útil. Obviamente, há algo errado com Flutter. Parece que o Google não sabe exatamente o que a Apple espera, ou a Apple não está interessada em deixar o Flutter funcionar sem problemas ... :)
Ferran Maylinch
A propósito, ontem tentei o Flutter em outro Mac, com o Mojave (o meu tem Catalina), e recebi o mesmo erro.
Ferran Maylinch
Provavelmente isso é algo relacionado ao CodeSign ou ao próprio Flutter. Deveríamos abrir uma questão github.com/flutter/flutter/issues
Emin Guliev
Sim. Boa ideia. Deixe-me saber se você faz, ou eu posso fazer isso sozinho.
Ferran Maylinch 19/01
0

Tente mudar para o canal estável via flutter channel stable, execute flutter upgradee navegue até o projeto do aplicativo e executeflutter run

Gioele Pannetto
fonte
Infelizmente, recebo o mesmo erro. Até criei um novo aplicativo de vibração depois de mudar para o canal estável. Atualizei minha pergunta para mostrar que agora estou no canal estável.
Ferran Maylinch 29/12/19
Eu também adicionei a saída do flutter run.
Ferran Maylinch
0

Apenas para executar o aplicativo no modo de Depuração, não precisa de nenhuma conta paga pela Apple. 1) Abra o xCode para esse projeto, selecione o dispositivo e execute nele.

Abra o XCode desse projeto e verifique as Configurações de compilação, pois o caminho FLUTTER_ROOT está correto; caso contrário, crie a raiz do flutter e forneça o caminho.

balaji ks
fonte
Eu tenho um correto FLUTTER_ROOT. Esse não é o problema ... :(
Ferran Maylinch
0

Você verificou este link que pode fornecer a saída desejada https://github.com/flutter/flutter/issues/16507 . deixe-me saber se funciona pode ser um problema de assinatura, este post lhe dará a idéia do que está errado. obrigado

sagar acharya
fonte
Como não tenho Podfile, verifiquei: stackoverflow.com/questions/51599686/… De qualquer forma, não sei do que preciso o Podfile. Eu criei um, mas ainda recebo o mesmo erro. Então talvez eu não precise de um Podfile ou, de qualquer forma, o problema é outro.
Ferran Maylinch
0

Ok, tendo um momento para criar a resposta:

Baseando-se na resposta do Subaharan Vel , pergunta: pastas Flutter Podfile e Pods não criadas no diretório ios e resposta sugerindo que a criação do simulador iOS pode criar podfile em local incorreto (ele deve ser criado automaticamente diretamente no diretório iOS. Portanto, parece provável que o seu Podfile existe em algum lugar lá. Tente encontrá-lo ou apenas remover o diretório ios inteiro, limpe o projeto e recriá-lo. Certifique-se também de que esse não seja o caso. Criando um Podfile para adicionar pods do iOS antes de adicionar qualquer plug-in do Flutter o Podfile existente .

Boa sorte, espero que ajude você

Adam Tucholski
fonte
Não há Podfilelugar nenhum . Eu corro find . -name Podfilee não recebo nada. Eu removi o iosdiretório, mas agora, como posso recriá-lo? Se eu executar flutter build ios, recebo o erro Application not configured for iOS.
Ferran Maylinch 18/01
@Ferran Maylinch Apenas repita todas as etapas do Surbahan Vel (primeiro link) - ele removeu o diretório ios e foi recriado após a limpeza do projeto. Se necessário, adicione podfile manualmente (em stackoverflow.com/a/53492243/7183675 , remova pods desnecessários de lá, verifique também o segundo comentário nesta resposta). Como último recurso - pode ajudar se você adicionar pelo menos um pacote ao pubspec para forçar o Flutter a criar o Podfile automaticamente. Mesmo que este pacote não esteja realmente em uso
Adam Tucholski 18/01
0

Não é uma solução ideal, mas o seguinte funcionou para mim.

  1. Atualize seu dispositivo para o iOS 13.4 beta.
  2. Executar uma execução de vibração
  3. A compilação deve ser bem-sucedida.
  4. Ele exibirá o erro "Sua versão do Xcode pode estar muito antiga para a sua versão do iOS" .
  5. O aplicativo é instalado no dispositivo. Nota: O aplicativo não será iniciado automaticamente quando o processo terminar.
  6. Clique no ícone do aplicativo instalado no seu dispositivo para iniciar o aplicativo.

Embora você não consiga ver nada na janela de depuração, pois o processo termina após gerar o erro. Não é uma solução ideal, mas definitivamente uma solução alternativa até obtermos a próxima atualização do Xcode. 

Dhruva Phulsundar
fonte