Flutter: Vários comandos produzem '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework

Criado em 16 ago. 2018  ·  50Comentários  ·  Fonte: flutter/flutter

Quando eu quero depurar o aplicativo no ambiente MacOs, ele lança o seguinte erro:

Vários comandos produzem '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework
1) O destino 'Runner' tem o comando de cópia de '/ios/Flutter/Flutter.framework' para '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) Esse comando depende do comando no 'Runner' de destino: fase do script “[CP] Embed Pods Frameworks”
aviso: ignorando arquivo de saída duplicado: '//build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework' (no destino 'Runner')
nota: Usando nova nota de sistema de construção: Nota de construção de planejamento: Descrição de construção de construção

Mac 10.14 Beta
Xcode 10 beta

Como corrigi-lo? Muito obrigado

annoyance crowd platform-ios crash tool

Comentários muito úteis

Consegui consertar abrindo o projeto de espaço de trabalho Runner no Xcode 10. Em seguida, navegue para File , Workspace Settings e altere o sistema de compilação para Legacy Build System .

schermafbeelding 2018-08-16 om 14 10 10

Todos 50 comentários

Você pode fornecer etapas exatas de como reproduzir?
Como você criou o projeto?
Quais arquivos você alterou, quais alterações você fez?

Adicione a saída de flutter doctor -v .

Consegui consertar abrindo o projeto de espaço de trabalho Runner no Xcode 10. Em seguida, navegue para File , Workspace Settings e altere o sistema de compilação para Legacy Build System .

schermafbeelding 2018-08-16 om 14 10 10

muito obrigado! funciona.

Projetos afetados

Esse problema afeta todos os projetos do Flutter construídos com o Xcode 10 que dependem do CocoaPods - normalmente, isso significa aqueles que dependem de plug-ins.

Soluções Alternativas

Existem duas soluções alternativas:

  • Opção 1: use o sistema de compilação legado. Conforme observado por @ gi097 , abra ios/Runner.xcworkspace e altere o sistema de compilação para Legacy Build System .
  • Opção 2: use o novo sistema de compilação Xcode 10.

    1. Abra ios/Runner.xcworkspace

    2. Selecione o projeto Runner na barra lateral do navegador de projetos.

    3. Na visualização principal, selecione o destino Runner , em seguida, selecione a guia Build Phases .

    4. Expanda a fase Embed Frameworks e selecione Flutter.framework na lista de estruturas incorporadas.

    5. Clique em - para remover Flutter.framework da lista (certifique-se de manter App.framework ).

Causa raiz

Quando os plug-ins estão em uso, há duas ações de compilação concorrentes que copiam Flutter.framework para o diretório do aplicativo de compilação Frameworks:

  1. A fase de construção Embed Frameworks do projeto Runner
  2. A fase de construção [CP] Embed Pods Frameworks que pod install cria no projeto.

O item (1) existe para garantir que a estrutura seja copiada para o aplicativo integrado no caso de não haver plug-ins (e, portanto, nenhuma integração CocoaPods no projeto Xcode). O item (2) está lá porque o podspec do Flutter declara Flutter.framework como um vended_framework, e o CocoaPods adiciona automaticamente uma etapa de cópia para cada vended_framework no fechamento transitivo das dependências do CocoaPods.

Correção imediata

A correção imediata é encontrarmos uma maneira de ativar automaticamente a correção de compilação legada até que uma solução melhor de longo prazo esteja em vigor. Betas anteriores eram compatíveis com -useNewBuildSystem=NO ou -useModernBuildSystem=NO mas parece que foram removidos da versão GM. Parece que atualmente a maneira de fazer isso é adicionar um par de valores-chave ( <key>BuildSystemType</key><string>Original</string> ) a ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings .

Correção de longo prazo

A opção mais simples seria eliminar Flutter.framework da etapa Embed Frameworks acima e sempre contar com a instalação de pod, mesmo no caso em que não há dependências de plug-in. Precisamos atualizar a ferramenta Flutter para editar automaticamente os projetos existentes para remover Flutter.framework da etapa Embed Frameworks.

pro: código mais simples. con: torna os cocoapods uma etapa de instalação necessária para o desenvolvimento do Flutter, a primeira execução envolve um download enorme e muito lento de seu repo.

Uma opção um pouco melhor seria detectarmos automaticamente se o projeto usa plug-ins ou não e editar o projeto Xcode para verificar e remover Flutter.framework da etapa Embed Frameworks automaticamente se os plug-ins estiverem em uso ou adicioná-lo se não estiver.

pro: melhor experiência do usuário. con: código mais complexo.

De qualquer maneira, precisamos de algum mecanismo para editar automaticamente o arquivo project.pbxproj e remover a estrutura da etapa de construção de estruturas incorporadas. Apoiar a adição de volta não é muito trabalho incremental e resulta em uma experiência melhor.

/ cc @tvolkert @gspencergoog @dnfield

Não tive a intenção de inundar seu rastreador de problemas.

Eu segui esta resolução # 20685

mas agora resulta no seguinte erro

captura de tela 2018-09-18 as 10 06 38 am

Alguém tem ideia de como resolver isso?
@ gi097 @cbracken @zoechi @sidealice @hungrymonkey

@tiagosito Um patch será master . Por enquanto, veja as soluções alternativas listadas em meu comentário acima.

@tiagosito Um patch estará pousando momentaneamente no master. Por enquanto, veja as soluções alternativas listadas em meu comentário acima.

@cbracken Eu segui a opção 2 que você relatou # 20685

Mas eu tive este pequeno problema # 21989

Foi resolvido desta forma # 21989

Não estou usando o canal master, quando o patch que você mencionou for lançado, terei a mesma solução no canal beta?

@cbracken e @ gi097 por agora, muito obrigado

também tive esse problema hoje cedo depois de ir para o iOS 12, que então exigia o xcode 10, que quebrou a vibração. a opção 2 acima funcionou, mas você deve limpar o cache de compilação do pacote:

~/flutter/.pub-cache/hosted/
flutter clean
flutter packages get

ou então você estará coçando a cabeça.

A 'correção imediata' em meu comentário acima atingiu o mestre. Estou trabalhando para enviar isso para o canal dev mais rápido possível.

Para sua informação, agora está no canal dev .

Excelente!
Btw, como podemos aplicar este patch em projetos existentes? Simplesmente fazendo upgrade de vibração?

@tadejkan Você vai querer executar flutter channel dev para mudar para o canal dev e então flutter upgrade .

@cbracken uma dúvida que fica é ... usaremos o modo legado de compilação ou o patch já estará corrigido para o novo modo de compilação.

Em outras palavras, o patch está aplicando a solução da etapa 1 ou etapa 2 que você apresentou aqui ou já é uma solução definitiva e quando este patch será aplicado ao canal beta?

@tiagosito o patch que coloquei implementa a 'correção imediata' acima (opte por voltar ao sistema de compilação pré-Xcode 10), o que nos dá tempo para implementar uma correção que faça isso da maneira certa. Há uma solução alternativa rápida para isso, mas tornaria o CocoaPods um requisito para todos os aplicativos Flutter desenvolvidos no iOS (mesmo aqueles que não dependem de plug-ins). Dado o tamanho / tempo de download inicial para uma primeira execução de CocoaPods, eu realmente prefiro evitar esse caminho.

A solução adequada para isso é detectarmos quando CocoaPods / plug-ins estão em uso e contar com CocoaPods para incorporar Flutter.framework ao aplicativo de saída nesses casos e, para todos os outros casos, invocar a etapa de incorporação nós mesmos. Eu estarei trabalhando nisso a seguir.

Estou enfrentando problemas ao construir iOS que não consigo resolver há 4 dias inteiros ... estou ficando muito desamparado agora, pois tentei tantas coisas e combinações; ficando muito confuso e triste.
Este é o erro mais recente após vários erros diferentes:

duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._localAuthenticationInfo in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._keychainInfo in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasLocalAuthentication in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasKeychain in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._cachedState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._keychainExpireTime in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_CLASS_$_MDMPasscodeCache in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_METACLASS_$_MDMPasscodeCache in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasEnteredBackground in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeState._status in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeState._info in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_CLASS_$_MDMPasscodeState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_METACLASS_$_MDMPasscodeState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) ld: 13 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

ld: 13 duplicate symbols for architecture x86_64
Launching lib/main.dart on iPhone XS Max in debug mode...
Xcode build done.
Failed to build iOS app
Error output from Xcode build:
↳
** BUILD FAILED **
Xcode's output:
↳
warning: The iOS Simulator deployment target is set to 4.3, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'nanopb')
warning: The iOS Simulator deployment target is set to 6.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'GoogleUtilities')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'GTMSessionFetcher')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'Protobuf')
warning: The iOS Simulator deployment target is set to 5.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'leveldb-library')
warning: The iOS Simulator deployment target is set to 5.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'BoringSSL')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-RxLibrary')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-Core')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-C++')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-gRPCCertificates')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-ProtoRPC')
warning: The iOS Simulator deployment target is set to 6.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'cloud_firestore')
duplicate symbol __channel in:
/Users/erikiado/Code/internals/flutter/find_word/build/ios/Debug-iphonesimulator/audioplayers/libaudioplayers.a(AudioplayersPlugin.o)
/Users/erikiado/Code/internals/flutter/find_word/build/ios/Debug-iphonesimulator/firebase_admob/libfirebase_admob.a(FLTMobileAd.o)
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: Using new build systemnote: Planning buildnote: Constructing build description
Could not build the application for the simulator.
Error launching application on iPhone XS Max.
Exited (sigterm)

@erikiado e @LiveRock seus problemas (símbolos duplicados em compilações de simulador x86_64) parecem não relacionados a este. Acompanhe o progresso em # 22020.

ETA para o canal Beta?

@lukepighetti, isso agora é enviado para o canal beta (há alguns instantes). flutter upgrade distância!

Corrigido meu problema. Obrigado!

@sidealice isso também foi corrigido para você?

obrigado, a solução 2 funcionou!

Sem informações adicionais, infelizmente não temos certeza de como resolver esse problema. Portanto, relutantemente vamos fechar este bug por enquanto. Por favor, não hesite em comentar sobre o bug se você tiver mais informações para nós; vamos reabri-lo imediatamente!
Obrigado por sua contribuição.
cc @Hixie

obrigado mano! funciona.

Ainda estou tendo esse problema no canal estável do Flutter v1.0.0
A correção deveria estar estável?

[✓] Flutter (canal estável, v1.0.0, no Mac OS X 10.14.1 18B75, local en-GB)
• Flutter versão 1.0.0 em / usr / local / share / flutter
• Revisão da estrutura 5391447fae (3 semanas atrás), 2018-11-29 19:41:26 -0800
• Revisão do motor 7375a0f414
• Dart versão 2.1.0 (compilação 2.1.0-dev.9.4 f9ebf21297)

[✓] conjunto de ferramentas iOS - desenvolver para dispositivos iOS (Xcode 10.1)
• Xcode em /Applications/Xcode.app/Contents/Developer
• Xcode 10.1, Build versão 10B61
• ios-deploy 2.0.0
• CocoaPods versão 1.5.3

@JannieT verifique dev também.
Não sei se deveria estar em stable , mas se funcionar em dev a resposta provavelmente é "não".

Obrigado! Só para confirmar, a correção está no Stable v1.0.0
Corri para o problema porque estava abrindo o arquivo .xcodeproject em vez do .xcworkspace documentado ao tentar construir um arquivo.

Eu tenho o mesmo problema agora.

error: Multiple commands produce '/Users/n.gendron/Library/Developer/Xcode/DerivedData/Runner-eilfeqiwvjuvbghjmkepqybkaoja/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/n.gendron/Documents/GitLab/techno_store/ios/Flutter/Flutter.framework' to '/Users/n.gendron/Library/Developer/Xcode/DerivedData/Runner-eilfeqiwvjuvbghjmkepqybkaoja/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”
[✓] Flutter (Channel dev, v1.2.2, on Mac OS X 10.13.6 17G5019, locale fr-CA)
    • Flutter version 1.2.2 at /Library/flutter
    • Framework revision 007a415c2a (5 days ago), 2019-02-21 20:22:47 -0800
    • Engine revision f1f19bba8f
    • Dart version 2.2.0 (build 2.2.0-dev.2.1 c92d5ca288)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/n.gendron/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
    • All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.1, Build version 10B61
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[✓] Android Studio (version 3.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 33.1.1
    • Dart plugin version 182.5215
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)

[✓] VS Code
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 2.12.2

[✓] Connected device (1 available)
    • iPad de TechnoSolutions • 3e430eb4db265d124e9684f487cc542f2442ed1d • ios • iOS 10.3.3

• No issues found!

Tentei o Legacy Build System , mas tive outro problema. Também tentei remover Flutter.framework , mas o erro é o mesmo.

#import <barcode_scan/BarcodeScanPlugin.h> # 'barcode_scan/BarcodeScanPlugin.h' file not found

O plugin afetado é barcode_scan .


O que resolveu para mim foi https://github.com/apptreesoftware/flutter_barcode_reader/issues/44#issuecomment -460415307.

open -a Xcode ios

Reabrindo, já que apenas acertamos a solução alternativa neste ponto, não a correção de longo prazo para mudar para o novo sistema de compilação.

Sem informações adicionais, infelizmente não temos certeza de como resolver esse problema. Portanto, relutantemente vamos fechar este bug por enquanto. Por favor, não hesite em comentar sobre o bug se você tiver mais informações para nós; vamos reabri-lo imediatamente!
Obrigado por sua contribuição.

me ajuda a tornar a vibração mais limpa e depois a construir através do Android Studio

[✓] Flutter (Channel beta, v1.3.8, on Mac OS X 10.14.4 18E226, locale en-AU)
    • Flutter version 1.3.8 at /Users/yantsui/Installs/flutter
    • Framework revision e5b1ed7a7f (6 weeks ago), 2019-03-06 14:23:37 -0800
    • Engine revision f4951df193
    • Dart version 2.2.1 (build 2.2.1-dev.0.0 571ea80e11)

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_HOME to that location.
      You may also want to add it to your PATH environment variable.


[✓] iOS toolchain - develop for iOS devices (Xcode 10.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.2, Build version 10E125
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).

[✓] IntelliJ IDEA Ultimate Edition (version 2018.3.5)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 34.0.2
    • Dart plugin version 183.5912.23

[!] VS Code (version 1.33.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (1 available)
    • iPhone Xʀ • 39D838DF-E49E-4F0A-8F40-B73C91700F6E • ios • com.apple.CoreSimulator.SimRuntime.iOS-12-2 (simulator)

! Doctor found issues in 3 categories.
flutter clean
flutter build ios
Xcode 10 -> Product -> Clean Build Folder
Xcode 10 -> Product -> Run

Erro no Xcode:

Showing All Messages
:-1: Multiple commands produce '/Users/meow/Documents/meow/crystal/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/meow/Documents/meow/crystal/ios/Flutter/Flutter.framework' to '/Users/meow/Documents/meow/crystal/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”

Fixo:
Executou open -a Xcode ios mas parece que não funcionou.
Então, abri o projeto no Xcode usando Runner.xcworkspace e funcionou.

Esse problema ainda acontece comigo, mesmo quando abro o projeto pelo espaço de trabalho. Apenas mudar o sistema de compilação para legado parece consertar isso.

Também podemos aproveitar a opção de instalação do CocoaPods, disable_input_output_paths, que remove os arquivos de entrada e saída da fase de construção do [CP] Emded Pods Framework. Essa opção de instalação foi adicionada porque o novo sistema de construção Xcode falhou ao executar o script, mesmo quando os arquivos de entrada foram tocados. Veja https://www.ralfebert.de/ios/blog/cocoapods-clean-input-output-files.

Prós:

  • Os projetos Xcode usarão o novo sistema de compilação sem erros de compilação. O Xcode tem ameaçado retirar o suporte à compilação de legado, então o Flutter estará pronto quando isso acontecer.
  • Correção simples.
  • Nenhuma lógica adicional para decidir se deve incluir Flutter.framework na fase de construção Embed Frameworks, uma vez que sempre será incluído.
  • Não exigirá que o CocoaPods se torne uma dependência se o projeto for vanilla Flutter sem pacotes.

Contras:

  • O script Pods-Runner-frameworks.sh será executado em todas as compilações, mesmo quando Flutter.framework não muda. No meu MacBook Pro 2018, isso adiciona cerca de 1 segundo à construção.
  • Se o novo bug do sistema de compilação do Xcode for corrigido, o CocoaPods pode remover essa opção de instalação e o problema de cópias duplicadas da estrutura se reafirmará.
  • A versão mínima do CocoaPods precisará aumentar de 1.0.0 para 1.6.0 quando a opção disable_input_output_paths for introduzida.

@jmagman Awesome! Essa abordagem parece boa para mim. Se chegarmos ao ponto em que estamos vendo plugins Cocoapods que são muito caros para compilar, podemos lidar com isso como uma otimização. Isso resolve o risco imediato enquanto isso!

obrigado!!!!!

obrigado

Se você ainda estiver vendo esse erro, será necessário migrar seu projeto Xcode:

  1. Arquivo> Configurações do espaço de trabalho ...> Sistema de compilação, altere o menu suspenso para Novo sistema de compilação (padrão)
  2. Em seu Podfile, adicione a linha
install! 'cocoapods', :disable_input_output_paths => true

Veja https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile por exemplo.

  1. Na fase de construção do Runner target "[CP] Embed Pods Framework", remova todos os arquivos de saída.

@jmagman obrigado - mas isso poderia estar relacionado a # 18673? Porque depois de migrar (via flutter upgrade , que realizou essa mudança na minha máquina automaticamente no Podfile), posso construir usando flutter build ios mas ao tentar Arquivar no Xcode, corro no erro de # 18673.

@jmagman obrigado - mas isso poderia estar relacionado a # 18673? Porque depois de migrar (via flutter upgrade , que realizou essa mudança na minha máquina automaticamente no Podfile), posso construir usando flutter build ios mas ao tentar Arquivar no Xcode, corro no erro de # 18673.

@jmagman Eu encontrei a solução, na verdade este https://github.com/flutter/flutter/issues/16246#issuecomment -476329255 resolveu meu problema. Desculpe por qualquer inconveniente.

@jmagman Para aqueles de nós menos familiarizados com o XCode, você poderia explicar a etapa 3 com mais detalhes? Onde a fase de construção "[CP] Embed Pods Framework" de destino do Runner é encontrada para remover todos os arquivos de saída?

Encontrei. Clique em “Runner” na barra de navegação à esquerda, depois na guia “Build Phases”, role para baixo até “Output Files”, selecione todos eles e clique no botão subtrair para removê-los

Como posso resolver isso sem um Mac? Eu uso um pipeline de nuvem para construir para iOS, mas preciso resolver este problema ...

Se você ainda estiver vendo esse erro, será necessário migrar seu projeto Xcode:

  1. Arquivo> Configurações do espaço de trabalho ...> Sistema de compilação, altere o menu suspenso para Novo sistema de compilação (padrão)
  2. Em seu Podfile, adicione a linha
install! 'cocoapods', :disable_input_output_paths => true

Veja https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile por exemplo.

  1. Na fase de construção do Runner target "[CP] Embed Pods Framework", remova todos os arquivos de saída.

Ou você pode fazer # 1 e # 2 e, em seguida, executar pod install do diretório ios, e o CocoaPods deve remover esse arquivo de saída na fase de compilação automaticamente.

@gincos Se você não tem um Mac, pode consultar PR https://github.com/flutter/flutter/pull/33684/ para obter um exemplo de como ajustar os arquivos Xcode manualmente. Se você tiver um Mac, siga as etapas acima!

  1. Exclua o arquivo ios / Runner.xcworkspace / xcshareddata / WorkspaceSettings.xcsettings. Isso é o que está acontecendo nos bastidores com Arquivo> Configurações do espaço de trabalho ...> Sistema de compilação> Novo sistema de compilação (padrão).
    https://github.com/flutter/flutter/pull/33684/files#diff -e7ad834b29956b3cbd9225dc81f2c06a

    1. Em seu Podfile, adicione a linha

      install! 'cocoapods', :disable_input_output_paths => true

      https://github.com/flutter/flutter/pull/33684/files#diff -4e7de62cf4dff9802f06b7f3cb120939

Esperançosamente, seu pipeline de nuvem deve executar pod install e cuidar do # 3 acima para você.

Se ainda estiver vendo o erro, você pode editar ios / Runner.xcodeproj / project.pbxproj para remover o arquivo de saída manualmente. Tenha cuidado ao fazer isso! O arquivo de projeto Xcode não aceita danos.
https://github.com/flutter/flutter/pull/33684/files#diff -e9e57f7f2e911a135acd8f08e79b20e1

@jmagman Obrigado! Isso funcionou como um encanto! Sim, o provedor de nuvem executa o pod install e agora está produzindo um artefato correto para Android e iOS no beta mais recente.

Projetos afetados

Esse problema afeta todos os projetos do Flutter construídos com o Xcode 10 que dependem do CocoaPods - normalmente, isso significa aqueles que dependem de plug-ins.

Soluções Alternativas

Existem duas soluções alternativas:

  • Opção 1: use o sistema de compilação legado. Conforme observado por @ gi097 , abra ios/Runner.xcworkspace e altere o sistema de compilação para Legacy Build System .
  • Opção 2: use o novo sistema de compilação Xcode 10.

    1. Abra ios/Runner.xcworkspace
    2. Selecione o projeto Runner na barra lateral do navegador de projetos.
    3. Na visualização principal, selecione o destino Runner , em seguida, selecione a guia Build Phases .
    4. Expanda a fase Embed Frameworks e selecione Flutter.framework na lista de estruturas incorporadas.
    5. Clique em - para remover Flutter.framework da lista (certifique-se de _keep_ App.framework ).

Causa raiz

Quando os plug-ins estão em uso, há duas ações de compilação concorrentes que copiam Flutter.framework para o diretório do aplicativo de compilação Frameworks:

  1. A fase de construção Embed Frameworks do projeto Runner
  2. A fase de construção [CP] Embed Pods Frameworks que pod install cria no projeto.

O item (1) existe para garantir que a estrutura seja copiada para o aplicativo integrado no caso de não haver plug-ins (e, portanto, nenhuma integração CocoaPods no projeto Xcode). O item (2) está lá porque o podspec do Flutter declara Flutter.framework como um vended_framework, e o CocoaPods adiciona automaticamente uma etapa de cópia para cada vended_framework no fechamento transitivo das dependências do CocoaPods.

Correção imediata

A correção imediata é encontrarmos uma maneira de ativar automaticamente a correção de compilação legada até que uma solução melhor de longo prazo esteja em vigor. Betas anteriores eram compatíveis com -useNewBuildSystem=NO ou -useModernBuildSystem=NO mas parece que foram removidos da versão GM. Parece que atualmente a maneira de fazer isso é adicionar um par de valores-chave ( <key>BuildSystemType</key><string>Original</string> ) a ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings .

Correção de longo prazo

A opção mais simples seria eliminar Flutter.framework da etapa Embed Frameworks acima e sempre contar com a instalação de pod, mesmo no caso em que não há dependências de plug-in. Precisamos atualizar a ferramenta Flutter para editar automaticamente os projetos existentes para remover Flutter.framework da etapa Embed Frameworks.

pro: código mais simples. con: torna os cocoapods uma etapa de instalação necessária para o desenvolvimento do Flutter, a primeira execução envolve um download enorme e muito lento de seu repo.

Uma opção um pouco melhor seria detectarmos automaticamente se o projeto usa plug-ins ou não e editar o projeto Xcode para verificar e remover Flutter.framework da etapa Embed Frameworks automaticamente se os plug-ins estiverem em uso ou adicioná-lo se não estiver.

pro: melhor experiência do usuário. con: código mais complexo.

De qualquer maneira, precisamos de algum mecanismo para editar automaticamente o arquivo project.pbxproj e remover a estrutura da etapa de construção de estruturas incorporadas. Apoiar a adição de volta não é muito trabalho incremental e resulta em uma experiência melhor.

/ cc @tvolkert @gspencergoog @dnfield

@cbracken Muito obrigado, funciona ,, obrigado pela sua ajuda

Copiar novamente a migração real, uma vez que foi enterrada.

Se você ainda estiver vendo esse erro, será necessário migrar seu projeto Xcode:

  1. Arquivo> Configurações do espaço de trabalho ...> Sistema de compilação, altere o menu suspenso para Novo sistema de compilação (padrão)
  2. Em seu Podfile, adicione a linha
install! 'cocoapods', :disable_input_output_paths => true

Veja https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile por exemplo.

  1. Execute flutter build ios

Vou bloquear isso para que essas instruções de migração fiquem no final deste problema. Registre um novo problema se você tiver problemas adicionais após seguir estas instruções.

ATUALIZAÇÃO: se você seguir as instruções de migração em https://flutter.dev/docs/development/ios-project-migration, você pode remover install! 'cocoapods', :disable_input_output_paths => true de seu ios/Podfile . Isso pode melhorar o tempo de compilação se você estiver usando plug-ins Flutter.

Esta página foi útil?
0 / 5 - 0 avaliações